10 ms·
Updating “101 Basic Computer Games” for 2021
- buescher 6y agoI love the methodology bikeshedding. If it were 1999, they'd be diagramming Super Star Trek in Rational Rose.
- HenryBemis 6y ago"Rational Rose" now here are two words I haven't seen or heard since 2001!!
- stevenwoo 6y agoYou reminded me of something I used about 30 years ago. https://en.wikipedia.org/wiki/Rational_R1000 https://en.wikipedia.org/wiki/Rational_R1000
- PostOnce 6y agoWow, that sent me on a goose chase. That thing is cool. Wikipedia linked to here: http://datamuseum.dk/wiki/Rational/R1000s400/Logbook#2019-10-29 http://datamuseum.dk/wiki/Rational/R1000s400/Logbook#2019-10... and there it says: --- The Ada language was originally designed for embedded systems, in particular for embedded systems in, around and in control of military weapons, and it dates back where state-of-the-art in radiation-hardened microcomputers was the RCA1802 and a few kilobytes of ROM and RAM was the norm, so being parsimonious with memory space is deeply embedded in the genes of Ada. For instance, when you define: subtype MISSILE_NUMBER is INTEGER range 1 .. 8; The Ada compiler will know that only three bits will be needed to store that type. And five bits saved here and four bits saved there, it adds up. The R1000 is a true-blooded Ada computer, so the fundamental unit of addressing is a bit, and just because your field may happen to be 16 bits wide, does not mean that it is going to be aligned at a 16-bit boundary. (There is a notable exception: Instructions are 16 bit wide and must be aligned to 16 bit boundaries.) --- Now, my friend told me that usually it'll align at 8 or 32 nowadays, but still, this is fascinating. I don't know if any other languages do that because I don't work on embedded stuff which might be the only place its done now if at all? Fascinating enough that I'm reading about it when I should be working!
- buescher 6y agoOddly, that was the only year I ever touched Rational Rose, and I don't put it on my resume. I guess I could have been somewhat more accurate by saying "If this were 2006, they'd be diagramming Super Star Trek in UML" but I thought the other phrasing was funnier.
- fractallyte 6y agoCan we have new illustrations by George Beker too? Those books just wouldn't be the same without Beker's whimsical pictures! http://www.bekerbots.com/ http://www.bekerbots.com/
- JKCalhoun 6y agoI appreciate his art now. At the time it was a prime example of the art over-promising and the game under-delivering. ;-)
- koalahedron 6y agoThanks for reminding me of these wonderful illustrations. Your comment made my day! They were an essential part of the book, for engaging your imagination. They were also a gateway to books like Heiserman's "How to build your own self-programming robot": https://archive.org/details/howtobuildyourow01heis/page/n5/mode/2up https://archive.org/details/howtobuildyourow01heis/page/n5/m...
- amelius 6y agoCan we have a sub-$100 computer with built-in screen and keyboard to go with it?
- UncleSlacky 6y agoThe Raspberry Pi 400 is almost there. You wouldn't always get a VDU with a micro back in the day, either, so it's pretty close to what many of us had. Plugs into a TV, so it's a very similar experience.
- amelius 6y agoMany people have huge TVs these days, not very suitable for hobby computing. Also, people don't want a mess of cables in their homes these days. Giving a kid a console without screen is not a good idea, because their parents will not like the cables, and the kid would just grab the iPad because of its superior UX. So I really think a home-computer should have a built-in screen.
- simonh 6y agoFor some people it'll be fine, they either have an old TV or spare screen or can get one inexpensively, for others it would be a pain and a laptop or whatever would be better. There are laptop kits for the Pi as well.
- m463 6y agoI think smaller tvs with HDMI are relatively easy to come by. people get a >50" for < $300 and get rid of the old one.
- dragonwriter 6y ago> Many people have huge TVs these days, not very suitable for hobby computing. With either a wireless keyboard or a long HDMI cable, a huge TV is great for hobby computing. Why would a huge TV be a bad thing for this use?
- dunnevens 6y ago
- xNeil 6y agoI really, really wanted to learn BASIC, just for fun. Any idea how I might do it? Which BASIC should I use? What software do I need to run BASIC? Any help is really, really appreciated.
- _joel 6y agoYou could get an emulator for whichever micro you wanted to try out. BASIC is still alive and well also, https://www.qb64.org/portal/ https://www.qb64.org/portal/
- xNeil 6y agoSeems cool, thank you!
- bikenaga 6y agoIf you want a modern IDE, you could try gambas: http://gambas.sourceforge.net/en/main.html http://gambas.sourceforge.net/en/main.html
- xNeil 6y agoSeems nice, thank you!
- buescher 6y agoWhatever comes with FreeDOS should give you some of the flavor of the era without the quirks of emulators.
- xNeil 6y agoJust checked it out, thank you!
- fuball63 6y agoI've always wanted to try out FreeBasic: https://www.freebasic.net/ https://www.freebasic.net/
- fuball63 6y agoI've been thinking about BASIC a lot, as I've been looking for "the easiest programming language for a non-programmer to learn". I'm not exactly sure that rewriting these in Python/Ruby/JS/VB.NET using "better coding patterns", because a lot of the things programmers take for granted are really tough for complete newcomers. Examples: - I remember when I started, using BlitzBasic, I had a really hard time understanding the concept of arrays. - A friend of mine, when showing him the statement 'x = x + 1' was confused; surely, x cannot also equal x+1. - When teaching Python, the concept of function parameters and variable scope is always a struggle. To some degree, having spaghetti code and all globals is useful for teaching because it 1) gets people excited to program and see something working and 2) demonstrates why you don't want to do those things. I remember when trying to write my first text based CYOA game, I was so excited to add content to it and see it on screen, but also learned very quickly that having to scroll through 20 pages of if statements was not fun, and why functions would help. I'm not sure if someone explaining "encapsulation" to me would have really taken root. I think there should be a rewrite of the book, for modern languages and development environments, but keep the complexity extremely low, like 70's BASIC was intended. EDIT: Just looked at https://github.com/coding-horror/basic-computer-games/blob/main/43%20Hammurabi/python/hamurabi.py https://github.com/coding-horror/basic-computer-games/blob/m... , it actually looks like a pretty good blend of original but with mild improvements.
- krisgee 6y ago>- A friend of mine, when showing him the statement 'x = x + 1' was confused; surely, x cannot also equal x+1. I think the best thing that my CS 101 prof did was always refer to the assignment operator as "gets" so you'd say "eks gets eks plus one" out loud. It really helped divorce assignment and equality in my mind.
- fuball63 6y agoAnother helpful thing is how many programming languages have "assignment" and "comparison" operators. I remember TI basic has "=" for comparison, and "<-" for assignment, like, 'A<-5'. That one, to me made, the most sense. "Put the value of 5 in something called A."
- macjohnmcc 6y agoI thought that one of those book covers looked familiar so I went over to my vintage computer books shelf and found the "more" edition. I think it's a 10th printing and in nearly perfect condition. Not sure I could handle typing in all of that code from the book like I did back in the 80's due to aging eyes but the book is very nostalgic for me.
- koalahedron 6y agoI typed in a lot of these in the late '70s, it was "learning Basic the hard way" to get them to run. My access to computers was limited, so I read them more than used them at a computer. I later bought: http://www.trs-80.org/trs-80-programs-32-basic-programs-for-the-trs-80-level-ii-computer/ http://www.trs-80.org/trs-80-programs-32-basic-programs-for-... I really liked "The Flying Walloons", simple as it was. Here's one I never saw but would have been fun, I think: http://www.trs-80.org/trs80-graphics/ http://www.trs-80.org/trs80-graphics/ I remember I had to hide them in my other books because kids would pick on me if they saw "nerdy" books like this, and teachers didn't like you reading anything interesting during their boring lectures.
- qbasic_forever 6y agoIMHO re-implement these using modern ES6 javascript targeting browsers above IE11 (so ES module support is good) and a simple canvas library (or even P5.js) to really capture the original spirit of BASIC. It's supposed to be a modern language that's available everywhere, and web browsers fit that mold nicely. The dev tools window in your browser is the new QBASIC, just sitting there waiting for a kid to open it up and blow their mind with what's possible.
- dragonwriter 6y ago> IMHO re-implement these using modern ES6 javascript targeting browsers above IE11 (so ES module support is good) and a simple canvas library (or even P5.js) to really capture the original spirit of BASIC IIRC, nothing in either volume of the original (not sure if this changed in the later update that targeted SmallBasic) used graphics, they were all text-mode, so there's no real need to target a canvas library. Maybe something that provides a simpler abstraction than the DOM for just dropping text onto the page, though, if you don't want all the display in dev tools.
- qbasic_forever 6y agoOh nice, heck you could just say "Step 1: Open your browser's dev console. Step 2: Write this code..." Console.log() and prompt() for all your text I/O needs.
- koalahedron 6y agoInteresting idea! I had to think about what you were describing, but that actually is very similar in spirit to the experience back then. It's kind of like discovering the assembly monitor on the Apple ][, which you could get to by poking a value in Basic. I remember typing in an assembly program I found in a magazine that sampled audio from the cassette recorder, and played it back on the speaker. It was gritty sounding, but an amazing discovery for me at the time (about 1982). (I'm always doing Ctrl-Shift-C to copy text from the browser when I forget I'm not in the terminal anymore--which brings up the element inspector and the console. I've always wanted to explore it myself, but I'm usually deep into another project.) I wonder what I could have done if I had Three.js?
- AlSweigart 6y agoIt's funny that this got posted right now. I'm working on exactly this project. You can find a collection of text-based Python programs written in the style of the games in Basic Computer Games here: https://github.com/asweigart/gamesbyexample https://github.com/asweigart/gamesbyexample and installable through `pip install gamesbyexample` More info here: https://pypi.org/project/gamesbyexample/ https://pypi.org/project/gamesbyexample/ Hi, I'm Al Sweigart. I wrote Automate the Boring Stuff with Python. My next book (working title The Big Book of Small Python Projects) is exactly what Jeff talks about in the article. I started on this three years ago, and the style of the programs are 1) short (under 256 lines, as an arbitrary limit) 2) text only (so that readers can link cause-effect between the print() calls and the text that appears on the screen 3) requires no additional libraries outside the standard library 4) fits in one source code file for easy copy-pasting, along with some other guidelines. My main fear is that I'm just old, and I'm mistaking the nostalgia of how I learned to program for good pedagogy in modern times (this is a mistake the One Laptop Per Child project made). But I figure this might be a good start for beginners who want to see what programs "look like". I already have JavaScript, Java, C#, Kotlin, and Go versions also planned. The books, like all of mine, will be released under Creative Commons licenses. The first book should be out in a few months.
- bananicorn 6y agoI highly recommend messing around with yabasic[0] a bit, runs on windows and (probably) most unix-likes, and even offers graphics capabilities right out of the box! I feel like this would've been a great batteries-included environment to start in, back when I started programming. [0] http://www.yabasic.de/ http://www.yabasic.de/
- koalahedron 6y agoEveryone's probably way past reading this by now, but for the record I ported the first example to Common Lisp: https://github.com/koalahedron/lisp-computer-games https://github.com/koalahedron/lisp-computer-games Man that brought back the memories, and I had a blast doing it. Many thanks to Jeff Atwood.
- koalahedron 6y agoI think I even discovered "intentional O(random)" complexity with this gem from Acey-Deucy: 270 A=INT(14\*RND(1))+2 280 IF A<2 THEN 270 290 IF A>14 THEN 270