Created
March 9, 2009 19:34
-
-
Save Serabe/76433 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#coding:utf-8 | |
#este programa emula un videojuego de coches en el que el usuario intenta llegar a la meta en menor tiempo posible | |
#Para observar cómo funciona basta con ver los dos primeros niveles, pues los otros son copiados de los anteriores | |
from random import random | |
from time import time | |
#Esta función se encargará de obtener aleatoriamente una posición para los coches enemigos | |
def azarf(x): | |
a=random() | |
if a<=(1/3.0): | |
azar=1 | |
elif (1/3.0)<a<(2/3.0): | |
azar=0 | |
else: | |
azar=-1 | |
return azar | |
puntuacion=0 | |
puntuacion1=0 | |
puntuacion2=0 | |
puntuacion3=0 | |
puntuacion4=0 | |
puntuacion5=0 | |
puntuacion6=0 | |
puntuacion7=0 | |
tiempo1=0 | |
tiempo2=0 | |
tiempo3=0 | |
tiempo4=0 | |
tiempo5=0 | |
tiempo6=0 | |
tiempo7=0 | |
record=0 | |
opcion="s" | |
print "Para mover el coche..." | |
print "..a la izquierda pulsa a +<enter>" | |
print "..a la derecha pulsa d +<enter>" | |
print "..recto pulsa <enter>" | |
pase=int(raw_input("¿que nivel quieres? del 1 al 7...")) | |
pase=pase-1 | |
#El juego te permite volver a empezar en el caso de que pierdas o ganes | |
while opcion=="s": | |
if pase==0: | |
print "Pantalla nº1" | |
#Se le dan valores iniciales a la nueva pantalla | |
dist=10 | |
dist1=dist | |
dist2=dist | |
dist3=dist | |
metros=5 | |
azar=azarf(1) | |
b=random() | |
if b<=(1/5.0): | |
azar2=1 | |
elif (1/5.0)<b<(2/5.0): | |
azar2=2 | |
elif (2/5.0)<b<(3/5.0): | |
azar2=3 | |
elif (3/5.0)<b<(4/5.0): | |
azar2=4 | |
else: | |
azar2=5 | |
posicion=3 | |
posEnem=azar2 | |
Ancho=5 | |
carretera=(posicion-1)*" "+"*"+((Ancho-1)-(posicion-1))*" " | |
carretera2=(posEnem-1)*" "+"#"+((Ancho-1)-(posEnem-1))*" " | |
tramoActual=dist3*" "+"|"+carretera+"|" | |
tramo1=dist2*" "+"|"+Ancho*" "+"|" | |
tramo2=dist1*" "+"|"+Ancho*" "+"|" | |
tramo3=dist*" "+"|"+carretera2+"|" | |
tiempoInicial1=time() | |
while metros!=34: | |
#Se pinta la carretera con los valores que posee actualmente | |
print tramo3 | |
print tramo2 | |
print tramo1 | |
print tramoActual | |
#Se actualizan todos los valores | |
mov=raw_input("movimiento...") | |
if mov=="a" or mov=="d": | |
if mov=="a": | |
posicion=posicion-1 | |
if mov=="d": | |
posicion=posicion+1 | |
else: | |
posicion=posicion | |
azar=azarf(0) | |
if metros%4==0: | |
b=random() | |
if b<=(1/5.0): | |
azar2=1 | |
elif (1/5.0)<b<(2/5.0): | |
azar2=2 | |
elif (2/5.0)<b<(3/5.0): | |
azar2=3 | |
elif (3/5.0)<b<(4/5.0): | |
azar2=4 | |
else: | |
azar2=5 | |
posEnem=azar2 | |
posicion=posicion+(dist3-dist2) | |
dist3=dist2 | |
dist2=dist1 | |
dist1=dist | |
dist=dist+azar | |
metros=metros+1 | |
#Se comprueba que los nuevos valores no efectúan el fin de una partida | |
if metros==34: | |
print "Has ganado!!!" | |
tiempoFinal1=time() | |
tiempo1=tiempoFinal1-tiempoInicial1 | |
puntuacion1=(int(1/(tiempo1)*1000)) | |
print "Has obtenido ", puntuacion1, "puntos" | |
pase=1 | |
# si estamos próximos a dicho momento | |
if metros==31: | |
carretera=(posicion-1)*" "+"*"+((Ancho-1)-(posicion-1))*" " | |
carretera2=(posEnem-1)*" "+"#"+((Ancho-1)-(posEnem-1))*" " | |
if metros%4==0: | |
if posicion<posEnem: | |
tramoActual=dist3*" "+"|"+(posicion-1)*" "+"*"+(posEnem-posicion-1)*" "+"#"+(Ancho-posEnem)*" "+"|" | |
if posicion>posEnem: | |
tramoActual=dist3*" "+"|"+(posEnem-1)*" "+"#"+(posicion-posEnem-1)*" "+"*"+(Ancho-posicion)*" "+"|" | |
else: | |
tramoActual=dist3*" "+"|"+carretera+"|" | |
tramo1=tramo2 | |
tramo2=tramo3 | |
tramo3=dist*" "+"|"+Ancho*"-"+"|" | |
else: | |
# o si por el contrario todavía queda mucha partida | |
carretera=(posicion-1)*" "+"*"+((Ancho-1)-(posicion-1))*" " | |
carretera2=(posEnem-1)*" "+"#"+((Ancho-1)-(posEnem-1))*" " | |
if metros%4==0: | |
if posicion<posEnem: | |
tramoActual=dist3*" "+"|"+(posicion-1)*" "+"*"+(posEnem-posicion-1)*" "+"#"+(Ancho-posEnem)*" "+"|" | |
if posicion>posEnem: | |
tramoActual=dist3*" "+"|"+(posEnem-1)*" "+"#"+(posicion-posEnem-1)*" "+"*"+(Ancho-posicion)*" "+"|" | |
else: | |
tramoActual=dist3*" "+"|"+carretera+"|" | |
tramo1=tramo2 | |
tramo2=tramo3 | |
if metros%4==1: | |
tramo3=dist*" "+"|"+carretera2+"|" | |
else: | |
tramo3=dist*" "+"|"+Ancho*" "+"|" | |
if pase==1: | |
puntuacion=puntuacion1 | |
print "Pantalla nº 2" | |
#Se le dan valores iniciales a la nueva pantalla | |
dist=10 | |
dist1=dist | |
dist2=dist | |
dist3=dist | |
metros=5 | |
azar=azarf(1) | |
b=random() | |
if b<=(1/5.0): | |
azar2=1 | |
elif (1/5.0)<b<(2/5.0): | |
azar2=2 | |
elif (2/5.0)<b<(3/5.0): | |
azar2=3 | |
elif (3/5.0)<b<(4/5.0): | |
azar2=4 | |
else: | |
azar2=5 | |
b=random() | |
if b<=(1/5.0): | |
azar3=1 | |
elif (1/5.0)<b<(2/5.0): | |
azar3=2 | |
elif (2/5.0)<b<(3/5.0): | |
azar3=3 | |
elif (3/5.0)<b<(4/5.0): | |
azar3=4 | |
else: | |
azar3=5 | |
posicion=3 | |
posEnem=azar2 | |
posEnem2=azar3 | |
Ancho=5 | |
carretera=(posicion-1)*" "+"*"+((Ancho-1)-(posicion-1))*" " | |
carretera2=(posEnem-1)*" "+"#"+((Ancho-1)-(posEnem-1))*" " | |
carretera3=(posEnem2-1)*" "+"#"+((Ancho-1)-(posEnem2-1))*" " | |
tramoActual=dist3*" "+"|"+carretera+"|" | |
tramo1=dist2*" "+"|"+carretera3+"|" | |
tramo2=dist1*" "+"|"+Ancho*" "+"|" | |
tramo3=dist*" "+"|"+carretera2+"|" | |
tiempoInicial2=time() | |
while metros!=34: | |
#Se pinta la carretera con los valores que posee actualmente | |
print tramo3 | |
print tramo2 | |
print tramo1 | |
print tramoActual | |
#Se actualizan todos los valores | |
mov=raw_input("movimiento...") | |
if mov=="a" or mov=="d": | |
if mov=="a": | |
posicion=posicion-1 | |
if mov=="d": | |
posicion=posicion+1 | |
else: | |
posicion=posicion | |
azar=azarf(0) | |
if metros%4==0: | |
b=random() | |
if b<=(1/5.0): | |
azar2=1 | |
elif (1/5.0)<b<(2/5.0): | |
azar2=2 | |
elif (2/5.0)<b<(3/5.0): | |
azar2=3 | |
elif (3/5.0)<b<(4/5.0): | |
azar2=4 | |
else: | |
azar2=5 | |
if metros%4==2: | |
b=random() | |
if b<=(1/5.0): | |
azar3=1 | |
elif (1/5.0)<b<(2/5.0): | |
azar3=2 | |
elif (2/5.0)<b<(3/5.0): | |
azar3=3 | |
elif (3/5.0)<b<(4/5.0): | |
azar3=4 | |
else: | |
azar3=5 | |
posEnem=azar2 | |
posEnem2=azar3 | |
posicion=posicion+(dist3-dist2) | |
dist3=dist2 | |
dist2=dist1 | |
dist1=dist | |
dist=dist+azar | |
metros=metros+1 | |
#Se comprueba si los valores no efectuan el fin de una partida | |
if metros==34: | |
print "Has ganado!!!" | |
tiempoFinal2=time() | |
tiempo2=tiempoFinal2-tiempoInicial2 | |
puntuacion2=int(1/(tiempo2)*1000) | |
print "Has obtenido ", puntuacion2, "puntos" | |
pase=2 | |
# si estamos próximos a dicho momento | |
if metros==31: | |
carretera=(posicion-1)*" "+"*"+((Ancho-1)-(posicion-1))*" " | |
carretera2=(posEnem-1)*" "+"#"+((Ancho-1)-(posEnem-1))*" " | |
carretera3=(posEnem2-1)*" "+"#"+((Ancho-1)-(posEnem2-1))*" " | |
if metros%4==0: | |
if posicion<posEnem: | |
tramoActual=dist3*" "+"|"+(posicion-1)*" "+"*"+(posEnem-posicion-1)*" "+"#"+(Ancho-posEnem)*" "+"|" | |
if posicion>posEnem: | |
tramoActual=dist3*" "+"|"+(posEnem-1)*" "+"#"+(posicion-posEnem-1)*" "+"*"+(Ancho-posicion)*" "+"|" | |
if metros%4==2: | |
if posicion<posEnem2: | |
tramoActual=dist3*" "+"|"+(posicion-1)*" "+"*"+(posEnem2-posicion-1)*" "+"#"+(Ancho-posEnem2)*" "+"|" | |
if posicion>posEnem2: | |
tramoActual=dist3*" "+"|"+(posEnem2-1)*" "+"#"+(posicion-posEnem2-1)*" "+"*"+(Ancho-posicion)*" "+"|" | |
else: | |
tramoActual=dist3*" "+"|"+carretera+"|" | |
tramo1=tramo2 | |
tramo2=tramo3 | |
tramo3=dist*" "+"|"+Ancho*"-"+"|" | |
else: | |
# o si por el contrario todavía queda mucha partida | |
carretera=(posicion-1)*" "+"*"+((Ancho-1)-(posicion-1))*" " | |
carretera2=(posEnem-1)*" "+"#"+((Ancho-1)-(posEnem-1))*" " | |
carretera3=(posEnem2-1)*" "+"#"+((Ancho-1)-(posEnem2-1))*" " | |
if metros%4==0: | |
if posicion<posEnem: | |
tramoActual=dist3*" "+"|"+(posicion-1)*" "+"*"+(posEnem-posicion-1)*" "+"#"+(Ancho-posEnem)*" "+"|" | |
if posicion>posEnem: | |
tramoActual=dist3*" "+"|"+(posEnem-1)*" "+"#"+(posicion-posEnem-1)*" "+"*"+(Ancho-posicion)*" "+"|" | |
if metros%4==2: | |
if posicion<posEnem2: | |
tramoActual=dist3*" "+"|"+(posicion-1)*" "+"*"+(posEnem2-posicion-1)*" "+"#"+(Ancho-posEnem2)*" "+"|" | |
if posicion>posEnem2: | |
tramoActual=dist3*" "+"|"+(posEnem2-1)*" "+"#"+(posicion-posEnem2-1)*" "+"*"+(Ancho-posicion)*" "+"|" | |
if metros%4==1 or metros%4==3: | |
tramoActual=dist3*" "+"|"+carretera+"|" | |
tramo1=tramo2 | |
tramo2=tramo3 | |
if metros%4==1: | |
tramo3=dist*" "+"|"+carretera2+"|" | |
if metros%4==3: | |
tramo3=dist*" "+"|"+carretera3+"|" | |
if metros%4==2 or metros%4==0: | |
tramo3=dist*" "+"|"+Ancho*" "+"|" | |
puntuacion=puntuacion1+puntuacion2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment