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
1 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

Puri Jagannath temple

Blog banner

Data Analytics in Data Science

Blog banner

How to Compare Schools Before an Admission Decision

Blog banner

Vulnerability Assessment

Blog banner

How to write a cover letter

Blog banner

memory management

Blog banner

Why is ITSM important in IT organization?

Blog banner

Rain bow

Blog banner

Answer

Blog banner

Dove’s Real Beauty Campaign- Case Study

Blog banner

Paginng In OS

Blog banner

Memory Management in Operating System

Blog banner

MY FIRST BLOG?

Blog banner

Cybersecurity Standards for Automotive

Blog banner

Windows Operating System

Blog banner

How to insert contacts in zoho crm using php

Blog banner

Deadlocks in Operating System

Blog banner

1.1 basic elements

Blog banner

Operating system

Blog banner

bulk email software

Blog banner

Dekkers Algorithm

Blog banner

Introduction to Data Science: Life Cycle & Applications

Blog banner

WHAT IS SNAPCHAT AND HOW DOES IT WORK?

Blog banner

Concept and definition of m-commerce

Blog banner

QUANTUM COMPUTING IN SECURITY:A GAME CHANGER IN DIGITAL WORLD

Blog banner

Global versus Indian Mental Health Differences

Blog banner

Models of Information Security.

Blog banner

Webmail

Blog banner

Smart Eating Habits for Office Professionals to Stay Healthy

Blog banner

Shoulders

Blog banner

Business Engineering

Blog banner

Blockchain Transactions

Blog banner

Modern operating system

Blog banner

Bitcoin sent using radio waves! No internet!

Blog banner

Autonomy Vehicles: Future Ki Gadiya

Blog banner

Navigating the Digital Battlefield: Security Breaches and Effective Countermeasures

Blog banner

Atlantis - The Lost Island.........

Blog banner

My First Trek - Sondai, Karjat - Shoaib Malik

Blog banner

Study on cyber and network forensic in computer security management

Blog banner

Os(Computer security threats)

Blog banner

Short note on expert system

Blog banner

PHISHING

Blog banner