- Código: Seleccionar todo
- # -*- coding: iso-8859-1 -*-
 import pygame
 import sys
 # Hasta aquí lo que hemos hecho ha sido importar algunas funciones y
 # poner una codificación de caracteres compatible con el castellano.
 # Paisaje
 altura_paisaje = 400
 anchura_paisaje = 400
 screen = pygame.display.set_mode((anchura_paisaje, altura_paisaje))
 pygame.display.set_caption('Galactic')
 # Gravedad
 g = 0.1
 # Tanque de combustible
 fuel = 10
 consumo = 1
 tanque_viejo = pygame.Rect(10, 10, 10, 100)
 tanque_viejo_color = (0, 255, 0)
 lleno = pygame.Rect(10, 10, 10, 100 - fuel * 10)
 lleno_color = (0, 0, 0)
 # Nave
 tamanyo_nave = 15
 x = anchura_paisaje / 2
 y = altura_paisaje - 350
 vy = 0
 vx = 0
 nave = pygame.Rect(x, y, tamanyo_nave, tamanyo_nave)
 nave_color = (0, 255, 0)
 # Plataforma
 px = anchura_paisaje / 2
 py = 395
 vpx = 2
 anchura_plataforma = 60
 altura_plataforma = 5
 plataforma = pygame.Rect(px, py, anchura_plataforma, altura_plataforma)
 plataforma_color = (255, 0, 0)
 # Vamos a darle valor a una variable que nos servira más adelante.
 esperar = True
 # Simulación
 while True:
 
 # Con esto vamos a controlar los eventos del juego.
 for event in pygame.event.get():
 
 if event.type == pygame.QUIT:
 sys.exit(0)
 
 elif event.type == pygame.KEYDOWN:
 if event.key == pygame.K_UP and fuel > 0:
 vy = -5
 fuel -= consumo
 if event.key == pygame.K_DOWN and vy < 0:
 vy = +2
 if event.key == pygame.K_LEFT and fuel > 0:
 vx = -5
 fuel -= consumo
 if event.key == pygame.K_RIGHT and fuel > 0:
 vx = +5
 fuel -= consumo
 if event.key == pygame.K_ESCAPE or event.key == pygame.K_q or event.key == pygame.K_s:
 sys.exit(0)
 
 # Ahora pintemos el fondo de la pantalla
 background_color = (255, 255, 255)
 screen.fill(background_color)
 
 # Ahora rellenaremos la nave, la plataforma y otros objetos
 # de un color.
 screen.fill(nave_color, nave)
 screen.fill(plataforma_color, plataforma)
 screen.fill(tanque_viejo_color, tanque_viejo)
 screen.fill(lleno_color, lleno)
 
 # Creemos la sensación de movimiento de la nave y la plataforma.
 vy += g
 if vx < 0:
 vx += 0.1
 if vx > 0:
 vx -= 0.1
 px += vpx
 if px <= 0 or px >= anchura_paisaje - anchura_plataforma:
 vpx = -vpx
 nave.move_ip(vx, vy)
 plataforma.move_ip(vpx, 0)
 
 # Ahora vamos a hacer que cuando la partida acabe, la plataforma se
 # pare
 if fuel == 0:
 vpx = 0
 
 # Si la nave llega a algún límite detiene el movimiento.
 if nave.bottom > altura_paisaje:
 nave.bottom = altura_paisaje
 vy = 0
 
 if nave.top < 0:
 nave.top = 0
 vy = 0
 
 # Si la nave sale por un lado, emtra por el otro.
 if nave.left < 0:
 nave.left = 384
 
 if nave.right > 400:
 nave.right = 16
 
 # Redibujaremos el combustible restante.
 if fuel * 10 <= 50 and fuel * 10 > 30:
 tanque_viejo_color = (255, 165, 0)
 if fuel * 10 <= 30:
 tanque_viejo_color = (255, 0, 0)
 lleno = pygame.Rect(10, 10, 10, 100 - fuel * 10)
 screen.fill(lleno_color, lleno)
 
 # Muestra los cambios en pantalla y espera.
 pygame.display.flip()
 pygame.time.delay(10)
 
 # Haremos que el juego espere un tiempo antes de empezar.
 if esperar:
 pygame.time.delay(2000)
 esperar = False
Mi duda, es como gestionar las colisiones, de tal manera que cuando la parte de abajo de la nave, colisione con la parte de arriba de la plataforma, hacer que nave.bottom valga 5. He intentado hacerlo con la guía de ejemplos sobre pygamme, pero no soy capaz. Muchas gracias.
P.D.: Aún no se usar las clases, no se si necesitare saber usarlas para esto. Muchas gracias a todos.




 
 
