こんばんは、ファルコンMです。
今回は、ゲーム開始時に7を場に出してから、次にカードを出すときの処理です。
プレイヤーがカードをクリックして、場に出せるなら場に出す
下の図は7を場に出して、プレイヤーがカードをクリックして場に出すときの状況です。
javascript のコードは以下。
<!-- カードをクリックしたときの処理 --> function clickCard( x, y ){ if( turnPlayer != 0 ){return;} if( y != 0 ){return;} if( checkPutOutCard( x, y ) == 1 ){ displayCardNum(handcard[0][x]); handcard[0][x] = -1; cardSride(0); dispPlayerAllCard(); } } <!-- カードが場に出せるか確認する --> <!-- 0:出せない 1:出せる --> function checkPutOutCard(x, y){ for(var i=0; i<8; i++){ if( handcard[y][x] == putoutCard[i] ){ if( i < 4 ){ putoutCard[i]--; }else{ putoutCard[i]++; } return 1; } } return 0; }
プレイヤーがカードをクリックしたら、clickCard 関数が呼ばれます。引数x は、クリックしたカードの位置( 一番左が0 ) を表しています。引数y は0がプレイヤー、1~3がそれぞれのコンピューターのカードを表します。
checkPutOut 関数でクリックしたカードが場に出せるか判定しています。
putoutCard は場に出せるカードの配列です。7並べの場合は、場に出せるカードは最大8つに限定できます。一番最初は、ハート、スペード、ダイヤ、クローバーの6と8の合計8つ。すなわち、putoutCard の配列にこの8つのカードの番号を設定しておきます。
checkPutOut 関数内で、ループを回して、クリックしたカードがputoutCard の番号と一致するかを判定しています。一致したら、そのカードが6か8かでputoutCard をデクリメントするかインクリメントするかを決める。putoutCard は常に場に出せるカードを表している。
※まだ開発途中なので、上限下限などの設定はしていません。
displayCardNum は指定した番号のカードを場に表示します。
handcard[0] はプレイヤーの手札を表し、数値を-1してcardSride するとhandcard[0] は-1を削除して左にスライドします。
displayPlayerAllCard はプレイヤーのカードを再表示します。
これで、プレイヤーがカードをクリックして場に出す処理ができます。
定本 Cプログラマのためのアルゴリズムとデータ構造 (SOFTBANK BOOKS)
コメントを残す