初心者プログラミング 七並べ – 場に出せるカードの判定方法 –

こんばんは、ファルコン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 はプレイヤーのカードを再表示します。

これで、プレイヤーがカードをクリックして場に出す処理ができます。


アルゴリズム図鑑 絵で見てわかる26のアルゴリズム


定本 Cプログラマのためのアルゴリズムとデータ構造 (SOFTBANK BOOKS)

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする