GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - coding-horror/basic-computer-games: An updated version of the classic "Basic Computer Games" book, with well-written examples in a variety of common MEMORY SAFE, SCRIPTING programming languages. See https://coding-horror.github.io/basic-computer-games/

BranchesTags
Open more actions menu

Latest commit

 

History

3,044 Commits
3,044 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
00_Alternate_Languages
00_Alternate_Languages
 
 
00_Common
00_Common
 
 
00_Utilities
00_Utilities
 
 
01_Acey_Ducey
01_Acey_Ducey
 
 
02_Amazing
02_Amazing
 
 
03_Animal
03_Animal
 
 
04_Awari
04_Awari
 
 
05_Bagels
05_Bagels
 
 
06_Banner
06_Banner
 
 
07_Basketball
07_Basketball
 
 
08_Batnum
08_Batnum
 
 
09_Battle
09_Battle
 
 
10_Blackjack
10_Blackjack
 
 
11_Bombardment
11_Bombardment
 
 
12_Bombs_Away
12_Bombs_Away
 
 
13_Bounce
13_Bounce
 
 
14_Bowling
14_Bowling
 
 
15_Boxing
15_Boxing
 
 
16_Bug
16_Bug
 
 
17_Bullfight
17_Bullfight
 
 
18_Bullseye
18_Bullseye
 
 
19_Bunny
19_Bunny
 
 
20_Buzzword
20_Buzzword
 
 
21_Calendar
21_Calendar
 
 
22_Change
22_Change
 
 
23_Checkers
23_Checkers
 
 
24_Chemist
24_Chemist
 
 
25_Chief
25_Chief
 
 
26_Chomp
26_Chomp
 
 
27_Civil_War
27_Civil_War
 
 
28_Combat
28_Combat
 
 
29_Craps
29_Craps
 
 
30_Cube
30_Cube
 
 
31_Depth_Charge
31_Depth_Charge
 
 
32_Diamond
32_Diamond
 
 
33_Dice
33_Dice
 
 
34_Digits
34_Digits
 
 
35_Even_Wins
35_Even_Wins
 
 
36_Flip_Flop
36_Flip_Flop
 
 
37_Football
37_Football
 
 
38_Fur_Trader
38_Fur_Trader
 
 
39_Golf
39_Golf
 
 
40_Gomoko
40_Gomoko
 
 
41_Guess
41_Guess
 
 
42_Gunner
42_Gunner
 
 
43_Hammurabi
43_Hammurabi
 
 
44_Hangman
44_Hangman
 
 
45_Hello
45_Hello
 
 
46_Hexapawn
46_Hexapawn
 
 
47_Hi-Lo
47_Hi-Lo
 
 
48_High_IQ
48_High_IQ
 
 
49_Hockey
49_Hockey
 
 
50_Horserace
50_Horserace
 
 
51_Hurkle
51_Hurkle
 
 
52_Kinema
52_Kinema
 
 
53_King
53_King
 
 
54_Letter
54_Letter
 
 
55_Life
55_Life
 
 
56_Life_for_Two
56_Life_for_Two
 
 
57_Literature_Quiz
57_Literature_Quiz
 
 
58_Love
58_Love
 
 
59_Lunar_LEM_Rocket
59_Lunar_LEM_Rocket
 
 
60_Mastermind
60_Mastermind
 
 
61_Math_Dice
61_Math_Dice
 
 
62_Mugwump
62_Mugwump
 
 
63_Name
63_Name
 
 
64_Nicomachus
64_Nicomachus
 
 
65_Nim
65_Nim
 
 
66_Number
66_Number
 
 
67_One_Check
67_One_Check
 
 
68_Orbit
68_Orbit
 
 
69_Pizza
69_Pizza
 
 
70_Poetry
70_Poetry
 
 
71_Poker
71_Poker
 
 
72_Queen
72_Queen
 
 
73_Reverse
73_Reverse
 
 
74_Rock_Scissors_Paper
74_Rock_Scissors_Paper
 
 
75_Roulette
75_Roulette
 
 
76_Russian_Roulette
76_Russian_Roulette
 
 
77_Salvo
77_Salvo
 
 
78_Sine_Wave
78_Sine_Wave
 
 
79_Slalom
79_Slalom
 
 
80_Slots
80_Slots
 
 
81_Splat
81_Splat
 
 
82_Stars
82_Stars
 
 
83_Stock_Market
83_Stock_Market
 
 
84_Super_Star_Trek
84_Super_Star_Trek
 
 
85_Synonym
85_Synonym
 
 
86_Target
86_Target
 
 
87_3-D_Plot
87_3-D_Plot
 
 
88_3-D_Tic-Tac-Toe
88_3-D_Tic-Tac-Toe
 
 
89_Tic-Tac-Toe
89_Tic-Tac-Toe
 
 
90_Tower
90_Tower
 
 
91_Train
91_Train
 
 
92_Trap
92_Trap
 
 
93_23_Matches
93_23_Matches
 
 
94_War
94_War
 
 
95_Weekday
95_Weekday
 
 
96_Word
96_Word
 
 

