diff options
author | Rodolfo D. Arce S <rodolfo.arce.s@gmail.com> | 2011-05-20 19:36:45 (GMT) |
---|---|---|
committer | Rodolfo D. Arce S <rodolfo.arce.s@gmail.com> | 2011-05-20 19:36:45 (GMT) |
commit | 08e4802f06435915162ab4711811e2caa4e49627 (patch) | |
tree | 51f6edea68b8e9b3d7001e307153b6d68a44a992 | |
parent | 7e2a5b9e56fb4cf6488977960157964215edc868 (diff) |
Added more images for trees, modified time tracking, ranger able to plant a tree in a time laps
-rw-r--r-- | images/tree_01.png | bin | 0 -> 5840 bytes | |||
-rw-r--r-- | images/tree_02.png | bin | 0 -> 6162 bytes | |||
-rw-r--r-- | images/tree_03.png | bin | 0 -> 7132 bytes | |||
-rw-r--r-- | images/tree_04.png | bin | 0 -> 6817 bytes | |||
-rw-r--r-- | main.py | 59 | ||||
-rw-r--r-- | ranger.py | 9 | ||||
-rw-r--r-- | tree.py | 75 |
7 files changed, 55 insertions, 88 deletions
diff --git a/images/tree_01.png b/images/tree_01.png Binary files differnew file mode 100644 index 0000000..c4b8902 --- /dev/null +++ b/images/tree_01.png diff --git a/images/tree_02.png b/images/tree_02.png Binary files differnew file mode 100644 index 0000000..7c763bc --- /dev/null +++ b/images/tree_02.png diff --git a/images/tree_03.png b/images/tree_03.png Binary files differnew file mode 100644 index 0000000..6222945 --- /dev/null +++ b/images/tree_03.png diff --git a/images/tree_04.png b/images/tree_04.png Binary files differnew file mode 100644 index 0000000..56ee628 --- /dev/null +++ b/images/tree_04.png @@ -1,4 +1,8 @@ import pygame +import time +import os +import sys + from pygame import K_ESCAPE from pygame.locals import * @@ -6,6 +10,8 @@ from random import randint from tree import Tree from ranger import Ranger +pygame.init() + global window_h, window_w window_h = 640 window_w = 480 @@ -16,26 +22,35 @@ screen = pygame.display.set_mode( (window_h, window_w) ) pygame.display.set_caption("Ranger") # Tree -tree_height = tree_width = 40 -tree_radius = 15 +plant_time = 100 trees = [] -clock = pygame.time.Clock() + +start_time = time.time() +fps = 30 +frame_time = 1.0/fps # Ranger -unit = 1.0 -ranger_speed = 2 -ranger = Ranger(window_h, window_w, unit, ranger_speed) +unit = 1 +ranger_speed = 4 +ranger = Ranger(window_h, window_w, ranger_speed) # Draw background screen.fill(bg_color) # Draw everything on top of that -number_trees = 160 +number_trees = 10 while number_trees != 0: - trees.append(Tree(screen, \ - (randint(0,window_h), randint(0,window_w)) , randint(10,20) ) ) - number_trees -=1 + trees.append(Tree((randint(0,window_h), randint(0,window_w))) ) + number_trees -= 1 + +score = 0 while True: + # Time tracking + current_time = time.time() + if current_time - start_time <= frame_time: + continue + start_time = current_time + for event in pygame.event.get(): if event.type == pygame.QUIT: exit() @@ -44,18 +59,30 @@ while True: keyboard = pygame.key.get_pressed() if keyboard[K_ESCAPE]: exit() - - screen.fill(bg_color) + if keyboard[K_p]: + plant_time += 1 + if plant_time > 200: + trees.append(Tree( ranger.position ) ) + plant_time = 0 + # Update ranger position based on events ranger.update() - ranger.draw(screen) + # Draw background + screen.fill(bg_color) + + # Score text + score_text = "Score: " + str(score) + " Next Plant: " + str(plant_time) + font = pygame.font.Font(None, 36) + text = font.render( score_text , 1, (0, 0, 0, 0)) + screen.blit(text, (0, 0)) #for arbol in trees: # trees.remove(arbol) - #for arbol in trees: - # arbol.draw() + ranger.draw(screen) + + for arbol in trees: + arbol.draw(screen) pygame.display.update() - #clock.tick(60) @@ -1,12 +1,11 @@ import pygame class Ranger: - def __init__(self, screen_w, screen_h, unit, ranger_speed): - self.unit = unit + def __init__(self, screen_w, screen_h, ranger_speed): self.speed = ranger_speed self.image = pygame.image.load("images/ranger_hat.png") image_rect = self.image.get_rect() - size_reduction = 15*unit + size_reduction = 5 self.collision_rect = pygame.Rect(image_rect.left + size_reduction, \ image_rect.top + size_reduction, \ image_rect.width - size_reduction, \ @@ -43,8 +42,8 @@ class Ranger: def update(self): image_center = self.image.get_width()/2 # Move the character around the screen - self.position = ((self.position[0] + self.direction_x * self.speed * self.unit + image_center)%self.screen_w - image_center), \ - ((self.position[1] + self.direction_y * self.speed * self.unit + image_center)%self.screen_h - image_center) + self.position = ((self.position[0] + self.direction_x * self.speed + image_center)%self.screen_w - image_center), \ + ((self.position[1] + self.direction_y * self.speed + image_center)%self.screen_h - image_center) def collides_with(self, other): return self.get_absolute_rect().colliderect(other.get_absolute_rect()) @@ -1,72 +1,13 @@ import pygame from random import randint +tree_images_number = 3 +tree_images = ["images/tree_%02d.png" % tree_images_number for tree_images_number in xrange(1, tree_images_number + 1) ] + class Tree: - def __init__(self, surface, position, tree_size): + def __init__(self, position): self.position = position - self.rect_height = tree_size - self.rect_width = tree_size - self.circle_w1 = randint (8,10) - self.circle_w2 = randint (8,10) - self.size = tree_size - self.circle1 = self.size * randint (1,2) - self.circle2 = self.size * randint (1,2) - self.surface = surface - self.color_circle = (randint(0,3), randint(100,200), randint(0,3)) - self.color_rect = (10, (self.color_circle[1] + 20), 10) - - def draw(self): - pygame.draw.circle(self.surface, self.color_circle, \ - ((self.position[0] - self.rect_height/2), \ - (self.position[1] - self.rect_width/2)), \ - self.circle1, \ - self.circle_w2) - - pygame.draw.circle(self.surface, self.color_circle, \ - ((self.position[0] + self.rect_height/2), \ - (self.position[1] + self.rect_width/2)), \ - self.circle1, \ - self.circle_w2) - - pygame.draw.circle(self.surface, self.color_circle, \ - ((self.position[0]), \ - (self.position[1] - self.rect_width/2)), \ - self.circle2, \ - self.circle_w1) - - pygame.draw.circle(self.surface, self.color_circle, \ - ((self.position[0]), \ - (self.position[1] + self.rect_width/2)), \ - self.circle1, \ - self.circle_w2) - - pygame.draw.circle(self.surface, self.color_circle, \ - ((self.position[0] + self.rect_height/2), \ - (self.position[1])), \ - self.circle1, \ - self.circle_w2) - - pygame.draw.circle(self.surface, self.color_circle, \ - ((self.position[0] - self.rect_height/2), \ - (self.position[1])), \ - self.circle2, \ - self.circle_w1) - - pygame.draw.circle(self.surface, self.color_circle, \ - ((self.position[0] + self.rect_height/2), \ - (self.position[1]) - self.rect_width/2), \ - self.circle1, \ - self.circle_w2) - - pygame.draw.circle(self.surface, self.color_circle, \ - ((self.position[0] - self.rect_height/2), \ - (self.position[1]) + self.rect_width/2), \ - self.circle2, \ - self.circle_w1) - - pygame.draw.rect( self.surface, self.color_rect, \ - ( (self.position[0]), \ - (self.position[1]), \ - self.size, \ - self.size), \ - 0) + self.image = pygame.image.load(tree_images[randint(0, tree_images_number - 1)]) + + def draw(self, on_surface): + on_surface.blit(self.image, self.position) |