Anda di halaman 1dari 5

# -*- coding: cp1252 -*# # ------------------------------------------------#| Proyecto1.py | #| Samuel Reyes Carn no. 12075 | #| Kevin Avendao Carn no.

12151 | #| Csar Guerra Carn no. 12593 | #| El objetivo del programa es realizar un modelo | #| del juego de misioneros y canbales, donde se | #| deben cruzar 3 misioneros y 3 canbales al otro | #| lado de un lago. | #| Fecha de inicio del proyecto: 21/03/2012 | # ------------------------------------------------# import FuncionesProyecto1 #Se importan las funciones a utilizar en el programa repetir_juego="S" #Se asigna el valor 'S' a esta variable para que entre al cicl o #Repeticin que se ejecuta mientras el usuario quiera seguir jugando el juego while repetir_juego=="S" or repetir_juego=="s": #INSTRUCCIONES DEL JUEGO print "Juego de misioneros y canbales" print print "INSTRUCCIONES: Ayude a 3 canbales y 3 misioneros a cruzar al otro lado de un lago" print print "Tenga en cuenta que cuando hay ms canbales que misioneros en una de las orillas del lago, los canbales se comen a los misioneros." print print "Los misioneros y canbales cuentan con un barco en donde caben dos. Tan to los misioneros como canbales pueden dirigir el barco." print print "Los canbales estn representados por la letra (X), mientras los misioner os estn representados por la letra (O) " print #Se asigna la cantidad inicial de misioneros y canbales en cada extremo CanibalesIzq = 0 MisionerosIzq = 0 CanibalesDer = 3 MisionerosDer = 3 FuncionesProyecto1.parteVisual(CanibalesIzq,MisionerosIzq,CanibalesDer,Misio nerosDer,"D") #Se hace un esquema de como comienza el juego #Repeticin que se ejecuta mientras el usuario no haya ganado, ni haya perdido while (not FuncionesProyecto1.ganarJuego(CanibalesIzq,MisionerosIzq)) and (n ot FuncionesProyecto1.perderJuego(CanibalesIzq,MisionerosIzq,CanibalesDer,Mision erosDer)): print bandera_incorrecto=True # Bandera que se encarga de verificar si los dat os ingresados son vlidos para que el barco se pueda mover al lado izquierdo #Repeticin que se ejecuta mientras los datos ingresados sean incorrectos while bandera_incorrecto: bandera_valores="S" #Se asigna el valor 'S' a esa variable para que obligadamente entre al ciclo #Repeticin que se ejecuta mientras que el usuario quiera cambiar los datos que ya haba ingresado while not (bandera_valores!="S" and bandera_valores!="s"): NumeroMisioneros=-1 #Se asigna el valor de -1 a esa variable par a que obligadamente entre al ciclo

#Repeticin que se ejecuta mientras el nmero de misioneros sea nega tivo while NumeroMisioneros<0: NumeroMisioneros = FuncionesProyecto1.entDatosEnteros("Ingre se la cantidad de misioneros que quiere colocar en el barco: ") #Le pide al usua rio el nmero de misioneros que desea colocar en el barco if NumeroMisioneros<0: #Si el nmero ingresado es negativo, le dice al usuario por medio de un mensaje de error print "Este nmero no puede ser negativo ya que no existe nmero de personas negativas" print NumeroCanibales = -1 #Se asigna el valor de -1 a esa variable pa ra que obligadamente entre al ciclo #Repeticin que se ejecuta mientras el nmero de canbales sea negativ o while NumeroCanibales<0: NumeroCanibales = FuncionesProyecto1.entDatosEnteros("Ingres e la cantidad de canbales que quiere colocar en el barco: ") #Le pide al usuario el nmero de canbales que desea colocar en el barco if NumeroCanibales<0: #Si el nmero ingresado es negativo, le dice al usuario por medio de un mensaje de error print "Este nmero no puede ser negativo ya que no existe nmero de canibales negativos" print bandera_valores="H" #Se asigna el valor de 'H' a esa variable pa ra que obligadamente entre al ciclo #Repeticin que se ejecuta mientras el usuario no ingrese los valo res vlidos while bandera_valores!="S" and bandera_valores!="s" and bandera_ valores!="N" and bandera_valores!="n": bandera_valores = raw_input("Desea cambiar los valores? S(s)/ N(n): ") #Le pregunta la usuario si no desea cambiar los valores ingresados if bandera_valores!="S" and bandera_valores!="s" and bandera _valores!="N" and bandera_valores!="n": #Si no ingresa una opcin vlida, entonces l e dice al usuario por medio de un mensaje de error print "Sus nicas opciones a ingresar son S/s o N/n" print print if not FuncionesProyecto1.Barco(NumeroCanibales,NumeroMisioneros): # Si las condiciones que necesita el barco no se cumplen, le muestra un mensaje de error al usuario print elif NumeroMisioneros>MisionerosDer: #Si el nmero ingresado de mision eros es mayor a la cantidad de misioneros que hay en el lado derecho, le dice al usuario print "El nmero de misioneros ingresado es mayor al nmero de misio neros que se encuentran del lado derecho" print elif NumeroCanibales>CanibalesDer: #Si el nmero ingresado de canbaless es mayor a la cantidad de canbales que hay en el lado derecho, le dice al usuari o print "El nmero de canbales ingresado es mayor al nmero de canbales que se encuentran del lado derecho" print else: #Si no cumple ninguna de las condiciones anteriores, entonces significa que los datos ingresados son vlidos # --------------------------------------------------------MisionerosIzq = MisionerosIzq + NumeroMisioneros #|Se suma la cantidad de misioneros y canbales ingresados |

