【四川省への道】第9話


こんにちは、トラップですぅ。(^o^)/

前回でルールの組み込みも終わり、ゲームとして遊べるレベルになりました。
今のままでも遊ぶには充分なんですが、牌を取る時がちょっと淋しいので、
少しだけ工夫してみましょう。(^^)

◎牌を取るときの接続ラインの描画

 牌を取る時に、どんな経路で取れるのかを表示すれば、見た目もいいし、
 「え、何でこれが取れるの!?」といった事もなくなります。(^^)
 それに、ユーザーが「牌を取ったんだ・・」という感触を得られるのも
 ポイントです。ゲームに限った事ではありませんが、フィードバックが
 ないとプレイしていて不安ですものね。(^-^)

 さて、その実現方法ですが・・・コの字型の場合を例に考えますと、
 2つの牌を結ぶためには、3本の線が必要だとわかります。
 ・・という事は、点の座標が4つわかれば充分ですね。(^^)b

 さて、ここで前に追加していたサブルーチンが意味を持ってきます。
 ( *T1T1T2, *T1T2T2, *T1122U1WW2, *T1WW2U1122, *U12, *T12 )

 取るパターンによって、これらのルーチンをわけていたのは、まさに
 この時のため。点の座標をそれぞれ LX(), LY() に格納して、その数を
 LC に入れておいたんです(^o^)b。もう準備はできているわけですから、
 後は牌を消す前に接続ラインの描画を行うだけなのです。(^-^)v

 3本のラインだとすると、次のようになるでしょう。

  (1) (LX(0),LY(0))-(LX(1),LY(1))まで線をひく。
  (2) (LX(1),LY(1))-(LX(2),LY(2))まで線をひく。
  (3) (LX(2),LY(2))-(LX(3),LY(3))まで線をひく。
  (4) ちょっと待つ。
  (5) (LX(0),LY(0))-(LX(1),LY(1))までの線を消す。
  (6) (LX(1),LY(1))-(LX(2),LY(2))までの線を消す。
  (7) (LX(2),LY(2))-(LX(3),LY(3))までの線を消す。

 初めは、1度書いた線をどうやって元に戻すかで悩んだのですが、
 よく考えたら、線が通るのは"背景"と、"消される牌"の上ですから、
 単に「背景と同じパターン」で消してあげればいいだけなんです。
 これに気づくまでは、XOR 演算で描画しておこうか、それとも元の
 画面を保存しようか・・・なんて悩んじゃいました。(^^; ヤレヤレ

 さて、ここまで来れば後は力技!LX(),LY()には画面の座標ではなく、
 牌の座標で記録していますので、X座標の方は X*12+5、Y座標の方は
 Y*16+21 の計算を行った上で描画してあげましょう。(^^)/

    1 REMサンプル No.8

    515 '
    520 *TC3
    530 IF LC=&0 THEN *T3
    540 FOR I=&0 TO LC:LX(I)=LX(I)*12+5:LY(I)=LY(I)*16+21:NEXT
    550 FOR I=&0 TO LC-1
    560 CALL@41,(LX(I)-1,LY(I)-1)-(LX(I+1),LY(I+1)),&1,&4
    570 NEXT
    580 CALL@11,20
    590 FOR I=&0 TO LC-1
    600 CALL@41,(LX(I)-1,LY(I)-1)-(LX(I+1),LY(I+1)),&3,&0
    610 NEXT

 かくして、接続ライン描画ルーチンも無事にできました。
 ちょっとした事ですけど、それっぽい表示になりましたよね。(^^)v

◎より良いソフトにするには・・・

 さてさて、とりあえず自分で遊ぶ分には申し分ないできになったと
 思います。では、もっと良いものにするにはどうしたら良いでしょう?

 今のままでは画面が淋し過ぎますよね・・・となると、画面をもっと
 華やかにしてみるとか、そう!ゲーム開始までの待ち時間に、何か一言
 メッセージが欲しいですよねぇ。ゲームクリアしたら、その喜びを倍増
 させるような画面、効果音なんてのもいいですね。(^_-)

 画面や音だけじゃなく機能面もそう、今の画面をやり直したり、新規に
 ゲームを始める・・・それから、時間の記録!ハイスコア記録を忘れちゃ
 いけませんよね〜。これがあると無いとでは、ゲームの燃え方が違って
 きちゃいますもん。(^^)b

 そぉそぉ、遊び方を説明することも考えると、アシストキーを押したり
 ヘルプボタンを押すことで説明が読めると嬉しいですよね。(^^)

 皆さんもいろいろと工夫してみてくださいねぇ〜。o(^-^)o

◎最後に・・・

 長々と続けてきた【四川省への道】ですが、今回をもって終わりに
 したいと思います。ハイスコア登録やボタン処理、メニュー処理など、
 本連載で取り上げなかった項目はまだまだあるのですが、それらは
 ライブラリにアップされたソースを見ていただければ、容易に理解
 いただけることでしょう。(^o^)b

 それに本連載では、1つのゲームを完成させるまでの過程・・・・・
 つまり、イメージからプログラムを作るまでをお話ししたいと考えて
 きましたので、まぁ目標通りかな・・なんて思ったりして。(笑)

 ではでは、この【四川省への道】が、Add-Inを開発したい方にとって、
 何らかの参考になる事を祈りつつ、筆をおくことにします。

 ご愛読ありがとうございました。 m(__)m
【今回のソースお持ち帰り】 SAMPLE8.SRC