basic-computer-games README

The project's README from github.com/coding-horror/basic-computer-games. As one markdown file: README.md.

What are we doing?

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

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:

Emulation and Bugfixes

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

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

basic-computer-games (coding-horror/basic-computer-games)

Searching Database…

这是什么?这是一个项目,把经典图书《BASIC Computer Games》(1978年出版)中的每个游戏都移植到现代、内存安全的编程语言中,方便大家通过对比不同的实现来学习编程。
这是一个库,还是只是一批游戏移植版本的合集?它是一个合集/索引:原始的约96个BASIC游戏各自有一个文件夹,里面最多包含10种语言的移植版本,而不是单个可直接运行的应用或框架。
我要怎么运行其中一个游戏?进入某个游戏的文件夹,选择你想要的语言子文件夹,然后用该语言的常规工具链运行(例如 python、dotnet、cargo);部分移植版本还可以直接在浏览器中玩。
试玩游戏前需要安装什么特别的东西吗?只需要你所选语言移植版本对应的运行时或编译器(Python、C#、Java、Rust 等);仓库本身没有共享的构建系统,也没有其他依赖。
所有游戏都移植到了每种语言吗?没有,覆盖范围并不均衡:C#、Java、JavaScript、Python 和 VB.NET 基本完整,而 Kotlin 和 Lua 等语言根据进度表只完成了少数几个移植。
这是原生应用,还是在浏览器中查看的内容?没有统一的应用平台:它是需要在本地按语言运行的源代码,不过 JavaScript 移植版本也可以直接在浏览器中玩。
官方移植选择了哪10种语言?C#、Java、JavaScript、Kotlin、Lua、Perl、Python、Ruby、Rust 和 VB.NET,依据2022年 TIOBE 指数,选自最主流的内存安全通用脚本语言。
为什么 Pascal 被移出了语言列表?Pascal/Object Pascal 于2022年3月被移除,因为维护者无法确认它实际上是内存安全的,于是改由 Rust 取代其位置。
Size
76.6 MB
Stars
11.1K
Updated
CommitFeb 15
Age
5y
Commits · 90 Days