Repository files navigation

What are we doing?

We’re updating the first million selling computer book, BASIC Computer Games, for 2022 and beyond!

  • Read the original book (pdf)
  • Play the original games in your browser

Where can we discuss it?

Please see the discussion here for a worklog and conversation around this project.

Project structure

I have moved all the original BASIC source code into a folder for each project in the original book (first volume). Note that Lyle Kopnicky has generously normalized all the code (thanks Lyle!) to run against Vintage Basic circa 2009:

I’ve included all the games here for your tinkering pleasure. I’ve tested and tweaked each one of them to make sure they’ll run with Vintage BASIC, though you may see a few oddities. That’s part of the fun of playing with BASIC: it never works quite the same on two machines. The games will play better if you keep CAPS LOCK on, as they were designed to be used with capital-letter input.

Each project has subfolders corresponding to the languages we’d like to see the games ported to. This is based on the 2022 TIOBE index of top languages that are memory safe and general purpose scripting languages per this post:

  1. C#
  2. Java
  3. JavaScript
  4. Kotlin
  5. Lua
  6. Perl
  7. Python
  8. Ruby
  9. Rust
  10. VB.NET

📢 Note that in March 2022 we removed Pascal / Object Pascal and replaced it with Rust as we couldn’t determine if Pascal is effectively memory safe. We’ve also added Lua, as it made the top 20 in TIOBE (as of 2022) and it is both memory safe and a scripting language. The Pascal ports were moved to the alternate languages folder.

⚠️ Please note that we have decided, as a project, that we do not want any IDE-specific or build-specific files in the repository. Please refrain from committing any files to the repository that only exist to work with a specific IDE or a specific build system.

Alternate Languages

If you wish to port one of the programs to a language not in our list – that is, a language which is either not memory safe, or not a general purpose scripting language, you can do so via the 00_Alternate_Languages folder. Place your port in the appropriate game subfolder, in a subfolder named for the language. Please note that these ports are appreciated, but they will not count toward the donation total at the end of the project.

Project goals

Feel free to begin converting these classic games into the above list of modern, memory safe languages. In fact, courtesy of @mojoaxel, you can even view the JavaScript versions in your web browser at

https://coding-horror.github.io/basic-computer-games/

But first, a few guidelines:

  • These are very old games. They date from the mid-70s so they’re not exactly examples of what kids (or anyone, really?) would be playing these days. Consider them more like classic programming exercises to teach programming. We’re paying it forward by converting them into modern languages, so the next generation can learn from the programs in this classic book – and compare implementations across common modern languages.

  • Stay true to the original program. These are mostly unsophisticated, simple command line / console games, so we should strive to replicate the command line / console output and behavior illustrated in the original book. See the README in the project folder for links to the original scanned source input and output. Try running the game in your browser. Avoid the impulse to add features; keep it simple, except for modern conventions, see next item 👇

  • Please DO update for modern coding conventions. Support uppercase and lowercase. Use structured programming. Use subroutines. Try to be an example of good, modern coding practices!

  • Use lots of comments to explain what is going on. Comment liberally! If there were clever tricks in the original code, decompose those tricks into simpler (even if more verbose) code, and use comments to explain what’s happening and why. If there is something particularly tricky about a program, edit the Porting Notes section of the readme.md to let everyone know. Those GOTOs can be very pesky..

  • Please don’t get too fancy. Definitely use the most recent versions and features of the target language, but also try to keep the code samples simple and explainable – the goal is to teach programming in the target language, not necessarily demonstrate the cleverest one-line tricks, or big system "enterprise" coding techniques designed for thousands of lines of code.

  • Please don't check in any build specific or IDE specific files. We want the repository to be simple and clean, so we have ruled out including any IDE or build system specific files from the repository. Git related files are OK, as we are using Git and this is GitHub. 😉

Emulation and Bugfixes

We want the general behavior of the original programs to be preserved, however, we also want to update them, specifically:

  • allow both UPPERCASE and lowercase input and display
  • incorporate any bugfixes to the original programs; see the readme.md in the game folder
  • improved error handling for bad or erroneous input

