[Pygame] Duda en un juego de memorizacion

Agrupa todas las consultas sobre los lenguajes de programacion como C, C++, Python, Java ...

[Pygame] Duda en un juego de memorizacion

Notapor Nathaniel » Lun Jun 15, 2009 4:25 pm

Hola, estoy creando una copia de este videojuego pero en Python: http://www.publijuegos.com/flash/supercerebro.htm

Aun no he creado la funcion para que el usuario inserte los numeros memorizados, el problema lo tengo al mostrar los numeros a recordar.

Tengo 2 problemas:
1. No se muestran todos los numeros de la array, tan solo el ultimo cada vez que se le añade, lo unico que se me ocurre es que al ser tan rapido tan solo se vea esta ultima y no las demas, probad de borrar el Screen.blit(background) y lo entendereis.
2. Si pongo el time.delay a un numero bajo me va demasiado rapido, pero si le pongo un numero alto consigo la velocidad deseada pero hace que se bloquee y cueste de cerrar.

http://www.megaupload.com/?d=2MKHY4D0

Código: Seleccionar todo
#Supercerebro.py 1.0
#by Nathaniel
#Licencia GPL

#Importamos los modulos necesarios
import pygame
from pygame.locals import *
from random import randint
pygame.init()
pygame.mixer.init()

pygame.mouse.set_visible(False)

#Definimos la ventana
Anchura, Altura = 687,461
Screen = pygame.display.set_mode((Anchura,Altura))
pygame.display.set_caption("Supercerebro by Nathaniel")

#Cargamos la imagen de fondo
image_background = pygame.image.load("Supercerebro_Background.jpg")

#Funcion para cargar la fuente
def Fuente():
   Font = pygame.font.Font("dejavu.ttf",80)
   return Font
   
class Numeros:
   def __init__(self):
      self.Numeross = []
   
   def Mostrar_Numeros(self,Posicion_array): #Funcion para mostrar los numeros a memorizar en una de las cuatro pantallas
      Screen.blit(image_background,(0,0))
      random = randint(0,3)
      Screen.blit(Font.render(str(self.Numeross[Posicion_array]),True,(255,000,000)),(Posiciones[random]))

   def Nuevo_Numero(self): #Funcion para sumar un nuevo numero aleatorio entre el 0 y el 9.
      self.Numeross.append(randint(0,9))
      for x in range(0,len(self.Numeross)):
         self.Mostrar_Numeros(x)
      #Aqui funcion para que el usuario responda
   def Incorrecto(self):
      print "Incorrecto"
      exit()
   
Numeros= Numeros()
Font = Fuente()

Posiciones = [
   (142,56),
   (85,200),
   (551,37),
   (577,222)
   ]
   
Running = True

while Running:
   for event in pygame.event.get():
      if event.type == QUIT:
         Running = False
   Numeros.Nuevo_Numero()
   pygame.display.update()
   pygame.time.wait(100)
Nathaniel
 
Mensajes: 8
Registrado: Sab Feb 14, 2009 8:00 pm

Notapor endaramiz » Mar Jun 16, 2009 7:19 am

No sé muy bien, como es el juego (no me funciona el flash). Pero creo que quieres que se muestre un números detrás de otro. En tal caso, a priori, el problema está en que el tiempo de espera que estás haciendo, no afecta a la velocidad que se muestran los números.

Prueba a poner:
Código: Seleccionar todo
   def Mostrar_Numeros(self,Posicion_array): #Funcion para mostrar los numeros a memorizar en una de las cuatro pantallas
      Screen.blit(image_background,(0,0))
      random = randint(0,3)
      Screen.blit(Font.render(str(self.Numeross[Posicion_array]),True,(255,000,000)),(Posiciones[random]))
      pygame.display.update() #**
      pygame.time.wait(100) #**


Si sigue sin funcionar, ya lo miraré con más calma.

Saludos.
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Notapor Nathaniel » Mar Jun 16, 2009 1:33 pm

Claaro, muchisimas gracias endaramiz ya veo el error =)

El otro problema esta al poner el pygame.time.wait tan alto, al esperar cada vez que pasa el ciclo while hace que el script no funcione del todo bien, se bloquee, etc.
Nathaniel
 
Mensajes: 8
Registrado: Sab Feb 14, 2009 8:00 pm


Volver a Sobre lenguajes de programación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado