2 # -*- coding: utf-8 -*-
10 from hero
import avatar_hero
13 HERO_DIR
= "avatars/crono"
18 # Este es el programa principal, invocado desde más abajo
25 path_to_map
= os
.path
.join(os
.curdir
, MAP
)
26 print(("usage: python %s your_map.tmx\n\nUsing default map '%s'\n" % \
27 (os
.path
.basename(__file__
), path_to_map
)))
31 # Inicializa pygame y abre una ventana
33 pygame
.display
.set_caption("Map viewer")
36 screen
= pygame
.display
.set_mode((SCREEN_WIDTH
, SCREEN_HEIGHT
))
37 # Crea el avatar del heroe
38 hero
= create_hero(HERO_DIR
)
41 global renderer
, sprite_layers
, metadata_layer
, tile_properties
, hero_pos_x
, hero_pos_y
42 renderer
, sprite_layers
, metadata_layer
, tile_properties
, hero_pos_x
, hero_pos_y
= engine
.game
.init(screen
, path_to_map
, hero
)
43 #engine.game.loop(screen, renderer, sprite_layers, metadata_layer, tile_properties, hero, hero_pos_x, hero_pos_y)
46 clock
= pygame
.time
.Clock()
54 direction
= direction
% 4
55 direction_x
, direction_y
= [(0,-1), (1,0), (0,1), (-1,0)][direction
]
57 hero
.update(direction_x
, direction_y
, action_type
= engine
.actor
.STAND
)
59 engine
.game
.draw(screen
, renderer
, hero
, sprite_layers
)
63 for event
in pygame
.event
.get():
64 if event
.type == pygame
.QUIT
:
66 elif event
.type == pygame
.KEYDOWN
:
67 if event
.key
== pygame
.K_ESCAPE
:
83 def look(dir=FORWARD
):
84 global screen
, renderer
, sprite_layers
, metadata_layer
, tile_properties
, hero
, hero_pos_x
, hero_pos_y
, clock
87 lookdir
= (direction
+ dir) % 4
88 direction_x
, direction_y
= [(0,-1), (1,0), (0,1), (-1,0)][lookdir
]
90 # make sure the hero moves with same speed in all directions (diagonal!)
91 dir_len
= math
.hypot(direction_x
, direction_y
)
92 dir_len
= dir_len
if dir_len
else 1.0
95 step_x
= direction_x
* 4
96 step_y
= direction_y
* 4
99 for event
in pygame
.event
.get():
100 if event
.type == pygame
.QUIT
:
102 elif event
.type == pygame
.KEYDOWN
:
103 if event
.key
== pygame
.K_ESCAPE
:
106 if metadata_layer
is not None:
108 if engine
.game
.check_collision(hero_pos_x
+step_x
, hero_pos_y
+step_y
, hero
.width
, hero
.height
, \
109 metadata_layer
, tile_properties
, 'block'):
114 if metadata_layer
is not None:
116 if engine
.game
.check_collision(hero_pos_x
+step_x
, hero_pos_y
+step_y
, hero
.width
, hero
.height
, \
117 metadata_layer
, tile_properties
, 'goal'):
123 global screen
, renderer
, sprite_layers
, metadata_layer
, tile_properties
, hero
, hero_pos_x
, hero_pos_y
, clock
128 direction
= direction
% 4
129 direction_x
, direction_y
= [(0,-1), (1,0), (0,1), (-1,0)][direction
]
131 # make sure the hero moves with same speed in all directions (diagonal!)
132 dir_len
= math
.hypot(direction_x
, direction_y
)
133 dir_len
= dir_len
if dir_len
else 1.0
136 step_x
= speed
* dt
* direction_x
/ dir_len
137 step_y
= speed
* dt
* direction_y
/ dir_len
139 if metadata_layer
is not None:
141 step_x
, step_y
= engine
.game
.check_movement(hero_pos_x
, hero_pos_y
, step_x
, step_y
, \
142 hero
.width
, hero
.height
, metadata_layer
, tile_properties
)
148 hero
.rect
.midbottom
= (hero_pos_x
, hero_pos_y
)
150 hero
.update(step_x
, step_y
, action_type
= engine
.actor
.WALK
)
152 engine
.game
.draw(screen
, renderer
, hero
, sprite_layers
)
153 pygame
.display
.flip()
157 if metadata_layer
is not None:
159 if engine
.game
.check_collision(hero_pos_x
, hero_pos_y
, hero
.width
, hero
.height
, \
160 metadata_layer
, tile_properties
, 'goal'):
161 print "YAY!!! GOAL!!!"
170 for event
in pygame
.event
.get():
171 if event
.type == pygame
.QUIT
:
173 elif event
.type == pygame
.KEYDOWN
:
174 if event
.key
== pygame
.K_ESCAPE
:
177 def create_hero(directory
):
179 Creates the hero sprite.
181 hero
= avatar_hero(directory
)
182 #hero = engine.vehicle.vehicle("avatars/vehicles", "car.png")