Videojuego Python (original) (raw)

Pues como bien dice el título hoy os voy a presentar un par de videojuegos creados por mí, uno de ellos basado en los modelos de un texto. El primero es un juego bien sencillo en el que una nave cae por la acción de la gravedad y nosotros debemos conducirla hasta una plataforma móvil, podemos contrarrestar el efecto de la gravedad pulsado la flecha de arriba (activa un propulsor) y ocurrirá lo mismo con las flechas de los lados. =). Además el juego muestra una amplia gama de información, muestra el combustible, velocidad de caída.. Espero que os guste, es una gilipollez, pero me ayuda mucho hacer este tipo de aplicaciones.
from math import pi, cos, sin ````````````````
#Escogemos dificultad
print 'Escoge dificultad:'
print 'a) Facil'
print 'b) Medio'
print 'c) Dificil'
dif = raw_input('Introduce la letra de tu opcion: ')

```````````````
#Definimos el paisaje

``````````````
altura_paisaje = 400
anchura_paisaje = 400

`````````````
window_coordinates(0, 0, anchura_paisaje, altura_paisaje)
create_filled_rectangle(0, 0, 400, 400, 'black')

````````````
#Gravedad
if dif == 'a':
g = 0.001
elif dif == 'b':
g = 0.01
elif dif == 'c':
g = 0.1

```````````
#Definimos la nave

tamanyo_nave = 10  
x = anchura_paisaje/2  
y = altura_paisaje - 100  
vy = 0  
impulso_y = 2*g  
impuslo_x = 0.001  
vx = 0  
nave = create_filled_rectangle(x, y, x+tamanyo_nave, y+tamanyo_nave, 'blue')  
`````````   
#Plataforma  
px = anchura_paisaje / 2  
py = 75  
if dif == 'a':  
 vpx = 0.05  
 anchura_plataforma = 40  
 altura_plataforma = 3  
elif dif == 'b':  
 vpx = 0.1  
 anchura_plataforma = 30  
 altura_plataforma = 3  
elif dif == 'c':  
 vpx = 1.15  
 anchura_plataforma = 25  
 altura_plataforma = 3  
````````   
plataforma = create_filled_rectangle(px, py, px+anchura_plataforma, py+altura_plataforma, 'red')  
```````   
#Tanque de combustible  
fuel = 1000  
consumo = 0.1  
create_rectangle(0,altura_paisaje, 10, altura_paisaje-100, 'black')  
if fuel >= 250:  
 lleno = create_filled_rectangle(1,altura_paisaje, 9, altura_paisaje-fuel/10, 'green')  
else:  
 lleno = create_filled_rectangle(1,altura_paisaje, 9, altura_paisaje-fuel/10, 'red')  
``````   
create_text(25, altura_paisaje-8, '0%', 10, 'W')  
create_text(30, altura_paisaje-95, '100%', 10, 'W')  
`````   
#Dial de velocidad  
create_circle(anchura_paisaje-50, altura_paisaje-50, 50, 'black')  
for i in range(0, 360, 10):  
 create_line(anchura_paisaje-50 + 40 * sin(i*pi/180), \  
 altura_paisaje-50 + 40 * cos(i*pi/180), \  
 anchura_paisaje-50 + 50 * sin(i*pi/180), \  
 altura_paisaje-50 + 50 * cos(i*pi/180))  
 if i % 30 == 0:  
 create_text(anchura_paisaje-50 + 30 * sin(i*pi/180), \  
 altura_paisaje-50 + 30 * cos(i*pi/180), str(i), 5, 'CENTER')  
````   
aguja = create_line(anchura_paisaje-50, altura_paisaje-50, \  
 anchura_paisaje-50 + 50 * sin(0*pi/180), \  
 altura_paisaje-50 + 50 * cos(0*pi/180), 'blue')  
