wisemonkeys logo
FeedNotificationProfileManage Forms
FeedNotificationSearchSign in
wisemonkeys logo

Blogs

Rock, Paper, Scissors Game in Common Lisp

profile
Om Rawal
Jul 16, 2025
0 Likes
0 Discussions
3 Reads


1. Code Analysis

Let’s walk through how the code works, step by step:

a. Setup

(defun rock-paper-scissors ()
(let ((choices '("rock" "paper" "scissors"))
(random-state (make-random-state t)))
  1. I defined a function called rock-paper-scissors.
  2. Inside, I created a list of choices: "rock", "paper", and "scissors".
  3. I also made a random state to generate random numbers.

b. Welcome Message

(format t "~%--- Welcome to the Rock, Paper, Scissors Game! ---~%")
(format t "Instructions: Type 'rock', 'paper', or 'scissors' to play.~%")
(format t "You can also type 'quit' anytime to exit the game.~%~%")
  1. Prints a welcome message and tells the player how to play.

c. The Game Loop

(loop
(format t "Your move: ")
(let ((player-move (string-downcase (read-line))))
...
  1. Starts an infinite loop for continuous gameplay.
  2. Asks the player to type their move.
  3. Converts the input to lowercase so it works even if the player types “Rock” or “ROCK”.

d. Handling “quit”

(if (string= player-move "quit")
(progn
(format t "Thanks for playing! Goodbye.~%")
(return))
  1. If the user types quit, the program says goodbye and exits the loop.

e. Validating Input

(if (not (member player-move choices :test #'string=))
(format t "Oops! Please enter only 'rock', 'paper', or 'scissors'.~%")
  1. Checks if the user typed a valid move.
  2. If not, it prints a warning and loops back to ask again.

f. Computer’s Move

(let* ((computer-move (nth (random 3 random-state) choices)))
(format t "Computer chose: ~A~%" computer-move)
  1. Picks a random move from the list of choices.
  2. Prints out what the computer chose.

g. Determining the Winner

(cond
((string= player-move computer-move)
(format t "It's a tie! We both chose ~A.~%" player-move))

((or (and (string= player-move "rock") (string= computer-move "scissors"))
(and (string= player-move "scissors") (string= computer-move "paper"))
(and (string= player-move "paper") (string= computer-move "rock")))
(format t "You win! ~A beats ~A.~%" player-move computer-move))

(t
(format t "You lose! ~A beats ~A.~%" computer-move player-move))))
  1. Checks for a tie first.
  2. Then checks if the player wins.
  3. Otherwise, prints that the player lost.

2. Output

Here’s what a sample run looks like:



Comments ()


Sign in

Read Next

geographic information system (GIS)

Blog banner

The Laws of Karma

Blog banner

How India made the GIS its Own, and its Use in Infrastructural Developments

Blog banner

Intrusion Detection System

Blog banner

How to Conquer Depression ?

Blog banner

VIRTUAL MACHINE

Blog banner

Trello ( management software)

Blog banner

Vulnerability Assessment

Blog banner

Assignment-3

Blog banner

Protein and Energy: Why Your Workday Diet Needs More of It

Blog banner

7 Perks of Getting Your Teeth Whitening Done Professionally

Blog banner

memory management

Blog banner

A-B-C of Networking: Part-1 (Basics)

Blog banner

Deadlock in Operating System

Blog banner

SAVE TREES

Blog banner

WAKE UP ITS FOOD o'CLOCK...!!!!!

Blog banner

Zero-Day Attack

Blog banner

OLA

Blog banner

THE ROLE OF CYBER FORENSICS IN CRIMINOLOGY

Blog banner

How to write a cover letter

Blog banner

Race Condition

Blog banner

Service Validation and Testing during the Design Phase

Blog banner

10 Unknown facts about India's Independence

Blog banner

What is Anxiety? How to manage Anxiety?

Blog banner

Financial Fraud Detection

Blog banner

Cybersecurity Standards for Automotive

Blog banner

Interesting fact about kangaroo.

Blog banner

How to kiss

Blog banner

Deadlock

Blog banner

Memory Management

Blog banner

Virtual memory

Blog banner

ROLE OF THE COMPUTER FORENSICS TOOLS AND TECHNIQUES

Blog banner

The Memory Hierarchy

Blog banner

Can ChatGPT Answer All My Questions About Life?

Blog banner

Child labour

Blog banner

The Everyday Parenting Dilemma: Safety Vs Independence

Blog banner

THE INPACT OF SOCIAL MEDIA!

Blog banner

Education: Key to your Prosperity

Blog banner

Getting into anime My anime suggestions

Blog banner

Cyber Security Control

Blog banner

What if COVID does not exist!

Blog banner

Functions Of Operating Systems

Blog banner