in the scheme programming language implement a game of rock paper scissors between a user and the computer.
Only the following scheme subsets should be used:
Special symbols (not case sensitive in our version (R5RS), but
is in R6RS):
a. Boolean: #t (else) and #f
b. Characters: #\a, #\b ... #\Z
c. Strings: in double quotes
3. Basic functions:
a. quote
b. car
c. cdr
d. c _ _ _ _ r, where each _ is either “a” or “d”
e. cons
f. cond
g. list
h. append
i. length
j. reverse
k. member
l. map
4. Boolean functions:
a. boolean? — #t or #f
b. pair? — '(a b c) and '(a.b), but not '()
c. list? — '(a b c) and '(), but not '(a.b)
d. atom?
e. symbol?
f. number?
g. char? — literals written with #\ prefix, followed by the
character, Unicode
code, or special character descriptor (#\tab, #\linefeed,
#\newline, #\space,
etc.)
h. string? — sequence of characters enclosed in double quotes
(e.g., "Hello\n")
i. null?
j. eq?
k. equal?
l. and, or, not
m. char=?
n. string=?
o. negative?
5. Arithmetic functions
a. +, -
b. *, /, mod
c. =, <, >, <=, >=
d. random
e. min, max
f. sqrt, exp, log, abs
6. Definitions — for data and functions, to associate a name with a
value. You may only
use them for functions in your assignment; you may use them on data
for testing
purposes.
a. E.g. (define (functionName formalParams) body)
b. E.g. (define functionName (lambda (formalParams) body))
c. E.g. (define dataName 2) ;can’t use this in your code, just for
testing
Note that assignments, such as (set! variable expression ), should
not be used in your
formal program, but prove invaluable in testing. Assignments break
the functional
style.
7. I/O stuff:
a. symbol->string
b. string->symbol
c. string->list
d. list->string
e. char->integer
f. integer->char
g. read – returns an atom
h. read-char
i. peek-char
j. display
k. newline
8. Special functions:
a. apply
b. eval
# import random module
import random
# Print multiline instruction
# performstring concatenation of string
print("Winning Rules of the Rock paper scissor game as follows:
\n"
+"Rock vs paper->paper
wins \n"
+ "Rock vs scissor->Rock
wins \n"
+"paper vs
scissor->scissor wins \n")
while True:
print("Enter choice \n 1. Rock \n 2. paper \n 3.
scissor \n")
# take the input from user
choice = int(input("User turn: "))
# OR is the short-circuit operator
# if any one of the condition is true
# then it return True value
# looping until user enter invalid input
while choice > 3 or choice < 1:
choice = int(input("enter valid
input: "))
# initialize value of choice_name variable
# corresponding to the choice value
if choice == 1:
choice_name = 'Rock'
elif choice == 2:
choice_name = 'paper'
else:
choice_name = 'scissor'
# print user choice
print("user choice is: " + choice_name)
print("\nNow its computer turn.......")
# Computer chooses randomly any number
# among 1 , 2 and 3. Using randint method
# of random module
comp_choice = random.randint(1, 3)
# looping until comp_choice value
# is equal to the choice value
while comp_choice == choice:
comp_choice = random.randint(1,
3)
# initialize value of comp_choice_name
# variable corresponding to the choice value
if comp_choice == 1:
comp_choice_name = 'Rock'
elif comp_choice == 2:
comp_choice_name = 'paper'
else:
comp_choice_name = 'scissor'
print("Computer choice is: " + comp_choice_name)
print(choice_name + " V/s " + comp_choice_name)
# condition for winning
if((choice == 1 and comp_choice == 2) or
(choice == 2 and comp_choice ==1 )):
print("paper wins => ", end =
"")
result = "paper"
elif((choice == 1 and comp_choice == 3) or
(choice == 3 and comp_choice ==
1)):
print("Rock wins =>", end =
"")
result = "Rock"
else:
print("scissor wins =>", end =
"")
result = "scissor"
# Printing either user or computer wins
if result == choice_name:
print("<== User wins
==>")
else:
print("<== Computer wins
==>")
print("Do you want to play again? (Y/N)")
ans = input()
# if user input n or N then condition is True
if ans == 'n' or ans == 'N':
break
# after coming out of the while loop
# we print thanks for playing
print("\nThanks for playing")
The screenshot of code:
Output:
Note: Plzzz don' t give dislike.....Plzzz comment if u have any problem i will try to resolve it.......
Get Answers For Free
Most questions answered within 1 hours.