No lo subi porque la realidad es que no tengo idea de python no me adapto a su sintaxis, etc y se que hay muchas cosas que no estan del todo bien. Lo que hice fue poner el menu en el main y en base al director elijo si voy al ranking o al juego
main.py
Espero que les sirva
main.py
Código [Seleccionar]
# -*- coding: utf-8 -*-
# Módulos
import pygame, sys
import director
import juego
import os
import ranking
from pygame.locals import *
salir = False
class Menu:
"Representa un menú con opciones para un juego"
def __init__(self, opciones):
self.opciones = opciones
self.font = pygame.font.Font('Menu/dejavu.ttf', 52)
self.seleccionado = 0
self.total = len(self.opciones)
self.mantiene_pulsado = False
def actualizar(self):
"""Altera el valor de 'self.seleccionado' con los direccionales."""
k = pygame.key.get_pressed()
if not self.mantiene_pulsado:
if k[K_UP]:
self.seleccionado -= 1
elif k[K_DOWN]:
self.seleccionado += 1
elif k[K_RETURN]:
# Invoca a la función asociada a la opción.
titulo, funcion = self.opciones[self.seleccionado]
print "Selecciona la opcion '%s'." %(titulo)
funcion()
# procura que el cursor esté entre las opciones permitidas
if self.seleccionado < 0:
self.seleccionado = 0
elif self.seleccionado > self.total - 1:
self.seleccionado = self.total - 1
# indica si el usuario mantiene pulsada alguna tecla.
self.mantiene_pulsado = k[K_UP] or k[K_DOWN] or k[K_RETURN]
def imprimir(self, screen):
"""Imprime sobre 'screen' el texto de cada opción del menú."""
total = self.total
indice = 0
altura_de_opcion = 70
x = 280
y = 180
for (titulo, funcion) in self.opciones:
if indice == self.seleccionado:
color = (200, 0, 0)
else:
color = (29, 0, 80)
imagen = self.font.render(titulo, 1, color)
posicion = (x, y + altura_de_opcion * indice)
indice += 1
screen.blit(imagen, posicion)
def main():
global salir
os.environ['SDL_VIDEO_CENTERED'] = '1'
opciones = [
("Jugar", comenzar_nuevo_juego),
("Ranking", rranking),
("Salir", salir_del_programa)
]
pygame.font.init()
screen = pygame.display.set_mode((800, 600))
fondo = pygame.image.load("Menu/Fondo.png").convert()
menu = Menu(opciones)
while not salir:
for e in pygame.event.get():
if e.type == QUIT:
salir = True
screen.blit(fondo, (0, 0))
menu.actualizar()
menu.imprimir(screen)
pygame.display.flip()
pygame.time.delay(10)
def comenzar_nuevo_juego():
dirr = director.Director()
scene1 = juego.Juego(dirr,"Juan")
dirr.change_scene(scene1)
dirr.loop()
def rranking():
dirr = director.Director()
scene2 =ranking.Ranking(dirr)
dirr.change_scene(scene2)
dirr.loop()
def salir_del_programa():
print " Gracias por utilizar este programa."
salir=True
sys.exit(1)
if __name__ == '__main__':
pygame.init()
main()
Espero que les sirva