【四川省への道】第6話


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

段々と本格的になってきましたねぇ(^^)
早速、ルールの組み込みにいってみましょう。

◎前準備

 現在、X,Y,V,Wの各変数に2つの牌の座標が入っていますが、このまま
 扱ったのでは、どちらが左側にあるのか、上側にあるのか・・・など、
 全然わかりませんので、次のようにきめます。(^^)

 (1) (T1,U1)の座標の牌が左側、(T2,U2)の座標の牌が右側とする。
 (2) 上側の牌の Y 座標を UT、下側の牌のY座標を UB とする。

    2735 ' X座標の小さい方を(T1,U1)に、大きい方を(T2,U2)にする。
    2740 IF XT1 THEN IF G(U2,SX-1)=-1 THEN SX=SX-1:GOTO *L2

 垂直ラインでの接続も基本は同様ですが、ややこしいので U1<=U2 の場合と
 U1>U2 の場合とで処理をわけてみました(^^)。この場合も EY と SY を求め、
 X=V かつ EY=UB-1 であれば、垂直ラインで結べたと判断できますね。(^^)v
 以下にリストをあげますので、注釈を参考にして読んでみてくださいね。

    2845 ' Y座標の大小で処理をわける。
    2850 IF U1>U2 THEN *B1
    2860 '
    2865 ' U1 <= U2 の場合
    2870 EY=U1,SY=U2
    2875 ' EY:(T1,U1)の牌が、下の方向にどこまで行けるかを入れる変数
    2880 *L3:IF EYU1 THEN IF G(SY-1,T2)=-1 THEN SY=SY-1:GOTO *L4
    2930 GOTO *A1
    2940 '
    2945 ' U1 > U2 の場合
    2950 *B1
    2960 EY=U2,SY=U1
    2965 ' EY:(T2,U2)の牌が、下の方向にどこまで行けるかを入れる変数
    2970 *L5:IF EYU2 THEN IF G(SY-1,T1)=-1 THEN SY=SY-1:GOTO *L6
    3020 *A1

 えと、リスト中で何の断りもなしに *U12, *T12 にジャンプしてますが、
 これは、どういった経路で取れたかによって、ちょっと細工したいなと
 いうことで分けてみました。(^-^)
 なお、実行するには、いつものように前回のリストと今回のリストを
 合成することが必要です。下にのせたのも合わせて実行して下さいね。

    1 REMサンプル No.5

    120 DIM P$(35),Q$(35),C(&8F),G(&9,&13),LX(&3),LY(&3)

    510 GOSUB *HANTEI:IF OK=&0 THEN GOSUB *HANTEN2:RETURN

    2710 '
    2720 *HANTEI
    2730 LC=&0:FA=&F

    3310 *NGGET:OK=&0:RETURN
    3320 *OKGET:OK=-1:RETURN
    3330 '

    3380 *U12:LX(&0)=T1,LY(&0)=U1,LX(&1)=T1,LY(&1)=U2,LC=&1:GOTO *OKGET
    3390 *T12:LX(&0)=T1,LY(&0)=U1,LX(&1)=T2,LY(&1)=U1,LC=&1:GOTO *OKGET

◎今回のサンプルですが・・・

 実のところ、今回のサンプルをそのまま用いたのでは、あまり面白く
 ありません(^^;)。その理由はですね・・・何の事はない、ほとんどの牌を
 取ることができないからです。(ア、イシヲ ナゲナイデ・・・)
 それもそのはず、直線で結べるものしか取れない上に、牌がきれいに
 並んでいるのですから、これでは隣接した牌しか取れないですよね。
 ・・・と、ここであきらめちゃいけません。
 だって、皆さんの手元にはソースリストがあるじゃないですか。(^^)/
 自分のテストしたい配置になるように、配列変数G()の値を工夫して
 おけばいいわけです。え?G()の値を -1 にしたらエラーが出るって?
 それは好都合(^ー^)、どんなエラーがどこで出たかを調べて、直して
 しまいましょう。こうやって、与えられたままではなく、あちこちを
 つついてみることで、より理解できるんだって思います。(^o^)/
 チャレンジあるのみ!!

☆次回予告

 判定処理の基本構造はできたも同然ですね。
 次回も引き続き、ゲームルールの組み込みにてお会いしましょう。
【今回のソースお持ち帰り】 SAMPLE5.SRC