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
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
Deja un comentario Cancelar la respuesta
Δ
` ``