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

I/O Management and Disk Scheduling

Blog banner

Anomaly Detection in Behavioral Data Using Machine Learning

Blog banner

Fitness

Blog banner

Deadlock

Blog banner

Deadlock

Blog banner

Virtual Memory

Blog banner

Big Data Architecture

Blog banner

Google

Blog banner

The most common internet security threats

Blog banner

Functions of operating system

Blog banner

Remote Work in 2026

Blog banner

Security issues

Blog banner

Virtual Machine

Blog banner

Crypto tax evasion

Blog banner

A Tourist’s Guide To Florida’s Rodeo Culture: What To Expect At The Arcadia Championship Rodeo

Blog banner

objectives and function of operating system

Blog banner

The Dark Web: A Breeding Ground for Cybercriminals – How to Guard Against Threats

Blog banner

Blog on health and fitness

Blog banner

VIRTUAL MACHINES

Blog banner

Student Grade Calculator in LISP

Blog banner

Sage business cloud accounting

Blog banner

This is my first blog.

Blog banner

Understanding Mobile Device Forensics

Blog banner

Operating System

Blog banner

MEMORY MANAGEMENT

Blog banner

Mumbai famous street food

Blog banner

Malware

Blog banner

SECURITY VULNERABILITIES COUNTERMEASURES IN A SMART SHIP SYSTEM

Blog banner

10 Unsolved Mysteries all over the world

Blog banner

The Psychology of Diversity, Equity & Inclusion: How Inclusive Workplaces Boost Productivity

Blog banner

Google App Engine

Blog banner

LIFEHACKER

Blog banner

Memory Management

Blog banner

Intrusion Detection System

Blog banner

Evolution of Operating System

Blog banner

Deadlocks

Blog banner

Buffering

Blog banner

10 Signs your Computer has Virus

Blog banner

How to Conquer Depression ?

Blog banner

Python as a tool for Data science task & project

Blog banner

Service Design Model

Blog banner

Banaras

Blog banner