# -*- coding: utf-8 -*-
import sys
import pygame #Módulo gráfico
def terminate():
pygame.quit() #Cierra el módulo gráfico
sys.exit() #Cierra el intérprete de python
def check_input():
#analiza la input por teclaro del usuario
for event in pygame.event.get():
if event.type == QUIT:
terminate()
class Personaje(object):
"""Clase para los personajes del juego"""
def __init__(self):
#define la superficie, rectangulo y otras variables importante del personaje
pass
def update(self):
#Observa el entorno, interactua con otros personajes y recalcula posición e imagen
pass
def draw(self, ventana):
#Dibuja al personaje sobre la superficie "ventana"
pass
def main():
VENTANA = pygame.display.set_mode((320, 240))
p1 = Personaje()
p2 = Personaje()
p3 = Personaje()
while True:
check_input()
p1.update()
p2.update()
p3.update()
p1.draw(VENTANA)
p2.draw(VENTANA)
p3.draw(VENTANA)
VENTANA.blit()
if __name__ == '__main__':
main()
#...Codigo anterior
def main():
VENTANA = pygame.display.set_mode((320, 240))
p1 = Personaje()
p2 = Personaje()
p3 = Personaje()
p4 = Personaje()
p5 = Personaje()
#... Y así hasta p50
p50 = Personaje()
personajes = [p1, p2, p3, p4, p5, p50] #Solo puse estos seis para que el codigo funcione rirectamente sin modificar
for p in personajes:
p.update()
for p in personajes:
p.draw()
VENTANA.blit()
if __name__ == '__main__':
main()
Me conviene separar el juego por estados?
Jonito11 escribió:La mejor forma de detectar las colisiones, es que el movimiento del tanque sea cada 32px , largo y ancho del tile.
class Escenario:
#... codigo
def puede_pisar_en(self, x, y):
"Informa si se puede pisar sobre un bloque del escenario."
fila = (y) / 32
columna = x / 32
try:
celda = int(self.grilla[fila][columna])
except:
# si no puede obtener la celda prohibe pisar ahí
return False
if celda in [0, 1, 2]:
return True
return False
import pygame
from pygame.locals import K_LEFT, K_RIGHT, K_UP, K_DOWN, QUIT, KEYDOWN
class Personaje:
#... codigo
def update(self):
"Realiza movimientos de la cámara en base a la pulsación de teclas."
teclas_pulsadas = pygame.key.get_pressed()
dx = 0
dy = 0
if teclas_pulsadas[K_UP]:
dy -= 2
elif teclas_pulsadas[K_DOWN]:
dy = 2
if teclas_pulsadas[K_LEFT]:
dx = -2
elif teclas_pulsadas[K_RIGHT]:
dx = 2
if not self.escenario.puede_pisar_en(self.rect.x + dx, self.rect.y):
dx = 0
if not self.escenario.puede_pisar_en(self.rect.x, self.rect.y + dy):
dy = 0
self.rect.move_ip(dx, dy)
class Personaje:
#... codigo
def update(self, lista):
#... codigo
self.rect.move_ip(dx, dy)
for personaje in lista:
if self.rect.colliderect(personaje):
self.rect.move_ip(-dx, -dy)
break
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado