emacs.d/clones/lisp/llthw.common-lisp.dev/1-11-0-text-adventure.html

1906 lines
48 KiB
HTML

<!DOCTYPE HTML>
<html lang="" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Extra Credit: A Simple Text Adventure · Learn Lisp The Hard Way</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<meta name="author" content=""the Phoeron" Colin J.E. Lupton">
<link rel="stylesheet" href="gitbook/style.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-hints/plugin-hints.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-folding-chapters/folding-chapters.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-highlight/website.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-search/search.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="gitbook/images/favicon.ico" type="image/x-icon">
<link rel="next" href="1-12-0-namespaces.html" />
<link rel="prev" href="1-10-0-functions.html" />
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="Type to search" />
</div>
<nav role="navigation">
<ul class="summary">
<li class="header">LEARN LISP THE HARD WAY</li>
<li class="chapter " data-level="1.1" data-path="./">
<a href="index.html">
Second Draft (in-progress)
</a>
</li>
<li class="chapter " data-level="1.2" data-path="CHANGELOG.html">
<a href="CHANGELOG.html">
CHANGELOG
</a>
</li>
<li class="chapter " data-level="1.3" data-path="TODO.html">
<a href="TODO.html">
TODO
</a>
</li>
<li class="header">PREFACE</li>
<li class="chapter " data-level="2.1" data-path="preface.html">
<a href="preface.html">
TANSTAAFL
</a>
</li>
<li class="chapter " data-level="2.2" data-path="preface-part-two.html">
<a href="preface-part-two.html">
The Hard Way is Easier
</a>
</li>
<li class="chapter " data-level="2.3" data-path="preface-part-three.html">
<a href="preface-part-three.html">
Who Is This Book For?
</a>
</li>
<li class="chapter " data-level="2.4" data-path="introduction.html">
<a href="introduction.html">
Lisp: A Future History
</a>
</li>
<li class="chapter " data-level="2.5" data-path="acknowledgements.html">
<a href="acknowledgements.html">
Acknowledgements
</a>
</li>
<li class="header">PART ONE</li>
<li class="chapter " data-level="3.1" data-path="1-0-0-overview.html">
<a href="1-0-0-overview.html">
Grokking Lisp
</a>
<ul class="articles">
<li class="chapter " data-level="3.1.1" data-path="1-01-00-lisp-bootcamp.html">
<a href="1-01-00-lisp-bootcamp.html">
Common Lisp Bootcamp
</a>
<ul class="articles">
<li class="chapter " data-level="3.1.1.1" data-path="1-01-01-syntax-overview.html">
<a href="1-01-01-syntax-overview.html">
Syntax Overview in 5 Minutes
</a>
</li>
<li class="chapter " data-level="3.1.1.2" data-path="1-01-02-repl.html">
<a href="1-01-02-repl.html">
The REPL
</a>
</li>
<li class="chapter " data-level="3.1.1.3" data-path="1-01-03-expressions.html">
<a href="1-01-03-expressions.html">
Expressions, Parentheses, and Return Values
</a>
</li>
<li class="chapter " data-level="3.1.1.4" data-path="1-01-04-lists-cons-cells.html">
<a href="1-01-04-lists-cons-cells.html">
Lists, Cons-Cells, and Memory
</a>
</li>
<li class="chapter " data-level="3.1.1.5" data-path="1-01-05-symbols.html">
<a href="1-01-05-symbols.html">
Symbols and Namespaces
</a>
</li>
<li class="chapter " data-level="3.1.1.6" data-path="1-01-06-prefix-notation.html">
<a href="1-01-06-prefix-notation.html">
Prefix Notation
</a>
</li>
<li class="chapter " data-level="3.1.1.7" data-path="1-01-07-style-guide.html">
<a href="1-01-07-style-guide.html">
Common Lisp Style Guide
</a>
</li>
<li class="chapter " data-level="3.1.1.8" data-path="1-01-08-configuration.html">
<a href="1-01-08-configuration.html">
Configuring Your Development Environment
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.1.2" data-path="1-02-00-input-output.html">
<a href="1-02-00-input-output.html">
Printing, Streams, and Strings
</a>
<ul class="articles">
<li class="chapter " data-level="3.1.2.1" data-path="1-02-01-strings.html">
<a href="1-02-01-strings.html">
Strings
</a>
</li>
<li class="chapter " data-level="3.1.2.2" data-path="1-02-02-more-strings.html">
<a href="1-02-02-more-strings.html">
More Strings
</a>
</li>
<li class="chapter " data-level="3.1.2.3" data-path="1-02-03-unicode.html">
<a href="1-02-03-unicode.html">
Unicode and Strings
</a>
</li>
<li class="chapter " data-level="3.1.2.4" data-path="1-02-04-chars.html">
<a href="1-02-04-chars.html">
Characters
</a>
</li>
<li class="chapter " data-level="3.1.2.5" data-path="1-02-05-more-chars.html">
<a href="1-02-05-more-chars.html">
More Characters
</a>
</li>
<li class="chapter " data-level="3.1.2.6" data-path="1-02-06-char-codes.html">
<a href="1-02-06-char-codes.html">
Character Codes
</a>
</li>
<li class="chapter " data-level="3.1.2.7" data-path="1-02-07-strings-from-chars.html">
<a href="1-02-07-strings-from-chars.html">
Strings from Chars
</a>
</li>
<li class="chapter " data-level="3.1.2.8" data-path="1-02-08-printing.html">
<a href="1-02-08-printing.html">
Printing
</a>
</li>
<li class="chapter " data-level="3.1.2.9" data-path="1-02-09-more-printing.html">
<a href="1-02-09-more-printing.html">
More Printing
</a>
</li>
<li class="chapter " data-level="3.1.2.10" data-path="1-02-10-prin1.html">
<a href="1-02-10-prin1.html">
Printing With prin1
</a>
</li>
<li class="chapter " data-level="3.1.2.11" data-path="1-02-11-princ.html">
<a href="1-02-11-princ.html">
Printing With princ
</a>
</li>
<li class="chapter " data-level="3.1.2.12" data-path="1-02-12-format.html">
<a href="1-02-12-format.html">
A Brief Introduction to Format
</a>
</li>
<li class="chapter " data-level="3.1.2.13" data-path="1-02-13-more-format.html">
<a href="1-02-13-more-format.html">
A Little Bit More on Format
</a>
</li>
<li class="chapter " data-level="3.1.2.14" data-path="1-02-14-pathnames.html">
<a href="1-02-14-pathnames.html">
Pathnames
</a>
</li>
<li class="chapter " data-level="3.1.2.15" data-path="1-02-15-streams.html">
<a href="1-02-15-streams.html">
Streams
</a>
</li>
<li class="chapter " data-level="3.1.2.16" data-path="1-02-16-file-streams.html">
<a href="1-02-16-file-streams.html">
File Streams
</a>
</li>
<li class="chapter " data-level="3.1.2.17" data-path="1-02-17-binary-streams.html">
<a href="1-02-17-binary-streams.html">
Binary Streams
</a>
</li>
<li class="chapter " data-level="3.1.2.18" data-path="1-02-18-prompting-users.html">
<a href="1-02-18-prompting-users.html">
Prompting Users
</a>
</li>
<li class="chapter " data-level="3.1.2.19" data-path="1-02-19-pretty-printing.html">
<a href="1-02-19-pretty-printing.html">
Pretty-Printing
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.1.3" data-path="1-03-0-getting-input-from-users.html">
<a href="1-03-0-getting-input-from-users.html">
Extra Credit: Getting Input from Users
</a>
</li>
<li class="chapter " data-level="3.1.4" data-path="1-04-0-lists.html">
<a href="1-04-0-lists.html">
Lists and List-Operations
</a>
</li>
<li class="chapter " data-level="3.1.5" data-path="1-05-0-lookups-trees.html">
<a href="1-05-0-lookups-trees.html">
Extra Credit: Look-up Lists and Trees
</a>
</li>
<li class="chapter " data-level="3.1.6" data-path="1-06-0-math.html">
<a href="1-06-0-math.html">
Numbers and Math
</a>
<ul class="articles">
<li class="chapter " data-level="3.1.6.1" data-path="1-06-01-integers.html">
<a href="1-06-01-integers.html">
Integers
</a>
</li>
<li class="chapter " data-level="3.1.6.2" data-path="1-06-02-more-integers.html">
<a href="1-06-02-more-integers.html">
More Integers
</a>
</li>
<li class="chapter " data-level="3.1.6.3" data-path="1-06-03-hexadecimal-notation.html">
<a href="1-06-03-hexadecimal-notation.html">
Hexadecimal Integer Notation
</a>
</li>
<li class="chapter " data-level="3.1.6.4" data-path="1-06-04-octal-notation.html">
<a href="1-06-04-octal-notation.html">
Octal Integer Notation
</a>
</li>
<li class="chapter " data-level="3.1.6.5" data-path="1-06-05-binary-notation.html">
<a href="1-06-05-binary-notation.html">
Binary Integer Notation
</a>
</li>
<li class="chapter " data-level="3.1.6.6" data-path="1-06-06-ratios.html">
<a href="1-06-06-ratios.html">
Ratios and Rational Numbers
</a>
</li>
<li class="chapter " data-level="3.1.6.7" data-path="1-06-07-floating-point.html">
<a href="1-06-07-floating-point.html">
Floating-point Numbers
</a>
</li>
<li class="chapter " data-level="3.1.6.8" data-path="1-06-08-constants.html">
<a href="1-06-08-constants.html">
Numeric Constants
</a>
</li>
<li class="chapter " data-level="3.1.6.9" data-path="1-06-09-complex-numbers.html">
<a href="1-06-09-complex-numbers.html">
Complex Numbers
</a>
</li>
<li class="chapter " data-level="3.1.6.10" data-path="1-06-10-arithmetic.html">
<a href="1-06-10-arithmetic.html">
Arithmetic
</a>
</li>
<li class="chapter " data-level="3.1.6.11" data-path="1-06-11-more-arithmetic.html">
<a href="1-06-11-more-arithmetic.html">
More Arithmetic
</a>
</li>
<li class="chapter " data-level="3.1.6.12" data-path="1-06-12-even-more-arithmetic.html">
<a href="1-06-12-even-more-arithmetic.html">
Even More Arithmetic
</a>
</li>
<li class="chapter " data-level="3.1.6.13" data-path="1-06-13-exponents.html">
<a href="1-06-13-exponents.html">
Exponents
</a>
</li>
<li class="chapter " data-level="3.1.6.14" data-path="1-06-14-logarithms.html">
<a href="1-06-14-logarithms.html">
Logarithms
</a>
</li>
<li class="chapter " data-level="3.1.6.15" data-path="1-06-15-trigonometry.html">
<a href="1-06-15-trigonometry.html">
Trigonometry
</a>
</li>
<li class="chapter " data-level="3.1.6.16" data-path="1-06-16-psuedorandom-numbers.html">
<a href="1-06-16-psuedorandom-numbers.html">
Pseudo-Random Numbers
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.1.7" data-path="1-07-0-arrays.html">
<a href="1-07-0-arrays.html">
Extra Credit: Arrays and Vectors
</a>
</li>
<li class="chapter " data-level="3.1.8" data-path="1-08-0-variables.html">
<a href="1-08-0-variables.html">
Variables, Parameters, and Constants
</a>
</li>
<li class="chapter " data-level="3.1.9" data-path="1-09-0-closures.html">
<a href="1-09-0-closures.html">
Extra Credit: Closures
</a>
</li>
<li class="chapter " data-level="3.1.10" data-path="1-10-0-functions.html">
<a href="1-10-0-functions.html">
Functions and Macros
</a>
</li>
<li class="chapter active" data-level="3.1.11" data-path="1-11-0-text-adventure.html">
<a href="1-11-0-text-adventure.html">
Extra Credit: A Simple Text Adventure
</a>
</li>
<li class="chapter " data-level="3.1.12" data-path="1-12-0-namespaces.html">
<a href="1-12-0-namespaces.html">
Namespaces, Symbols, Packages, and Systems
</a>
</li>
<li class="chapter " data-level="3.1.13" data-path="1-13-0-simple-web-app.html">
<a href="1-13-0-simple-web-app.html">
Extra Credit: A Simple Web Application
</a>
</li>
<li class="chapter " data-level="3.1.14" data-path="1-14-0-conditionals.html">
<a href="1-14-0-conditionals.html">
Conditionals
</a>
</li>
<li class="chapter " data-level="3.1.15" data-path="1-15-0-command-line-utility.html">
<a href="1-15-0-command-line-utility.html">
Extra Credit: Command-Line Utilities
</a>
</li>
<li class="chapter " data-level="3.1.16" data-path="1-16-0-map-loop.html">
<a href="1-16-0-map-loop.html">
Mapping and Looping
</a>
</li>
<li class="chapter " data-level="3.1.17" data-path="1-17-0-iterate.html">
<a href="1-17-0-iterate.html">
Extra Credit: Revisiting Loops with Iterate
</a>
</li>
<li class="chapter " data-level="3.1.18" data-path="1-18-0-format.html">
<a href="1-18-0-format.html">
Format Strings
</a>
</li>
<li class="chapter " data-level="3.1.19" data-path="1-19-0-dsl.html">
<a href="1-19-0-dsl.html">
Extra Credit: Domain Specific Languages
</a>
</li>
<li class="chapter " data-level="3.1.20" data-path="1-20-0-review.html">
<a href="1-20-0-review.html">
Part One in Review
</a>
</li>
</ul>
</li>
<li class="header">PART TWO</li>
<li class="chapter " data-level="4.1" data-path="2-0-0-overview.html">
<a href="2-0-0-overview.html">
The Suffusion of Blue
</a>
<ul class="articles">
<li class="chapter " data-level="4.1.1" data-path="2-01-0-programming-paradigms.html">
<a href="2-01-0-programming-paradigms.html">
Programming Paradigms
</a>
</li>
<li class="chapter " data-level="4.1.2" data-path="2-02-0-regex.html">
<a href="2-02-0-regex.html">
Extra Credit: Regular Expressions
</a>
</li>
<li class="chapter " data-level="4.1.3" data-path="2-03-0-objects-control.html">
<a href="2-03-0-objects-control.html">
Objects and Control Structures
</a>
</li>
<li class="chapter " data-level="4.1.4" data-path="2-04-0-data-persistence.html">
<a href="2-04-0-data-persistence.html">
Extra Credit: Persistence and Databases
</a>
</li>
<li class="chapter " data-level="4.1.5" data-path="2-05-0-extended-types.html">
<a href="2-05-0-extended-types.html">
Extended Types
</a>
</li>
<li class="chapter " data-level="4.1.6" data-path="2-06-0-threads-memos-parallel.html">
<a href="2-06-0-threads-memos-parallel.html">
Extra Credit: Concurrency and Memoization
</a>
</li>
<li class="chapter " data-level="4.1.7" data-path="2-07-0-logic-and-more-math.html">
<a href="2-07-0-logic-and-more-math.html">
Logic and Advanced Math
</a>
</li>
<li class="chapter " data-level="4.1.8" data-path="2-08-0-number-theory.html">
<a href="2-08-0-number-theory.html">
Extra Credit: Number Theory
</a>
</li>
<li class="chapter " data-level="4.1.9" data-path="2-09-0-binary-octets-bits.html">
<a href="2-09-0-binary-octets-bits.html">
Binary Streams, Octet-Vectors, and Bit-Vectors
</a>
</li>
<li class="chapter " data-level="4.1.10" data-path="2-10-0-improved-text-adventure-engine.html">
<a href="2-10-0-improved-text-adventure-engine.html">
Extra Credit: An Improved Text Adventure Engine
</a>
</li>
<li class="chapter " data-level="4.1.11" data-path="2-11-0-conditions.html">
<a href="2-11-0-conditions.html">
Conditions and Error Handling
</a>
</li>
<li class="chapter " data-level="4.1.12" data-path="2-12-0-2d-game.html">
<a href="2-12-0-2d-game.html">
Extra Credit: Write a 2D Game
</a>
</li>
<li class="chapter " data-level="4.1.13" data-path="2-13-0-compiler.html">
<a href="2-13-0-compiler.html">
The Compiler
</a>
</li>
<li class="chapter " data-level="4.1.14" data-path="2-14-0-tree-shaker.html">
<a href="2-14-0-tree-shaker.html">
Extra Credit: Write a Tree-Shaker
</a>
</li>
<li class="chapter " data-level="4.1.15" data-path="2-15-0-docs-and-inspection.html">
<a href="2-15-0-docs-and-inspection.html">
Documentation and Inspection
</a>
</li>
<li class="chapter " data-level="4.1.16" data-path="2-16-0-foreign-libs.html">
<a href="2-16-0-foreign-libs.html">
Extra Credit: Foreign Libraries in Lisp
</a>
</li>
<li class="chapter " data-level="4.1.17" data-path="2-17-0-debugging-testing.html">
<a href="2-17-0-debugging-testing.html">
Debugging and Unit Testing
</a>
</li>
<li class="chapter " data-level="4.1.18" data-path="2-18-0-ffi.html">
<a href="2-18-0-ffi.html">
Extra Credit: Write a Foreign Function Interface
</a>
</li>
<li class="chapter " data-level="4.1.19" data-path="2-19-0-essential-libs.html">
<a href="2-19-0-essential-libs.html">
Essential Lisp Libraries
</a>
</li>
<li class="chapter " data-level="4.1.20" data-path="2-20-0-packaging-libs.html">
<a href="2-20-0-packaging-libs.html">
Extra Credit: Packaging Lisp Libraries
</a>
</li>
<li class="chapter " data-level="4.1.21" data-path="2-21-0-review.html">
<a href="2-21-0-review.html">
Detailed Syntax Review
</a>
</li>
</ul>
</li>
<li class="header">PART THREE</li>
<li class="chapter " data-level="5.1" data-path="3-00-00-overview.html">
<a href="3-00-00-overview.html">
Lisp So(u)rcery
</a>
<ul class="articles">
<li class="chapter " data-level="5.1.1" data-path="3-01-00-web-apps.html">
<a href="3-01-00-web-apps.html">
Real-world Web Apps
</a>
</li>
<li class="chapter " data-level="5.1.2" data-path="3-02-00-typesetting.html">
<a href="3-02-00-typesetting.html">
Typesetting
</a>
</li>
<li class="chapter " data-level="5.1.3" data-path="3-03-00-mobile.html">
<a href="3-03-00-mobile.html">
Native Mobile Applications
</a>
</li>
<li class="chapter " data-level="5.1.4" data-path="3-04-00-gui.html">
<a href="3-04-00-gui.html">
Cross-platform Desktop Applications
</a>
</li>
<li class="chapter " data-level="5.1.5" data-path="3-05-00-system-utils.html">
<a href="3-05-00-system-utils.html">
Drivers, Daemons, and System-Utilities
</a>
</li>
<li class="chapter " data-level="5.1.6" data-path="3-06-00-reverse-engineering.html">
<a href="3-06-00-reverse-engineering.html">
Reverse Engineering
</a>
</li>
<li class="chapter " data-level="5.1.7" data-path="3-07-00-graphics.html">
<a href="3-07-00-graphics.html">
Graphics Rendering
</a>
</li>
<li class="chapter " data-level="5.1.8" data-path="3-08-00-gaming.html">
<a href="3-08-00-gaming.html">
OpenGL, SDL, and 3D Game Development
</a>
</li>
<li class="chapter " data-level="5.1.9" data-path="3-09-00-audio.html">
<a href="3-09-00-audio.html">
Audio Generation and Manipulation
</a>
</li>
<li class="chapter " data-level="5.1.10" data-path="3-10-00-data.html">
<a href="3-10-00-data.html">
Data Aggregation and Analysis
</a>
</li>
<li class="chapter " data-level="5.1.11" data-path="3-11-00-cryptosec.html">
<a href="3-11-00-cryptosec.html">
Cryptography and Security
</a>
</li>
<li class="chapter " data-level="5.1.12" data-path="3-12-00-fintech.html">
<a href="3-12-00-fintech.html">
Financial Software and Crypto-Currencies
</a>
</li>
<li class="chapter " data-level="5.1.13" data-path="3-13-00-scientific-computing.html">
<a href="3-13-00-scientific-computing.html">
Scientific Computing
</a>
</li>
<li class="chapter " data-level="5.1.14" data-path="3-14-00-computational-physics.html">
<a href="3-14-00-computational-physics.html">
Computational Physics
</a>
</li>
<li class="chapter " data-level="5.1.15" data-path="3-15-00-quantum-computing.html">
<a href="3-15-00-quantum-computing.html">
Quantum Computing
</a>
</li>
<li class="chapter " data-level="5.1.16" data-path="3-16-00-nlp.html">
<a href="3-16-00-nlp.html">
Natural Language Processing
</a>
</li>
<li class="chapter " data-level="5.1.17" data-path="3-17-00-ai.html">
<a href="3-17-00-ai.html">
Artificial Intelligence
</a>
</li>
<li class="chapter " data-level="5.1.18" data-path="3-18-00-robotics.html">
<a href="3-18-00-robotics.html">
Robotics
</a>
</li>
<li class="chapter " data-level="5.1.19" data-path="3-19-00-space-tech.html">
<a href="3-19-00-space-tech.html">
Space Tech
</a>
</li>
<li class="chapter " data-level="5.1.20" data-path="3-20-00-neurotech.html">
<a href="3-20-00-neurotech.html">
Neuroscience and Thought-Controlled Computing
</a>
</li>
<li class="chapter " data-level="5.1.21" data-path="3-21-00-lispos.html">
<a href="3-21-00-lispos.html">
A Simple LispOS
</a>
</li>
<li class="chapter " data-level="5.1.22" data-path="3-22-00-lisp-machine.html">
<a href="3-22-00-lisp-machine.html">
Build Your Own Lisp Machine
</a>
</li>
<li class="chapter " data-level="5.1.23" data-path="3-23-00-gov-mil.html">
<a href="3-23-00-gov-mil.html">
Government and Military Grade Systems
</a>
</li>
</ul>
</li>
<li class="divider"></li>
<li>
<a href="https://www.gitbook.com" target="blank" class="gitbook-link">
Published with GitBook
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href="index.html" >Extra Credit: A Simple Text Adventure</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="chapter-111-----extra-credit">Chapter 1.11 --- Extra Credit</h1>
<h2 id="a-simple-text-adventure">A Simple Text Adventure</h2>
<blockquote>
<p>&quot;Morals&#x2014;all correct moral laws&#x2014;derive from the instinct to survive. Moral behavior is survival behavior above the individual level.&quot;</p>
<footer>Robert A. Heinlein, <em>Starship Troopers</em></footer>
</blockquote>
<p>Now that you&apos;re about half-way through Part One, it&apos;s time to have a little fun and write a game. You now know how to write your own functions to extend the Lisp language, write macros that expand into the code you need at compile-time, store your data in variables, prompt your users for input, and do some fun stuff with math and strings---so now it&apos;s time to put it all together to write a classic console text-based Adventure game that you can share with your friends, family, and other L(&#x3BB;)THW students.</p>
<p>A really important aspect of this chapter is to write a game of your very own---but first you need to understand the steps required to write a game of any kind. As such, you&apos;ll have to go through this chapter at least twice---the first time, follow along with me and implement the game exactly as I have, and stick to the five steps of the Hard Way methodology as normal; the second time, replace my game&apos;s theme, story, characters, and world with your own, and get creative with the code---experiment, innovate, and don&apos;t be afraid to break the program, take this as an opportunity to practice your debugging skills too.</p>
<p>Once you&apos;re done working through this chapter for the second time and you get your own unique game to run, and you can play through it from beginning to end, feel free to create a repo or gist and share it in the comments below. But remember, no cheating! Make sure you&apos;ve gone through this chapter at least twice, and successfully played through your own game, before you poke around through other people&apos;s code for ideas.</p>
<div class="alert alert-info">
<strong>Note:</strong>
<p>This chapter will guide you through writing a straightforward, hard-coded game; in other words, it will have to be recompiled every time you make a change to the source. This doesn&apos;t necessarily represent best practices for game development. In Parts Two and Three, alternate implementations of game engines will be presented that will load game resources on the fly from your computer&apos;s file system, so that you only have to re-compile the game when you change the program logic, and not the game content.
</p></div>
<p>This chapter will contain exercises on:</p>
<ul>
<li>ASCII-art and Text Adventure Aesthetics</li>
<li>Building your game interface</li>
<li>Your game&apos;s theme, story, and characters</li>
<li>Your game&apos;s world</li>
<li>Movement through the game world</li>
<li>Interacting with the game world</li>
<li>Collecting and using items in the game world</li>
<li>Non-player Characters</li>
<li>Quick and Dirty AI enemies</li>
<li>Packaging and Running your game</li>
</ul>
<h3 id="exercise-1111">Exercise 1.11.1</h3>
<p><strong>ASCII-Art and ANSI Escape Codes</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-1112">Exercise 1.11.2</h3>
<p><strong>The Game Interface</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-1113">Exercise 1.11.3</h3>
<p><strong>Theme, Story, and Characters</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-1114">Exercise 1.11.4</h3>
<p><strong>The Game World</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-1115">Exercise 1.11.5</h3>
<p><strong>Movement in the Game World</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-1116">Exercise 1.11.6</h3>
<p><strong>Interacting with the Game World</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-1117">Exercise 1.11.7</h3>
<p><strong>Collecting and Using Items in the Game World</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-1118">Exercise 1.11.8</h3>
<p><strong>Non-Player Characters</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-1119">Exercise 1.11.9</h3>
<p><strong>Quick and Dirty AI Enemies</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-11110">Exercise 1.11.10</h3>
<p><strong>Packaging and Running Your Game</strong></p>
<pre><code class="lang-lisp">
</code></pre>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="1-10-0-functions.html" class="navigation navigation-prev " aria-label="Previous page: Functions and Macros">
<i class="fa fa-angle-left"></i>
</a>
<a href="1-12-0-namespaces.html" class="navigation navigation-next " aria-label="Next page: Namespaces, Symbols, Packages, and Systems">
<i class="fa fa-angle-right"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"Extra Credit: A Simple Text Adventure","level":"3.1.11","depth":2,"next":{"title":"Namespaces, Symbols, Packages, and Systems","level":"3.1.12","depth":2,"path":"1-12-0-namespaces.md","ref":"./1-12-0-namespaces.md","articles":[]},"previous":{"title":"Functions and Macros","level":"3.1.10","depth":2,"path":"1-10-0-functions.md","ref":"./1-10-0-functions.md","articles":[]},"dir":"ltr"},"config":{"plugins":["hints","folding-chapters"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"hints":{"danger":"fa fa-exclamation-circle","info":"fa fa-info-circle","tip":"fa fa-mortar-board","working":"fa fa-wrench"},"folding-chapters":{},"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"\"the Phoeron\" Colin J.E. Lupton","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"index.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Learn Lisp The Hard Way","gitbook":"*"},"file":{"path":"1-11-0-text-adventure.md","mtime":"2022-08-22T22:47:49.767Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2022-08-24T16:15:01.957Z"},"basePath":".","book":{"language":""}});
});
</script>
</div>
<script src="gitbook/gitbook.js"></script>
<script src="gitbook/theme.js"></script>
<script src="gitbook/gitbook-plugin-folding-chapters/folding-chapters.js"></script>
<script src="gitbook/gitbook-plugin-search/search-engine.js"></script>
<script src="gitbook/gitbook-plugin-search/search.js"></script>
<script src="gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
<script src="gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
<script src="gitbook/gitbook-plugin-sharing/buttons.js"></script>
<script src="gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>