週刊アスキー

  • Facebookアイコン
  • Xアイコン
  • RSSフィード

『ゲームは自分で作るんだ!』MSX検定第2弾BASICプログラム編:MSX30周年

2014年02月27日 13時30分更新

MSX30周年スロット&スプライトロゴ

 世の中は受験シーズンも終盤戦に入っていますが、いい大人になったMSXユーザーは「受験? 何それおいしいの?」状態でしょうか。
 窓際で新聞読みながら「今どきの若いもんは、ゲームはスマホでとか、なっとらん!」とかブツブツ言ってるだけじゃダメですよ。

 ということで、たまには“無いものは自分で作る”の精神を思い出そう的企画。“MSX検定の第2弾”として、今度は“BASICプログラム編”であります。
 MマガやMファン、ベーマガの投稿プログラムをキーボードから打ち込んでいたキミ、そしてバグがなかなか取れずに苦しんでいたキミにこの問題を捧げようではありませんか。手頃な価格で開発環境までついてきたのがMSXの魅力なのですから。
 プログラムを知っていればもしかしたら超カンタンかも。逆に知らない人にはチンプンカンプンかも? なにはともあれやってみましょうよ。ではさっそくレディ・ゴー!

■問題編

 以下のMSX-BASICで書かれたプログラムは、“迷路を作成し、その中でスプライトを操作する”ものである。リストを読んで、以下の問いに答えなさい。
(このプログラムはすべてのMSXで動作します)

MSX30周年記念_第15回

問1: 行100のSCREEN文ではスクリーンモード3を指定している。スクリーンモード3の解像度はいくつか、正しいものを選べ。
a. 32×24
b. 64×48
c. 256×192
d. 1920×1080

問2: 行100のCOLOR文では、迷路の壁の色を指定している。カラーコード12に該当する色はどれか選べ。
a. 緑
b. 明るい緑
c. 暗い緑
d. 派手な緑

問3: 行110のRND関数で、引数に -TIME を指定しているのはなぜか。適切なものを選べ。
a. 乱数の初期化を行っている
b. ゴールまでの時間を計る準備をしている
c. プログラムの実行速度を速くしている
d. キーバッファをクリアしている

問4: 行120のLINE関数では、最後の引数に B を指定することで箱(BOX)を描いている。では、箱を塗りつぶしたいときに指定する引数はなにか選べ。
a. BB
b. BF
c. BM
d. BS

問5: 行210のNEXT文では、二重ループを閉じている。では同様の処理を書いたとき、以下のうちエラーになってしまうものを選べ。
a. NEXT Y:NEXT X
b. NEXT Y:NEXT
c. NEXT:NEXT
d. NEXT X,Y

問6: 行240のSTICK関数は、カーソルキーの入力を受け付ける。これをジョイスティック(ポート1)にするにはどう書き換えればよいか。正しいものを選べ。
a. STRIG(1)
b. STICK(1)
c. INKEY$
d. PAD(1)

問7: 行250~280では、スプライトを移動させるための処理を行っている。次のうち、左に移動させる処理を行っているのはどれか選べ。
a. 行250
b. 行260
c. 行270
d. 行280

問8: 行330ではゴールしたときのビープ音を鳴らしている。この前に"SET BEEP 4"を記述したとき、ビープ音はどう変わるかを選べ。
(注: この機能はMSX2以降)

a. ぴー
b. ぽぉ
c. ぴぃんぽぉん
d. ぽぴぷっ

問9: このプログラムで迷路の色を変えたい場合、修正が必要なのは行100ともう一箇所はどこか。正しいものを選べ。
a. 行150
b. 行210
c. 行300
d. 行320

問10: プログラム終了後、画面の色を初期設定に戻すにはどのキーを押せばよいか選べ。

a. SHIFT + F1
b. SHIFT + F2
c. SHIFT + F3
d. SHIFT + F4

:
:
:
:
■解答編

MSX30周年記念_第15回
↑プログラム実行画面。水色の点をカーソルキーで上下左右に動かし、右下の黄色い点まで着いたらクリア。迷路の色は……暗い緑でした。


問1: b. 64×48
SCREEN3は「マルチカラーモード」と呼ばれ、4×4ドット単位のブロックにそれぞれ色を付けることができます。解像度は256×192の1/4となるので、64×48が正解です。

