
estaba desarrollado un juego, poco original digo yo, pero divertido. El caso es que queria comenzar hacindo los menus, pero en lugar de hacerlos como lo explica hugo en su articulo de menus que esta en la wiki queria hacerlo que fueran como botones presionables con el puntero del mouse!.
la cosa es que me puse a hacer una clase para los menus, lo probe, pero no funcionan como deberia
 . por el momento al tener el mouse encima deberia de cambiarle el color a las letras (uno muy feo, pero luego le cambio el color).
. por el momento al tener el mouse encima deberia de cambiarle el color a las letras (uno muy feo, pero luego le cambio el color).el codigo del framework:
- Código: Seleccionar todo
- #*******************************************************************************
 # framework.py: marco de trabajo para el juego ClickMania.
 # contiene metodos para menus, escenas, tiempo.
 #*******************************************************************************
 import pygame
 from pygame.locals import *
 import os
 import pytweener
 def centerxsurf(rect):
 sizexsurf = rect.w
 posx = pygame.display.get_surface().get_size()[0] / 2 - sizexsurf / 2
 return posx
 def putysurf(rect, porcent):
 ycenter = rect.h / 2
 screenysize = pygame.display.get_surface().get_size()[1]
 porcent = int(porcent)
 ypos = porcent * screenysize / 100
 return ypos + ycenter
 def putxsurf(rect, porcent):
 xcenter = rect.w / 2
 screenxsize = pygame.display.get_surface().get_size()[0]
 porcent = int(porcent)
 xpos = porcent * screenxsize / 100
 return xpos - xcenter
 class scenes:
 def __init__(self, records = ""):
 # colores r g b
 self.red = (255, 0, 0)
 self.green = (0, 255, 0)
 self.blue = (0, 0, 255)
 self.white = (255, 255, 255)
 self.black = (0, 0, 0)
 self.scene = 0
 self.background = self.blue
 #cargamos las tipografias.
 pygame.font.init()
 self.head = pygame.font.Font("res/fonts/vtks.ttf", 90)
 self.menu = pygame.font.Font("res/fonts/Junkyard.ttf", 25)
 self.other = pygame.font.Font("res/fonts/RadisSans-medium.ttf", 19)
 def menus(self):
 """ Dibuja un menu segun la escena idicada por Scene.
 """
 # primero dibujamos el menu principal
 if self.scene == 0:
 # limpiamos la pantalla.
 pygame.display.get_surface().fill(self.background)
 # preparamos los "carteles" que apareceran en el menu.
 nombre_juego = self.head.render("ClickMania", True, self.white)
 menu_jugar = self.menu.render("Jugar partida", True, self.white)
 menu_halloffame = self.menu.render("Salon de la fama", True, self.white)
 menu_opciones = self.menu.render("Opciones", True, self.white)
 menu_salir = self.menu.render("Salir del juego", True, self.white)
 # obtenemos los rects de los carteles.
 rect_juego = nombre_juego.get_rect()
 rect_jugar = menu_jugar.get_rect()
 rect_halloffame = menu_halloffame.get_rect()
 rect_opciones = menu_opciones.get_rect()
 rect_salir = menu_salir.get_rect()
 # calculamos las posiciones de cada cartel en la pantalla
 nombre_juego_pos = (centerxsurf(rect_juego), putysurf(rect_juego, 20))
 menu_jugar_pos = centerxsurf(rect_jugar), putysurf(rect_jugar, 40)
 menu_halloffame_pos = centerxsurf(rect_halloffame), putysurf(rect_halloffame, 45)
 menu_opciones_pos = centerxsurf(rect_opciones), putysurf(rect_opciones, 50)
 menu_salir_pos = centerxsurf(rect_salir), putysurf(rect_salir, 55)
 # mostramos en la pantalla.
 #--
 blitstack = []
 lastblit = None
 #--
 screen = pygame.display.get_surface()
 #--
 if rect_jugar.collidepoint(pygame.mouse.get_pos()):
 menu_jugar = self.menu.render("Jugar partida", True, self.red, self.white)
 if rect_halloffame.collidepoint(pygame.mouse.get_pos()):
 menu_halloffame = self.menu.render("Salon de la fama", True, self.red, self.white)
 if rect_opciones.collidepoint(pygame.mouse.get_pos()):
 menu_opciones = self.menu.render("Opciones", True, self.red, self.white)
 if rect_salir.collidepoint(pygame.mouse.get_pos()):
 menu_salir = self.menu.render("Salir del juego", True, self.red, self.white)
 #---
 screen.blit(nombre_juego, nombre_juego_pos)
 screen.blit(menu_jugar, menu_jugar_pos)
 screen.blit(menu_halloffame, menu_halloffame_pos)
 screen.blit(menu_opciones, menu_opciones_pos)
 screen.blit(menu_salir, menu_salir_pos)
 def main():
 import pygame
 pygame.init()
 pygame.display.set_mode((800, 600))
 miescena = scenes()
 tiempo = pygame.time.Clock()
 salir = False
 while not salir:
 tiempo.tick_busy_loop(60)
 for evento in pygame.event.get():
 if evento.type == pygame.QUIT:
 salir = True
 miescena.menus()
 pygame.display.flip()
 if __name__ == "__main__": main()
aqui todo el trabajo, para que sea 100% corrible: Clickmania! (src).
Otra duda que me surge es el flujo de ejecucion, en otras palabras, cuando tal boton es seleccionado; por ejemplo, opciones, como podriamos manejar la visualizacion de tal escenario. Ya que en pygame los escenario como tal no existen!
(me dare una vuelta por el codigo del juego de Ceferino, creado por Losersjuegos, para ver que aprendo! :p)







 , no me habia pasado eso por la cabeza, eso me pasa por programar a altas horas de la noche xD, el metodo
, no me habia pasado eso por la cabeza, eso me pasa por programar a altas horas de la noche xD, el metodo 