Skip to content

Instantly share code, notes, and snippets.

@Serabe
Created March 9, 2009 19:34
Show Gist options
  • Save Serabe/76433 to your computer and use it in GitHub Desktop.
Save Serabe/76433 to your computer and use it in GitHub Desktop.
#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