問2: c. 暗い緑
a. 緑はカラーコード2、b. 明るい緑はカラーコード3です。
d. 派手な緑は存在しません。

問3: a. 乱数の初期化を行っている
試しに -1 など固定値を指定すると、毎回同じ迷路が生成されます。それを防ぐために乱数の初期化を行っているのです。
他のBASICでは、RANDOMIZE文を実行することで同様のことができますが、MSXには存在しないので代わりにTIME関数を利用しています。

問4: b. BF
Box Fillの略です。

問5: d. NEXT X,Y
二重ループは内側から順に閉じていく必要があります。また、引数の変数名は省略することができます。
選択肢d.は、外側のループ(変数X)を先に閉じようとしているのでエラーとなります。

問6: b. STICK(1)
STICK関数の引数を変更すればOKです。
a. STRIG(1) はジョイスティックのトリガーボタンを認識します。
c. INKEY$ はキーボードの入力を受け付けますが、ジョイスティックは認識しません。
d. PAD(1) はマウスやトラックボールの入力を受け付けるものです。

問7: d. 行280
左に動かす=X座標をマイナスにすることなので、行280が該当します。
筋のいい人なら、STICK関数の戻り値(S=7)でピンときたかもしませんね。
ちなみに a. 行250 は上、b. 行260 は右、c. 行270 は下方向となります。

問8: d. ぽぴぷっ
直前のSET BEEP命令で音を設定しています。「ぽぴぷっ」ってちょっとふざけた言い方のようですが、これは「MSXテクニカルハンドブック」にも掲載されているれっきとした公式な表記なのです。
ちなみにa~dがそれぞれSET BEEP 1~4番に対応しています。

問9: c. 行300
自分が壁にぶつかっていないか、いわゆる“当たり判定”を行う命令を探します。
具体的には、IF P=12 THEN~の12が壁のカラーコードにあたりますので、これを書き換えることになります。

問10: a. SHIFT + F1
ファンクションキーのF6にはデフォルトとして“COLOR 15,4,7”が定義されています。
MSXのファンクションキーは5個なので、F6を指定するにはSHIFTとF1を同時押しします。

■診断結果

それではアナタの正解数をカウントしてみましょう!

・10ポイント
かつて常連投稿者だった? え、こんなの初心者向けだって? プロ? セミプロ? 級
・8~9ポイント
いろいろ作ってたでしょ。ちょっとは投稿もしてたでしょ。なMSXプログラマー級
・6~7ポイント
投稿プログラムを打ち込むのは頑張ったMSXプログラマー級
・5~1ポイント以下
構想〇年!頭の中ではいろいろ作ろうとしたんだけどな、なMSXプログラマー級
・0ポイント
自分で覚える気なし級。でも、現在プロデューサー業だったりして。
・テストはパス、でもMSXの記事だから読む
自作しなくても何でも手に入った裕福なMSX愛好家。でも誰よりもMSXに対する愛は強い。

-----

それではおたよりコーナー。
まずは前回の“MSX検定より”

 Jun Nishikawa@JunNishikawさん
 あのMSXアソシエーションの事だからどんな無茶振りされるかドキドキしましたが良心的な問題が功をなして無事16ポイントでした。

――実は今回の第2回はもっと難しい問題だったんですけど、ちょっと優しくしてもらいました。当時プログラム経験がある人なら半分くらいはわかるのでは?

続いて元ビクター開発者インタビューの回について

 春風ねこ丸@h_nekomaruさん
 今回はHC-95の話。 高校の頃これでプランクトンのビデオにテロップ入れたりしてた。

――うはっ高校生で『HC-95』を持っていた? それとも高校にあった? 本文にもあるように『HC-95』って結構高価だったので、実際に使っていた人というのも貴重な気がします。プランクトンのビデオってとこがまたいいですね。

 けものびと@jyu_jinさん
 ビクターのMSX参入と西さんの関係に色の拘り、小泉今日子起用の真相やラストMSXの件等、とても興味深い話でした。

――ありがとうございます。実現するかどうかはともかく、インタビューしてほしいひとのリクエストなどもぜひお寄せください。

この記事をシェアしよう

週刊アスキーの最新情報を購読しよう

本記事はアフィリエイトプログラムによる収益を得ている場合があります