Please note that on the back of the Basic Computer Games book it says Microsoft 8K Basic, Rev 4.0 was the version David Ahl used to test, so that is the level of compatibility we are looking for.  QBasic on the DOS emulation is a later version of Basic but one that retains downwards compatibility so far in our testing. To verify behavior, try running the programs in your browser with JS BASIC, effectively Applesoft BASIC.

Have fun

Thank you for taking part in this project to update a classic programming book – one of the most influential programming books in computing history – for 2022 and beyond!

NOTE: per the official blog post announcement, I will be donating $5 for each contributed program in the 10 agreed upon languages to Girls Who Code.

Current Progress

toggle for game by language table
Name csharp java javascript kotlin lua perl python ruby rust vbnet
01_Acey_Ducey x x x x x x x x x x
02_Amazing x x x x x x x x
03_Animal x x x x x x x x x x
04_Awari x x x x x x x x
05_Bagels x x x x x x x x x x
06_Banner x x x x x x x x
07_Basketball x x x x x x x x
08_Batnum x x x x x x x x
09_Battle x x x x x x
10_Blackjack x x x x x x x
11_Bombardment x x x x x x x x
12_Bombs_Away x x x x x x x x
13_Bounce x x x x x x x x
14_Bowling x x x x x x x
15_Boxing x x x x x x
16_Bug x x x x x x
17_Bullfight x x x x x x
18_Bullseye x x x x x x x
19_Bunny x x x x x x x x
20_Buzzword x x x x x x x x x
21_Calendar x x x x x x x x
22_Change x x x x x x x
23_Checkers x x x x x x
24_Chemist x x x x x x x
25_Chief x x x x x x x x x
26_Chomp x x x x x x
27_Civil_War x x x x x
28_Combat x x x x x x
29_Craps x x x x x x x x x
30_Cube x x x x x x x
31_Depth_Charge x x x x x x x x
32_Diamond x x x x x x x x x
33_Dice x x x x x x x x x
34_Digits x x x x x x
35_Even_Wins x x x x x x
36_Flip_Flop x x x x x x x x
37_Football x x x x
38_Fur_Trader x x x x x x
39_Golf x x x x
40_Gomoko x x x x x x
41_Guess x x x x x x x x
42_Gunner x x x x x x
43_Hammurabi x x x x x x
44_Hangman x x x x x x x
45_Hello x x x x x x x x x
46_Hexapawn x x x
47_Hi-Lo x x x x x x x x x
48_High_IQ x x x x x
49_Hockey x x x x
50_Horserace x x x x x
51_Hurkle x x x x x x x x
52_Kinema x x x x x x x x
53_King x x x x x
54_Letter x x x x x x x x
55_Life x x x x x x x x
56_Life_for_Two x x x x x x
57_Literature_Quiz x x x x x x x
58_Love x x x x x x x x
59_Lunar_LEM_Rocket x x x x x
60_Mastermind x x x x x x x
61_Math_Dice x x x x x x x x
62_Mugwump x x x x x x x
63_Name x x x x x x x x x
64_Nicomachus x x x x x x x
65_Nim x x x x x x
66_Number x x x x x x x
67_One_Check x x x x x x
68_Orbit x x x x x x x x
69_Pizza x x x x x x x x
70_Poetry x x x x x x x
71_Poker x x x x
72_Queen x x x x x x
73_Reverse x x x x x x x x
74_Rock_Scissors_Paper x x x x x x x x x
75_Roulette x x x x x x x
76_Russian_Roulette x x x x x x x x x
77_Salvo x x x x x
78_Sine_Wave x x x x x x x x x
79_Slalom x x x x
80_Slots x x x x x x x
81_Splat x x x x x x x
82_Stars x x x x x x x x
83_Stock_Market x x x x x
84_Super_Star_Trek x x x x x x
85_Synonym x x x x x x x x
86_Target x x x x x x
87_3-D_Plot x x x x x x x x
88_3-D_Tic-Tac-Toe x x x x
89_Tic-Tac-Toe x x x x x x x x
90_Tower x x x x x x x
91_Train x x x x x x x x
92_Trap x x x x x x x x
93_23_Matches x x x x x x x x
94_War x x x x x x x x x
95_Weekday x x x x x x x
96_Word x x x x x x x x

About

An updated version of the classic "Basic Computer Games" book, with well-written examples in a variety of common MEMORY SAFE, SCRIPTING programming languages. See https://coding-horror.github.io/basic-computer-games/

Topics

basicbasic-computer-gamesclassic-game

Resources

Readme
Unlicense
Activity

Stars

11.1k stars

Watchers

162 watching

Forks

1.3k forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.