tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
|
|
@ -0,0 +1,84 @@
|
|||
Enumeration
|
||||
;choices are in listed according to their cycle, weaker followed by stronger
|
||||
#rock
|
||||
#paper
|
||||
#scissors
|
||||
#numChoices ;this comes after all possible choices
|
||||
EndEnumeration
|
||||
|
||||
;give names to each of the choices
|
||||
Dim choices.s(#numChoices - 1)
|
||||
choices(#rock) = "rock"
|
||||
choices(#paper) = "paper"
|
||||
choices(#scissors) = "scissors"
|
||||
|
||||
Define gameCount
|
||||
Dim playerChoiceHistory(#numChoices - 1)
|
||||
|
||||
Procedure weightedRandomChoice()
|
||||
Shared gameCount, playerChoiceHistory()
|
||||
Protected x = Random(gameCount - 1), t, c
|
||||
|
||||
For i = 0 To #numChoices - 1
|
||||
t + playerChoiceHistory(i)
|
||||
If t >= x
|
||||
c = i
|
||||
Break
|
||||
EndIf
|
||||
Next
|
||||
|
||||
ProcedureReturn (c + 1) % #numChoices
|
||||
EndProcedure
|
||||
|
||||
If OpenConsole()
|
||||
PrintN("Welcome to the game of rock-paper-scissors")
|
||||
PrintN("Each player guesses one of these three, and reveals it at the same time.")
|
||||
PrintN("Rock blunts scissors, which cut paper, which wraps stone.")
|
||||
PrintN("If both players choose the same, it is a draw!")
|
||||
PrintN("When you've had enough, choose Q.")
|
||||
|
||||
Define computerChoice, playerChoice, response.s
|
||||
Define playerWins, computerWins, draw, quit
|
||||
|
||||
computerChoice = Random(#numChoices - 1)
|
||||
Repeat
|
||||
Print(#CRLF$ + "What is your move (press R, P, or S)?")
|
||||
Repeat
|
||||
response = LCase(Input())
|
||||
Until FindString("rpsq", response) > 0
|
||||
|
||||
If response = "q":
|
||||
quit = 1
|
||||
Else
|
||||
gameCount + 1
|
||||
playerChoice = FindString("rps", response) - 1
|
||||
|
||||
result = (playerChoice - computerChoice + #numChoices) % #numChoices
|
||||
Print("You chose " + choices(playerChoice) + " and I chose " + choices(computerChoice))
|
||||
Select result
|
||||
Case 0
|
||||
PrintN(". It's a draw.")
|
||||
draw + 1
|
||||
Case 1
|
||||
PrintN(". You win!")
|
||||
playerWins + 1
|
||||
Case 2
|
||||
PrintN(". I win!")
|
||||
computerWins + 1
|
||||
EndSelect
|
||||
playerChoiceHistory(playerChoice) + 1
|
||||
computerChoice = weightedRandomChoice()
|
||||
EndIf
|
||||
Until quit
|
||||
|
||||
Print(#CRLF$ + "You chose: ")
|
||||
For i = 0 To #numChoices - 1
|
||||
Print(choices(i) + " " + StrF(playerChoiceHistory(i) * 100 / gameCount, 1) + "%; ")
|
||||
Next
|
||||
PrintN("")
|
||||
PrintN("You won " + Str(playerWins) + ", and I won " + Str(computerWins) + ". There were " + Str(draw) + " draws.")
|
||||
PrintN("Thanks for playing!")
|
||||
|
||||
Print(#CRLF$ + #CRLF$ + "Press ENTER to exit"): Input()
|
||||
CloseConsole()
|
||||
EndIf
|
||||
Loading…
Add table
Add a link
Reference in a new issue