basic-computer-games - 古典的な「基本的なコンピュータゲーム」の本の更新版。さまざまな一般的なMEMORYSAFE、SCRIPTINGプログラミング言語でよく書かれた例が含まれています。https://coding-horror.github.io/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/)

Created at: 2021-01-31 05:28:22
Language: C#
License: Unlicense

私たちは何をしていますか?

2022年以降、最初の100万冊の売り上げを記録したコンピューターブックBASICComputerGamesを更新します

どこで話し合うことができますか?

このプロジェクトに関する作業ログと会話については、こちらのディスカッションを参照してください。

プロジェクト構造

元のBASICソースコードをすべて、元の本(第1巻)の各プロジェクトのフォルダーに移動しました。Lyle Kopnickyは、2009年頃のVintage Basicに対して実行するために、すべてのコードを寛大に正規化したことに注意してください(Lyleに感謝します!)。

私はあなたのいじくり回す喜びのためにここにすべてのゲームを含めました。Vintage BASICで動作することを確認するために、それぞれをテストして微調整しましたが、いくつか奇妙な点があります。これは、BASICで遊ぶ楽しみの一部です。2台のマシンでまったく同じように機能することはありません。ゲームは大文字の入力で使用するように設計されているため、CAPSLOCKをオンのままにしておくとゲームのプレイが向上します。

各プロジェクトには、ゲームの移植先となる言語に対応するサブフォルダーがあります。これは、この投稿によるメモリセーフ汎用のスクリプト言語であるトップ言語の2022TIOBEインデックスに基づいています。

  1. C#
  2. Java
  3. JavaScript
  4. Kotlin
  5. ルア
  6. Perl
  7. Python
  8. ルビー
  9. さび
  10. VB.NET

📢2022年3月に、Pascalが事実上メモリセーフであるかどうかを判断できなかったため、Pascal / Object Pascalを削除し、Rustに置き換えたことに注意してください。Luaも追加しました。これは、TIOBEでトップ20になり(2022年現在)、メモリセーフであり、スクリプト言語でもあるためです。Pascalポートは代替言語フォルダに移動さ​​れました。

⚠️プロジェクトとして、リポジトリにIDE固有またはビルド固有のファイルを含めないことを決定したことに注意してください。特定のIDEまたは特定のビルドシステムで動作するためだけに存在するファイルをリポジトリにコミットしないでください。

代替言語

プログラムの1つを、リストにない言語、つまり、メモリセーフではない言語、または汎用スクリプト言語ではない言語に移植する場合は、

00_Alternate_Languages
フォルダーを使用して移植できます。言語にちなんで名付けられたサブフォルダー内の適切なゲームサブフォルダーにポートを配置します。これらのポートは高く評価されていますが、プロジェクト終了時の寄付総額にはカウントされないことに注意してください。

プロジェクトの目標

これらの古典的なゲームを上記の最新のメモリセーフ言語のリストに自由に変換してください。実際、@ mojoaxelの好意により、次のWebブラウザでJavaScriptバージョンを表示することもできます。

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

しかし、最初に、いくつかのガイドライン:

  • これらは非常に古いゲームです。それらは70年代半ばにさかのぼるので、最近子供たち(または誰か、本当に?)が遊んでいるものの正確な例ではありません。それらをプログラミングを教えるための古典的なプログラミング演習のように考えてください。次世代がこの古典的な本のプログラムから学び、一般的な現代言語間で実装を比較できるように、それらを現代語に変換することでそれを前向きに進めています。

  • 元のプログラムに忠実であり続けます。これらはほとんどが洗練されていないシンプルなコマンドライン/コンソールゲームであるため、元の本に示されているコマンドライン/コンソールの出力と動作を再現するように努める必要があります。元のスキャンされたソース入力および出力へのリンクについては、プロジェクトフォルダーのREADMEを参照してください。ブラウザでゲームを実行してみてください。機能を追加する衝動を避けてください。現代の慣習を除いて、それを単純にしてください、次の項目を参照してください👇

  • 最新のコーディング規約に合わせて更新してください。大文字と小文字をサポートします。構造化プログラミングを使用します。サブルーチンを使用します。優れた最新のコーディング手法の例になるようにしてください。

  • 何が起こっているのかを説明するためにたくさんのコメントを使用してください。たっぷりコメント!元のコードに巧妙なトリックがあった場合は、それらのトリックをより単純な(より冗長な場合でも)コードに分解し、コメントを使用して何が起こっているのか、そしてその理由を説明します。プログラムについて特に注意が必要な場合は、の「移植ノート」セクションを編集し

    readme.md
    て、全員に知らせてください。それら
    GOTO
    は非常に厄介なことがあります。

  • 派手になりすぎないでください。ターゲット言語の最新バージョンと機能を確実に使用するだけでなく、コードサンプルをシンプルで説明しやすいものに保つようにしてください。目標は、ターゲット言語でプログラミングを教えることであり、必ずしも最も巧妙な1行のトリックや大きなシステムを示す必要はありません。数千行のコード用に設計された「エンタープライズ」コーディング手法。

  • ビルド固有またはIDE固有のファイルをチェックインしないでください。リポジトリをシンプルでクリーンなものにしたいので、リポジトリからIDEやビルドシステム固有のファイルを含めることは除外しました。Gitを使用しており、これがGitHubであるため、Git関連のファイルは問題ありません。😉

エミュレーションとバグ修正

元のプログラムの一般的な動作を維持したいのです、具体的には次のように更新する必要もあります。

  • 大文字と小文字の両方の入力と表示を許可する
  • 元のプログラムにバグ修正を組み込む。
    readme.md
    ゲームフォルダ内を参照してください
  • 不正な入力または誤った入力に対するエラー処理の改善

Basic Computer Gamesの本の裏に、Microsoft 8K Basic、Rev4.0がDavidAhlがテストに使用したバージョンであると書かれていることに注意してください。これは、私たちが探している互換性のレベルです。DOSエミュレーションのQBasicはBasicの新しいバージョンですが、テストではこれまでのところ下位互換性を保持しています。動作を確認するには、ブラウザJS BASIC、事実上ApplesoftBASICを使用してプログラムを実行してみてください。

楽しむ!

このプロジェクトに参加して、コンピューティングの歴史で最も影響力のあるプログラミングの本の1つである古典的なプログラミングの本を2022年以降に更新していただきありがとうございます。

注:公式のブログ投稿の発表によると、私は、合意された10の言語で提供されたプログラムごとに5ドルをGirlsWhoCodeに寄付します