CanibalesIzq = CanibalesIzq + NumeroCanibales ables que controlan el lado izquierdo del lago y| MisionerosDer = MisionerosDer - NumeroMisioneros a cantidad de misioneros y canbales ingresados | CanibalesDer = CanibalesDer - NumeroCanibales ables que controlan el lado derecho del lago. |

#|a las vari #|se resta l #|a las vari

# --------------------------------------------------------FuncionesProyecto1.parteVisual(CanibalesIzq,MisionerosIzq,Caniba lesDer,MisionerosDer,"I") #Se realiza un esquema de como se encuentra el juego e n ese instante bandera_incorrecto=False #Se cambia la bandera a Falso ya que lo s datos que se han ingresado fueron correctos # Se verifica si el usuario ha ganado o perdido el juego if (not FuncionesProyecto1.ganarJuego(CanibalesIzq,MisionerosIzq)) and ( not FuncionesProyecto1.perderJuego(CanibalesIzq,MisionerosIzq,CanibalesDer,Misio nerosDer)): print bandera_incorrecto=True # Bandera que se encarga de verificar si los datos ingresados son vlidos para que el barco se pueda mover al lado derecho #Repeticin que se ejecuta mientras los datos ingresados sean incorrec tos while bandera_incorrecto: bandera_valores="S" #Se asigna el valor 'S' a esa variable para que obligadamente entre al ciclo #Repeticin que se ejecuta mientras que el usuario quiera cambiar los datos que ya haba ingresado while not(bandera_valores!="S" and bandera_valores!="s"): NumeroMisioneros=-1 #Se asigna el valor de -1 a esa variable para que obligadamente entre al ciclo #Repeticin que se ejecuta mientras el nmero de misioneros sea negativo while NumeroMisioneros<0: NumeroMisioneros = FuncionesProyecto1.entDatosEnteros("I ngrese la cantidad de misioneros que quiere colocar en el barco: ") #Le pide al usuario el nmero de misioneros que desea colocar en el barco if NumeroMisioneros<0: #Si el nmero ingresado es negativo , le dice al usuario por medio de un mensaje de error print "Este nmero no puede ser negativo ya que no exi ste nmero de personas negativas" print NumeroCanibales = -1 #Se asigna el valor de -1 a esa variabl e para que obligadamente entre al ciclo #Repeticin que se ejecuta mientras el nmero de canbales sea neg ativo while NumeroCanibales<0: NumeroCanibales = FuncionesProyecto1.entDatosEnteros("In grese la cantidad de canbales que quiere colocar en el barco: ") #Le pide al usua rio el nmero de canbales que desea colocar en el barco if NumeroCanibales<0: #Si el nmero ingresado es negativo, le dice al usuario por medio de un mensaje de error print "Este nmero no puede ser negativo ya que no exi ste nmero de canibales negativos" print bandera_valores="H" #Se asigna el valor de 'H' a esa variabl e para que obligadamente entre al ciclo #Repeticin que se ejecuta mientras el usuario no ingrese los valores vlidos while bandera_valores!="S" and bandera_valores!="s" and band

