

# -*- 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?
 Si en cambio te refieres a separar las diversas partes del juego (menú, juego singleplayer, juego multiplayer), pues yo lo hago, pero eso es otro tema. Mejor preocupate antes en lograr hacer un juego simple para empezar a entender por donde va la cosa y luego expande tu conocimiento. Siempre mejor empezar de a poco.
 Si en cambio te refieres a separar las diversas partes del juego (menú, juego singleplayer, juego multiplayer), pues yo lo hago, pero eso es otro tema. Mejor preocupate antes en lograr hacer un juego simple para empezar a entender por donde va la cosa y luego expande tu conocimiento. Siempre mejor empezar de a poco.


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
 
 

 , ya estoy corrigiendo y modularizando mejor las cosas. Si bien recomiendan tener todo en ingles, hice todo en español y comentado cada cosa para que sea mas entendible para gente recien iniciada como yo. Se que no giran los tanques
 , ya estoy corrigiendo y modularizando mejor las cosas. Si bien recomiendan tener todo en ingles, hice todo en español y comentado cada cosa para que sea mas entendible para gente recien iniciada como yo. Se que no giran los tanques   pero es porque me dedique en los detalles mas grandes que en los pequeños o faciles de implementar.
  pero es porque me dedique en los detalles mas grandes que en los pequeños o faciles de implementar. 
  
 Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado