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

Improving defences Proxy Device(defense in depth)

Blog banner

Cross site scripting Attack

Blog banner

MoSCoW METHOD IN DATA SCIENCE

Blog banner

Big Data Architecture

Blog banner

MEMORY HIERARCHY

Blog banner

Processing Crime and Incident Scenes

Blog banner

What Makes Patola the Queen of Silk?

Blog banner

Importance of Network Security Risk

Blog banner

What is online marketing and why do you need to know about it ?

Blog banner

Top 5 Tech Innovations of 2018

Blog banner

indian premier league

Blog banner

Functions of Operating System

Blog banner

Starting Android Activity Using Intent

Blog banner

GIS

Blog banner

Importance of internet

Blog banner

INTRODUCTION TO C#

Blog banner

" THE ANSWERS THAT LED INDIAN BEAUTIES TO THE MISS UNIVERSE HISTORIC WIN. "

Blog banner

Theads

Blog banner

OS Assignment 3

Blog banner

Data Science in Predictive Analytics: Transforming Business Decision-Making

Blog banner

How GIS in Agriculture Eliminates Guesswork

Blog banner

What is HTML?

Blog banner

Cache memory

Blog banner

10 Alien Encounters and Abduction Stories

Blog banner

OS Assignment 3 Deadlock

Blog banner

Demystifying Cryptography: A Beginner's Guide

Blog banner

File management

Blog banner

Building a Better You: Fitness Tips and Inspiration.

Blog banner

MailChimp

Blog banner

Theads

Blog banner

“Shot on iPhone” : A campaign by Apple that turned into a prodigy

Blog banner

CyberSecurity Color Wheel

Blog banner

Bots and Cyber Security

Blog banner

OS- Assignnment 1

Blog banner

Memory management

Blog banner

India Digital Personal Data Protection Act, 2023

Blog banner

Cyber Security in Data Breaching

Blog banner

Starvation

Blog banner

A Statistical Analysis of Player Performance and their Value in cricket

Blog banner

Routers

Blog banner

Study on cyber and network forensic in computer security management

Blog banner

Principles of Service Operation

Blog banner