Mejoras a la gestiĆ³n de los objetos de pantalla
[tajundrathegame.git] / taju.py
blob0cd4469045dee01df407e93c2bd520381a683167
1 #!/usr/bin/python
2 # encoding: UTF-8
4 import pygame
5 import random
6 import math
7 from stage import Stage
8 from qwesprites import *
10 pygame.init()
12 size = width, height = 640, 480
13 speed = [4,4]
15 screen = pygame.display.set_mode(size
16 , pygame.DOUBLEBUF # | pygame.FULLSCREEN
20 stage_file="stage_00_game_menu.st"
21 ######################################################
22 STAGE=Stage(stage_file)
26 ######################################################
28 spriteTajundra = STAGE.Tajundra
30 ######################################################
36 reloj_juego=pygame.time.Clock()
37 Salir=False
38 keys={}
39 time_o=pygame.time.get_ticks()
41 for ch in STAGE.simbolos:
42 SpriteClass=None
43 if ch=='@': SpriteClass=Tajundra
44 if ch=='|': SpriteClass=LanzaBolas
45 if ch=='$': SpriteClass=Dragon
47 if SpriteClass:
48 for n in range(0,len(STAGE.simbolos[ch])):
49 SpriteClass(STAGE)
51 STAGE.draw(screen)
52 pygame.display.update()
54 #STAGE.sprites+=[spriteTajundra, t2,]
55 cpu_friendly=True
56 frame=0
57 accum_idle=0
58 cpu=0
59 benchmark=0
60 txtEndGame=None
61 fuerza=0
62 while not Salir:
63 frame+=1
64 if frame>60:
65 frame=0
66 cpu=100-accum_idle/10.0
67 print len(STAGE.sprites), "%.2f%%" % cpu
68 accum_idle=0
69 if benchmark:
70 if cpu<80:
71 if frame > cpu-20 or frame==0 or frame==30:
72 x,y,w,h=spriteTajundra.rect
73 pos=x,y
74 vel=300
75 if spriteTajundra.dx<0: vel=-300
76 vely=-120
77 if keys.has_key(pygame.K_DOWN): vely=200
78 if keys.has_key(pygame.K_UP): vely=-200
79 Hacha(STAGE,pos,spriteTajundra.dx+vel,vely)
80 elif frame==0:
81 del STAGE.sprites[-1:]
83 for event in pygame.event.get():
84 if event.type == pygame.QUIT: Salir=True
85 if event.type == pygame.KEYDOWN:
86 if event.key==pygame.K_ESCAPE:
87 Salir=True
88 else:
89 keys[event.key]=True
91 if event.type == pygame.KEYUP:
92 if keys.has_key(event.key):
93 del keys[event.key]
94 if event.key==pygame.K_SPACE:
95 sLife=spriteTajundra.Life
96 sMLife=spriteTajundra.MaxLife
97 if (fuerza>4000): fuerza=4000
98 fuerza*=sLife*sLife/(sMLife*sMLife)
99 x,y,w,h=spriteTajundra.rect
100 pos=x,y
101 vel=210+fuerza/100.0
102 vely=-vel/2
103 if keys.has_key(pygame.K_DOWN): vely=vel/2
104 if keys.has_key(pygame.K_UP): vely=-vel
105 if spriteTajundra.dx<0: vel=-vel
106 p=Hacha(STAGE,pos,spriteTajundra.dx+vel,vely)
107 p.Life+=fuerza/100.0-.5
108 fuerza=0
110 if spriteTajundra.alive:
111 if keys.has_key(pygame.K_s):
112 spriteTajundra.alive=False
113 spriteTajundra.LevelFinished=True
115 if spriteTajundra.in_ground:
117 if keys.has_key(pygame.K_LEFT): spriteTajundra.dx-=15
118 if keys.has_key(pygame.K_RIGHT): spriteTajundra.dx+=15
119 if keys.has_key(pygame.K_UP): spriteTajundra.dy=-140
120 if keys.has_key(pygame.K_DOWN): spriteTajundra.dy+=5
122 else:
124 if spriteTajundra.dy<0:
125 if not keys.has_key(pygame.K_UP): spriteTajundra.dy/=1.02
126 if keys.has_key(pygame.K_LEFT): spriteTajundra.dx-=0.5
127 if keys.has_key(pygame.K_RIGHT): spriteTajundra.dx+=0.5
128 else:
129 if keys.has_key(pygame.K_UP): spriteTajundra.dy/=1.02
130 if keys.has_key(pygame.K_DOWN): spriteTajundra.dy+=2
132 else:
133 if not txtEndGame:
134 if spriteTajundra.LevelFinished:
135 txtEndGame=qweTextBIG(STAGE,320,240,"Level Completed")
136 else:
137 txtEndGame=qweTextBIG(STAGE,320,240,"Game Over")
138 qweTextBIG(STAGE,320,300,"press return")
140 if keys.has_key(pygame.K_RETURN):
141 if spriteTajundra.LevelFinished:
142 stage_file=STAGE.NextStage
144 for sprite in STAGE.sprites:
145 del sprite
147 del STAGE
148 txtEndGame=None
149 STAGE=Stage(stage_file)
150 spriteTajundra = STAGE.Tajundra
151 for ch in STAGE.simbolos:
152 SpriteClass=None
153 if ch=='@': SpriteClass=Tajundra
154 if ch=='|': SpriteClass=LanzaBolas
155 if ch=='$': SpriteClass=Dragon
157 if SpriteClass:
158 for n in range(0,len(STAGE.simbolos[ch])):
159 SpriteClass(STAGE)
160 STAGE.draw(screen)
161 pygame.display.update()
164 # Render
166 if cpu_friendly:
167 time_aux=pygame.time.get_ticks()
168 msec=time_aux-time_o;
169 idle=1000/60-msec
170 if idle<1: idle=1
171 pygame.time.wait(idle)
172 accum_idle+=pygame.time.get_ticks()-time_aux
173 time_aux=pygame.time.get_ticks()
174 msec=time_aux-time_o;
175 time_o=time_aux
176 else:
177 msec=reloj_juego.tick(60)
179 if keys.has_key(pygame.K_SPACE): fuerza+=msec
181 STAGE.fulldraw(screen,msec)