1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Processing&Java] 数字を順番に足していくやつ…

Last updated at Posted at 2015-04-18

問題

 今度もまた数字ゲームだが,学生が別な問題を持ってた。「2人がお互いに最初は両手の指を1本ずつ立てた状態でスタートして,自分がどちらかの手で相手のどちらかの手を指すと,自分のその手の立っている指の数だけ,指された相手の手の指をさらに立てる,ということをお互いに繰り返していき,先に相手のどちらかの手の5本の指をすべて立てた方が勝ち,というゲーム」なのだそうだ。

とりあえず書いてみる

 学生に,最初の部分だけ例を示してみた。ゲームの進め方は,次のようになるだろう。

  1. 自分のターンでは,まずどちらの手を選ぶかを入力
  2. 次に,相手のどちらの手を指すかを入力
  3. 相手の手の指の本数を再計算する
  4. 相手のターン

  5.  画面表示と相手(コンピュータ)のターンの処理はまだ書いていないが,自分で書いてみてくださいね!
     ここでも,データをどのように表現するかがポイントになってくる。さらにもう一つ,Processingならではの工夫のしどころとして,2つの情報をキーボードで入力する必要があるが,その度にkeyPressed()が呼ばれるため,入力モードを保持してキーが入力されるたびにモードを遷移させるアルゴリズムが必要である。変数の使い方として,値そのものが意味を持つ使い方と,もう一つ今回のように状態を表す使い方とがあるが,前者よりも後者の方が初心者にはわかりづらいようである。
int keyIndex = -1;

int you_right = 1;
int you_left = 1;
int cmp_right = 1;
int cmp_left = 1;

int choosednum = 0;

int mode = 0; //0 ... choose my hand, 1 ... choose cmp hand

void setup() {
  size(320, 200);
  noStroke();
  background(0);
}

void draw() { 
  // keep draw() here to continue looping while waiting for keys
}

void keyPressed() {
  if (key != 'r' && key != 'l') {
    // error
    keyIndex = -1;
  } else {
    if(mode == 0)[
      swich(key){
        case 'r':
          choosednum = you_right;
          break;
        case 'l':
          choosednum = you_left;
          break;
        default:
          break;
      }
      mode ++;
    }
    else{
      swich(key){
        case 'r':
          cmp_right += choosednum;
          break;
        case 'l':
          cmp_left += choosednum;
          break;
        default:
          break;
      }
      
      // Computer turn
      
      //
      
      choosednum = 0;
      mode = 0;
    }
  }
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?