era_valores!="N" and bandera_valores!="n": bandera_valores = raw_input("Desea cambiar los valores? S (s)/N(n): ") #Le pregunta la usuario si no desea cambiar los valores ingresados if bandera_valores!="S" and bandera_valores!="s" and ban dera_valores!="N" and bandera_valores!="n": #Si no ingresa una opcin vlida, entonc es le dice al usuario por medio de un mensaje de error print "Sus nicas opciones a ingresar son S/s o N/n" print print if not FuncionesProyecto1.Barco(NumeroCanibales,NumeroMisioneros ): #Si las condiciones que necesita el barco no se cumplen, le muestra un mensaj e de error al usuario print elif NumeroMisioneros>MisionerosIzq: #Si el nmero ingresado de mi sioneros es mayor a la cantidad de misioneros que hay en el lado izquierdo, le d ice al usuario print "El nmero de misioneros ingresado es mayor al nmero de m isioneros que se encuentran del lado izquierdo" print elif NumeroCanibales>CanibalesIzq: #Si el nmero ingresado de canba less es mayor a la cantidad de canbales que hay en el lado izquierdo, le dice al usuario print "El nmero de canbales ingresado es mayor al nmero de canba les que se encuentran del lado izquierdo" print else: #Si no cumple ninguna de las condiciones anteriores, enton ces significa que los datos ingresados son vlidos # --------------------------------------------------------MisionerosIzq = MisionerosIzq - NumeroMisioneros #|Se res ta la cantidad de misioneros y canbales ingresados | CanibalesIzq = CanibalesIzq - NumeroCanibales #|a las variables que controlan el lado izquierdo del lago y| MisionerosDer = MisionerosDer + NumeroMisioneros #|se sum a la cantidad de misioneros y canbales ingresados | CanibalesDer = CanibalesDer + NumeroCanibales #|a las variables que controlan el lado derecho del lago. | # --------------------------------------------------------FuncionesProyecto1.parteVisual(CanibalesIzq,MisionerosIzq,Ca nibalesDer,MisionerosDer,"D") #Se realiza un esquema de como se encuentra el jue go en ese instante bandera_incorrecto=False #Se cambia la bandera a Falso ya qu e los datos que se han ingresado fueron correctos print if FuncionesProyecto1.ganarJuego(CanibalesIzq,MisionerosIzq): #Si el usuario gana, se lo dice print "Usted ha ganado!! Muchas felicidades! :D :D" else: #Sino, significa que ha perdido print "Usted ha perdido!!!" print print " xxxx xxxx print " xxxx xxxx print " xxxxxxx print " xxxx xxxx print " xxxx xxxx print print print y se lo dice xxxx xxxx" xxxx xxxx" xxxxxxx" xxxx xxxx" xxxx xxxx"

print " xxxxxxxxx" print " xxxxxxxxxxxxx" print " xxxxxxxxxxxxxxxxx" print " xxxxxxxxxxxxxxxxxxx" print " xxxxxxxxxxxxxxxxxxxxx" print " xxxxxxxxxxxxxxxxxxxxxxx" print " xxxxxxxxxxxxxxxxxxxxxxxxx" print " xxxxxxxxxxxxxxxxxxxxxxxxxxx" print " xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" print " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" print repetir_juego="H" #Se le asigna el valor 'H' a esta variable para que entre al ciclo #Repeticin que se ejecuta mientras el usuario quiera jugar de nuevo while repetir_juego!="S" and repetir_juego!="s" and repetir_juego!="N" and r epetir_juego!="n": repetir_juego = raw_input("Desea jugar de nuevo? S(s)/N(n): ") #Le pregun ta la usuario si desea jugar otra vez if repetir_juego!="S" and repetir_juego!="s" and repetir_juego!="N" and repetir_juego!="n": #Si no ingresa una opcin vlida, entonces le dice al usuario po r medio de un mensaje de error print "Sus nicas opciones a ingresar son S/s o N/n" print

Anda mungkin juga menyukai