投稿

12月, 2020の投稿を表示しています

MZ80を起動せよ!とりあえずBASICでゲームを作ってみようよ

イメージ
以前、無事にMZ80が起動しBASICも立ち上がりました。 ここまできたらあとはプログラミングをしてゲームを作ったり、外部ストレージをつなげたりとかなんですが、このMZのBASICはいままで触ってきたBASICとはちょっと癖が強いのと、速度が遅くて作りづらいというのがります。なので、本格的なアクションゲームを作ろうと思ったら疑似スクリーンバッファを作成しアセンブラで転送するシステムを作る必要があるんですね。 一応z80のアセンブラは触ったことがありますが、それはシングルボードコンピューターでしたのでこういった「一定のエリアでメモリを割り当ててアセンブラと並行する」っていうのが全然わからないんです。なのでとにかくBASICだけでゲームを作ってみようというわけです。 じゃあ問題はゲームの要素を一通り作れてBASICでも十分な速度が楽しめるゲームって何かって話なんです。 ■ゲームの要素を満たしたシンプルな「ゲーム」 まず、ざっくりゲームの流れをば。 1)タイトル 2)プレイ画面 3)ゲームオーバー画面 以上の3つなんですね。「は?クリア画面は?」ってなると思うんですけど、ゲームオーバーってなんか「失敗!」ってイメージあるんですけどあれ「ゲームが終わりました」って意味なんですよね。なので昔のアーケードとかゲームクリアしても最後「ゲームオーバー」って表示されるんですよ。後味わりい!!!!!!某パンツ一枚の騎士さんのゲームとかBGMがゲームオーバーのままなのでもうやるせないです。 話が脱線しました。 ゲームの流れは上の3つですが、まあどんなゲームを作っても上の要素があればまとまって見えるわけです。問題は2番の「プレイ画面」。 ぶっちゃけ個々の中身を分解すべきなんですがたぶんこういう要素なんです。 1)プレイヤーが操作できるもの 2)プレイヤーの操作の影響を受ける動くもの 3)何もしていないとMissになるもの 4)クリアすべき課題 5)得点 以上のものを満たし、簡単に作れるものっていうとたぶん、 ブロック崩し なんですね。何が強いってボールが2と3の要素を兼ねてるんですよ。ここがすごい。 というわけでちょっと作ってみました。 ■どういう構成にすればいいのか考えてみる 基本、自分でBASICを描くときには1-100の間をmainloop関数として使用し、各機能ごとにGOSUBで飛