```   
# Simulacion  
while y > 0 and y 0 and x 0:  
 vy += impulso_y  
 fuel -= consumo  
 create_line(anchura_paisaje-x+tamanyo_nave/2, altura_paisaje-y, x+tamanyo_nave/2, y)  
 elif keypressed(1) == 'Left' and fuel > 0:  
 vx -= impulso_x  
 fuel -= consumo  
 create_line(anchura_paisaje-x, altura_paisaje-y-tamanyo_nave/2, x, y-tamanyo_nave/2)  
 elif keypressed(1) == 'Right' and fuel > 0:  
 vx += impulso_x  
 fuel -= consumo  
 create_line(x, y-tamanyo_nave/2, anchura_paisaje-x, altura_paisaje-y-tamanyo_nave/2)  
 y += vy  
 px += vpx  
 if px = anchura_paisaje - anchura_plataforma:  
 vpx = -vpx  
``   
 move(nave, vx, vy)  
 move(plataforma, vpx, 0)  
 viejo_lleno = lleno  
 lleno = create_filled_rectangle(1, altura_paisaje, 9, altura_paisaje-fuel/10, 'green')  
 erase(viejo_lleno)  
 vieja_aguja = aguja  
 aguja = create_line(anchura_paisaje-50, altura_paisaje-50, \  
 anchura_paisaje-50 + 50 * sin(1000*vy*pi/180), \  
 altura_paisaje-50 + 50 * cos(1000*vy*pi/180), 'blue')  
 erase(vieja_aguja)  
`  
msg_x = anchura_paisaje / 2  
msg_y1 = altura_paisaje / 2  
msg_y2 = altura_paisaje / 3  
if y >= altura_paisaje:  
 create_text(msg_x, msg_y1, 'Perdiste', 24, 'CENTER')  
 create_text(msg_x, msg_y2, 'Rumbo a las estrellas?', 12, 'CENTER')  
elif y <= 0 and vy = anchura_paisaje - tamanyo_anve or x <= 0:  
 create_text(msg_x, msg_y1, 'Perdiste', 24, 'CENTER')  
 create_text(msg_x, msg_y2, 'Te has estrellado contra la pared', 12, 'CENTER')  
elif x == plataforma_x and y == plataforma_y:  
 create_text(msg_x, msg_y1, 'Perdiste', 24, 'CENTER')  
 create_text(msg_x, msg_y2, 'Te has estrellado contra la plataforma por debajo', 12, 'CENTER')  
else:  
 create_text(msg_x, msg_y1, 'Ganaste', 24, 'CENTER')  
 create_text(msg_x, msg_y2, 'Enhorabuena piloto!', 12, 'CENTER')  
` `` ``` ```` ````` `````` ``````` ```````` ````````` `````````` ``````````` ```````````` ````````````` `````````````` ``````````````` ````````````````

```````````` ``````````` Para obtener el juego es tan simple como copiar esto en un bloc de notas, guardarlo con la extensión ".py" y tener python instalado, luego lo ejecutas y debería salir, si no sólo os servirá para leer el código xD. El otro juego lo posteo esta noche.

Ahora el segundo juego, es una especie de Frontón electrónico, el jugador dispone de una pala en el inferior del plano y una pelota azul en la parte superior de la pantalla, la pelota baja con un movimiento diagonal, y cuando choca con las paredes la velocidad cambia de dirección, el objetivo es darle con la pala a la pelota el tiempo que seas capaz de aguantar.

#Fronton electrico

`````````
altura = 400
anchura = 400
window_coordinates(0, 0, altura, anchura)

````````
#Definimos la pala
pala_x = 175
pala_y = 0
pala_altura = 3
pala_anchura = 50
vx = 0.1
impulso_px = 0.3
pala = create_filled_rectangle(pala_x, pala_y, pala_x+pala_anchura, pala_y+pala_altura, 'red')

```````
#Definimos la pelota
pelota_x = 200
pelota_y = 350
vpx = -0.07
vpy = -0.09
impulso_y = 0.006
impulso_x = 0.006

``````
pelota = create_filled_circle(pelota_x, pelota_y, 8, 'blue')

`````
#Simulacion
while pelota_y > 0 and pelota_y = 0 and pelota_x <= 400:
pelota_y += vpy
pelota_x -= vpx
vieja_pelota = pelota
pelota = create_filled_circle(pelota_x, pelota_y, 8, 'blue')
erase(vieja_pelota)

````
if keypressed(1) == 'Left':
vx = -vx-impulso_px
elif keypressed(1) == 'Right':
vx += impulso_px

pala_x += vx vieja_pala = pala pala = create_filled_rectangle(pala_x, pala_y, pala_x+pala_anchura, pala_y+pala_altura, 'red') erase(pala) `` if pala_x == 400 or pala_x == 0: vpx = -vpx if pelota_x == 400 or pelota_x == 0: vpx = -vpx if pelota_y == 400: vpy = -vpy elif pelota_y == pala_y and pelota_x == pala_x: vpy = -vpy+impulso_y vpx += impulso_x ` if pelota_y == 0: create_text(350, 350, 'Perdiste', 24, 'CENTER') create_text(300, 300, 'Tu pelota se colo por debajo', 12, 'CENTER') ` `` ```` ````` `````` ``````` ```````` ````````` ``````````

`` ``````````` ````````````

`` `### 2 comentarios

  1. Avatar de David Cantador
    noviembre 27, 2010 a 11:13 am
    tio!!! no me entero de na XD 😛 haber si algun dia me podrias explicar un poco 😛 jajajaj
    Responder
    • Avatar de Alex

Deja un comentario Cancelar la respuesta

Δ

` ``