Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRodolfo 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)
commit08e4802f06435915162ab4711811e2caa4e49627 (patch)
tree51f6edea68b8e9b3d7001e307153b6d68a44a992
parent7e2a5b9e56fb4cf6488977960157964215edc868 (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.pngbin0 -> 5840 bytes
-rw-r--r--images/tree_02.pngbin0 -> 6162 bytes
-rw-r--r--images/tree_03.pngbin0 -> 7132 bytes
-rw-r--r--images/tree_04.pngbin0 -> 6817 bytes
-rw-r--r--main.py59
-rw-r--r--ranger.py9
-rw-r--r--tree.py75
7 files changed, 55 insertions, 88 deletions
diff --git a/images/tree_01.png b/images/tree_01.png
new file mode 100644
index 0000000..c4b8902
--- /dev/null
+++ b/images/tree_01.png
Binary files differ
diff --git a/images/tree_02.png b/images/tree_02.png
new file mode 100644
index 0000000..7c763bc
--- /dev/null
+++ b/images/tree_02.png
Binary files differ
diff --git a/images/tree_03.png b/images/tree_03.png
new file mode 100644
index 0000000..6222945
--- /dev/null
+++ b/images/tree_03.png
Binary files differ
diff --git a/images/tree_04.png b/images/tree_04.png
new file mode 100644
index 0000000..56ee628
--- /dev/null
+++ b/images/tree_04.png
Binary files differ
diff --git a/main.py b/main.py
index 701c6e5..2ce06a7 100644
--- a/main.py
+++ b/main.py
@@ -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)
diff --git a/ranger.py b/ranger.py
index 356087b..1e67e71 100644
--- a/ranger.py
+++ b/ranger.py
@@ -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())
diff --git a/tree.py b/tree.py
index acac3eb..8e5971c 100644
--- a/tree.py
+++ b/tree.py
@@ -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)