Excel のイースター エッグは 24 年前に終了しましたが、このオープンソースのスペース インベーダー プロジェクトは楽しみを生き続けています。
私は、古いバージョンの Excel に隠しゲームが隠されているという事実がずっと好きでした。 Microsoft は数年前にそれをやめましたが、Excel ユーザーがスプレッドシートを楽しむことを完全にやめたわけではありません。最近、完全に Excel 内で実行される、オープンソースのスペース インベーダー スタイルのゲームを見つけました。
Excel はゲームを目に見える場所に隠していた
しかし、イースターエッグは最終的に消えました
Microsoft は、いくつかのまったく予期せぬゲームを Excel の古いバージョンに忍び込ませました。 Excel 95 には Doom スタイルの 3D 迷路である Hall of Tortured Souls があり、Excel 97 にはフライト シミュレータ (上の写真)、Excel 2000 には Dev Hunter と呼ばれるドライビング ゲームがありました。
しかし、その伝統は長く続きませんでした。 2002 年、ビル ゲイツは Microsoft の従業員に対し、Trustworthy Computing が会社の最優先事項であり、特にセキュリティと信頼性に重点を置いていると語った。同じ頃、Excel の新しいバージョンでは、この種の隠しゲームが含まれる出荷が中止されました。これは、予算やレポートに使用するスプレッドシート プログラムにまったく不要なビデオ ゲームが含まれていることを発見したときの興味や興奮を失ったことを意味します。
スプレッドシートをゲーム用の場所に変えた企業は Microsoft だけではありません。 2000 年代に遡ると、OpenOffice Calc イースター エッグを使用すると、スペース インベーダーのクローンをスプレッドシートで直接プレイできました。 20 年後、VBA と誰かの懸命の努力のおかげで、私は本質的に同じことを Excel でやっていることに気づきました。
Excel で「Space Defenders」をプレイする
スプレッドシートをアーケードマシンに変える
GitHub 上の Evanml2030 の Excel-SpaceInvader プロジェクトは、古典的なアーケード ゲームのオープンソース VBA バージョンです。マクロが有効になった Space Defenders ワークブックをダウンロードし、デスクトップ Excel で開き、ワークブック内で直接再生します。
マクロが有効になっている Excel ファイルは悪意のあるファイルである可能性があるため、最初に何を開いているかを必ず再確認してください。このファイルをセーフ モードで開きました(長押しすると、 Ctrl Excel を開いたとき)、その VBA (Alt+F11)プレイする前に。詳細については、以下の「セキュリティ」セクションまでスクロールしてください。
思ったよりもずっとスペースインベーダーだと分かりました。船を左右に動かし、近づいてくる敵に発砲し、敵が到達する前に敵を排除しようとします。コントロールはシンプルです。 左 そして 右矢印 移動するキーと スペースバー 発砲する。ゲームは Excel の通常のウィンドウ内で実行され、ブックが実質的にゲーム画面になります。攻撃を受けると、突然「ああ、衝突が検出されました」というアラートが表示され、クリックできます。 打ち上げ また遊ぶために。
あるプレイスルーで、ロケットの隣に落下物が突然現れてゲームが終了するという不具合に遭遇しました。ただし、それ以外は非常にうまく機能し、本物のアーケード ゲームのようにプレイできました。
始め方
以下のセキュリティ情報を読んで問題なく作業を進められる場合は、プロジェクトの GitHub ページから XLSM ワークブックをダウンロードしてください。 Windows ファイルエクスプローラーでは、 右クリック ファイルを選択して プロパティ。で 一般的な タブの下を見てください 安全、 チェック ブロックを解除するをクリックして、 わかりました。
ゲームを動作させるには、Excel で ActiveX コントロールを有効にする必要もあります。空のブックを開き、次の場所に移動します。 [ファイル]>[オプション]>[セキュリティ センター]>[セキュリティ センターの設定]>[ActiveX 設定]をクリックし、必要なオプションを選択して、 わかりました。それが完了したら、空のワークブックを閉じ、Space Defenders ワークブックを開き、プロンプトが表示されたらマクロと ActiveX コントロールを有効にします。
プレイが終了したら、忘れずに ActiveX 設定を元に戻してください。この設定は、このブックだけでなく Excel 全般に適用されるため、変更したままにしておくと、Excel が他のファイルの ActiveX コントロールを処理する方法に影響を与える可能性があります。
その背後には驚くべき量のコードがあります
Excel は、いくつかの画像を表示するだけではありません。
私にとって興味深かったのは、ゲームが実際にどのように動作するかを見ることでした。 VBA は、ゲームの状態、動き、敵、弾丸、衝突、タイミング、およびすべてがスムーズに動いているように見せるために必要な繰り返しの更新を処理します。
使用します DoEventsこれにより、Excel はゲームの実行中に他のイベントを処理できるようになります。これがないと、ゲームを継続的にループする VBA ルーチンによって、すぐに Excel が応答しなくなる可能性があります。
このプロジェクトは、いくつかの Windows API 関数も呼び出します。 GetAsyncKeyState、 から user32.dll、キーボード入力を検出するために使用されます。 QueryPerformanceCounter そして QueryPerformanceFrequency、 から kernel32.dll、高解像度のタイミングに使用されます。
グラフィックスは特に Excel 風の方法で処理されます。ゲームは動的に作成します Microsoft Forms Image.1 ActiveX コントロールを使用し、さまざまなスプライトを表示します。言い換えれば、画面上を飛び回るそれらのものは、特別な Excel ゲーム レンダリング システムではありません。これらは、VBA によって作成および操作されるコントロールです。
ゲーム自体をプレイできるという事実よりも、そこが興味深いと思います。誰かがスプレッドシート アプリ内に小さなアーケード ゲーム フレームワークを効果的に構築しました。
セキュリティ: マクロが有効なファイルを Web から開く
この場合、特に問題となるものは見つかりませんでした
再生する前に、ワークブックの VBA を調べて、実際に何が行われているかを確認しました。外部プログラムの起動、ネットワーク要求の実行、ファイルの読み取りまたは削除、Windows レジストリの変更、または明らかなコード難読化を使用するコードは見つかりませんでした。オートマチックも見つからなかった Workbook_Open() または Auto_Open() ルーティーン。
私が見つけた Windows API 呼び出しは、ゲーム自体に使用されています。 GetAsyncKeyState キーボード入力を処理する一方で、 QueryPerformanceCounter そして QueryPerformanceFrequency 高解像度のタイミングを提供します。 ActiveX コントロールは、ゲームの画像を表示するために使用されます。
これは、ダウンロードしたマクロが有効な Excel ファイルをすべて自動的に信頼する必要があるという意味ではありません。つまり、この特定のワークブックでは、ゲームの実行以外に何かを行うと思われるものは何も見つかりませんでした。
Microsoft は Microsoft 365 および Office 2024 で ActiveX コントロールをデフォルトで無効にしているため、ブックを開くときに追加のセキュリティ警告が表示される可能性があります。これも、ダウンロードしたマクロ有効ファイルを慎重に扱う必要があるもう 1 つの理由です。
Excel は遊び場です
創造性を発揮するために、VBA の知識や Excel 内でゲーム全体を構築する必要はありません。私は Excel のシンプルなグリッドを使用して、ピクセル アートの作成、部屋の計画、ストップモーション アニメーションの作成、ボード ゲームのデザイン、さらにはかぎ針編みのパターンの作成など、驚くほどさまざまな方法で創造性を発揮してきました。 Excel を数値を入力するだけの場所として考えるのはやめなければなりません。
関連情報は以下のリンクからご確認いただけます
関連記事
- ゴールデンビートとレッドビート:違いはありますか?
- 懸命に働き、GalaxyWatch4シリーズで失恋を克服する
- iOS 27はついに液体ガラスを修正しましたが、本当の話はGemini搭載の新しいSiriです