RosettaCodeData/Task/Penneys-game/FreeBASIC/penneys-game.basic

94 lines
2.4 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Sub Jugador_elige(secuencia As String)
Dim As String eleccion
Dim As Byte valido, i
Do
valido = True
Print !"\nIngresa una secuencia de 3 opciones, cada una de ellas H o T:";
Input " > ", secuencia
If Len(secuencia) <> 3 Then valido = False
If valido Then
For i = 1 To 3
eleccion = Mid(Ucase(secuencia), i, 1)
If eleccion <> "H" And eleccion <> "T" Then valido = False
Next
End If
Loop Until valido
End Sub
Function Aleatorio() As String
Dim As Byte eleccion, i
Dim As String tirada
tirada = ""
For i = 1 To 3
eleccion = Rnd And 1
If eleccion Then tirada += "H" Else tirada += "T"
Next
Return tirada
End Function
Function Optima(secuencia As String) As String
If Mid(secuencia, 2, 1) = "H" Then
Optima = "T" + Left(secuencia, 2)
Else
Optima = "H" + Left(secuencia, 2)
End If
End Function
Randomize Timer
Dim As String jugador, computador, otro
Dim Shared As String secuencia
Dim As Boolean ganador, valido
Do
Cls
Color 11
Print "*** Penney's Game ***" & Chr(10)
Color 7
Print "Cara eliges primero, cruz yo elijo primero."
Print "Y es... ";
Sleep 300
Dim As Double ht: ht = Rnd(0 - Timer) And 1
If ht Then
Print "­cara!"
Jugador_elige(jugador)
computador = Optima(jugador)
Print !"\nYo elijo "; computador; !".\n"
Else
Print "­cruz!"
computador = Aleatorio
Print !"\nYo elijo "; computador; !".\n"
Jugador_elige(jugador)
End If
Print "Comenzando el juego ..."
secuencia = ""
ganador = False
Do
Sleep 200
Dim As Integer lanzar = Rnd And 1
If lanzar Then
secuencia += "H"
Print "H ";
Else
Print "T ";
secuencia += "T"
End If
If Right(secuencia, 3) = computador Then
Print !"\n­Gan!\n"
ganador = True
Else
If Right(secuencia, 3) = jugador Then
Print !"\n­Felicidades! Ganaste.\n"
ganador = True
End If
End If
Loop Until ganador
Do
valido = False
Input "¨Otra ronda? (S/N) ", otro
If Instr("SYN", Ucase(otro)) Then valido = True
Loop Until valido
Loop Until Ucase(otro) = "N"
Print !"\n­Gracias por jugar!"
Sleep
End