pygame en pantalla completa

Consulte acerca de programas, técnicas, algoritmos etc.

pygame en pantalla completa

Notapor revor » Sab Feb 02, 2008 10:33 am

hola, para empezar encantado de haver encontrado una web con tanto material, mis mas sinceras felicitaciones al/los admin/s.

Aquí ba mi pregunta:
tengo una pantalla de resolución 1280x1024 y m e gustaria saber si con pygame se puede crear un screen de, por ejemplo, 800x600 y que se estirara hasta ocupar la pantalla completa.

espero haberme expresado bien

gracias por adelantado. saludos
revor
 
Mensajes: 2
Registrado: Sab Feb 02, 2008 10:27 am

Notapor endaramiz » Sab Feb 02, 2008 3:36 pm

Bienvenido al foro.

Si por estirar te refieres a poder cambiar las dimensiones de la pantalla poniendo el ratón en el borde y arrastrando, como pasa normalmente con las ventanas, la cosa es fácil:
Código: Seleccionar todo
screen = pygame.display.set_mode((800,600), pygame.RESIZABLE)
Hay otros parámetros("flags") aparte del RESIZABLE que las puedes encontrar en la domentación de pygame (o a lo mejor dentro de un tiempo en la traducción del wiki.

PD: yo con el FULLSCREEN estaba haciendo pruebas en la consola y luego no sabia como cerrarlo y tuve que ir al ordenador de mi hermano a mirar artículos :oops:

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

Notapor ominae » Sab Feb 02, 2008 9:47 pm

el problema con pygame a pantalla completa es que debes dar una posibilidad alternativa para cerrar el programa, ya que si solo asocias la salida de esta manera:

Código: Seleccionar todo
for event in pygame.event.get():
      if event.type == QUIT:
         exit()


El usuario no puede acceder a la 'X' de cerrar ventana. Por tanto se debe utilizar un método alternativo:

Código: Seleccionar todo
for event in pygame.event.get():
   if event.type == QUIT:
      exit()
   if event.type == KEYDOWN:
      if event.key == K_q:
         exit()



De esta forma se podrá salir del programa perfectamente pulsando la tecla 'q'.

Un saludo!
Jaime Forcada Balaguer
ominae
 
Mensajes: 19
Registrado: Mar Ago 22, 2006 11:17 am

Notapor revor » Dom Feb 03, 2008 10:29 am

gracias a los dos :D ahora mismo me pongo a provar esto.

saludos
revor
 
Mensajes: 2
Registrado: Sab Feb 02, 2008 10:27 am

Notapor endaramiz » Jue Feb 07, 2008 5:00 pm

ominae escribió:el problema con pygame a pantalla completa es que debes dar una posibilidad alternativa para cerrar el programa, ya que si solo asocias la salida de esta manera:
Código: Seleccionar todo
for event in pygame.event.get():
      if event.type == QUIT:
         exit()

El usuario no puede acceder a la 'X' de cerrar ventana. Por tanto se debe utilizar un método alternativo
Cierto... es mas, ni pulsando alt+F4 se cierra, como pasa con las ventanas normales (al menos en mi ubuntu).
Otra vez ya no me pilla desprevenido :D Gracias.
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Re: pygame en pantalla completa

Notapor hugoruscitti » Jue Feb 07, 2008 6:48 pm

revor escribió:tengo una pantalla de resolución 1280x1024 y m e gustaria saber si con pygame se puede crear un screen de, por ejemplo, 800x600 y que se estirara hasta ocupar la pantalla completa.


Si, se puede. Solo tienes que especificarle a la función "set_mode" que
quieres un modo de pantalla completa:

Código: Seleccionar todo
pygame.display.set_mode((800, 600), pygame.FULLSCREEN)


el funcionamiento de la función es muy simple, imagina que tienes tu
escritorio en una resolución grande, por ejemplo 1280x1024, al ejecutar
la función, la biblioteca pygame (a traves de SDL) intenta cambiar
el modo de video de tu escritorio a 800x600 y muestra la ventana sin
decoración.

Esto suele funcionar bien en cualquier sistema. Si por algún motivo
pygame no puede seleccionar esa resolución de video, intenta con otra
parecida. Luego, cuando cierras el programa pygame vuelve al modo de
video anterior.

Ten en cuenta que pygame cuenta con una función para alternar entre
'pantalla completa' y 'ventana' dentro del programa. Esta función se
llama 'pygame.display.toggle_fullscreen', y actualmente solamente
funciona bien en sistemas GNU/Linux, no en Window ni Mac (creo).

Quisiera dejar un programa de ejemplo sobre como utilizar estas
funciones. A continuación está el código de un programa que
muestra una ventana en pantalla completa. Con la tecla 'q' puedes
cerrar el programa, y con 'f' alterna entre 'pantalla completa' y
'ventana'. Pero claro, esto último solo funciona en sistemas GNU/Linux
porque utiliza la función 'toggle_fullscreen':

Código: Seleccionar todo
import pygame

salir = False
pygame.init()

# Define el modo pantalla completa como modo inicial.
flags = pygame.FULLSCREEN | pygame.DOUBLEBUF
screen = pygame.display.set_mode((800, 600), flags)

# Texto en pantalla
pygame.font.init()
font = pygame.font.Font(None, 50)
color = (255, 255, 255)

# Imprime en pantalla los mensajes de ayuda
msg = font.render("Pulse 'q' para salir.", 1, color)
screen.blit(msg, (20, 70))
msg = font.render("Pulse 'f' para alternar el modo de video.", 1, color)
screen.blit(msg, (20, 150))

# Muestra los cambios en pantalla
pygame.display.flip()

while not salir:

    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            # Permite terminar el programa
            if event.key == pygame.K_q:
                salir = True
            # Alterna entre 'pantalla completa' y 'ventana'.
            elif event.key == pygame.K_f:
                pygame.display.toggle_fullscreen()

    pygame.time.wait(10)



revor escribió:Cierto... es mas, ni pulsando alt+F4 se cierra...


Ah, muy cierto. Igualmente te comento, si te llega a ocurrir nuevamente
puedes hacer lo siguiente: En GNU/Linux cuando una aplicación gráfica
se 'congela', lo que se suele hacer es ejecutar el comando 'xkill' y
seleccionar la ventana que no se puede cerrar con el puntero del mouse. Pero
cuidado, así puedes cerrar cualquier programa (funcione o no).

Otra forma de cerrar un programa si algo falla es ir a una consola
(por ejemplo ALT+CTRL+F2) y usar los comandos 'ps -ax' y 'kill'. Hay
varios tutoriales sobre como usarlos por ahí...

De todas formas uno generalmente incluye una sentencia de
código para cerrar el programa con una tecla como comenta
ominae, tener un atajo para cerrar la aplicación incluso te
ayuda a hacer pruebas mas rápidamente.

Saludos.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina


Volver a General

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron