Presentation is loading. Please wait.

Presentation is loading. Please wait.

第6回:得点を表示しよう! (文字の表示、乱数)

Similar presentations


Presentation on theme: "第6回:得点を表示しよう! (文字の表示、乱数)"— Presentation transcript:

1 第6回:得点を表示しよう! (文字の表示、乱数)
2006年度ゲームプログラミング ゲームプログラミング 第6回:得点を表示しよう!  (文字の表示、乱数)

2 文字の表示 メソッドdrawStringを使います。 gc.drawString(文字列, x, y);
2006年度ゲームプログラミング 文字の表示 メソッドdrawStringを使います。  gc.drawString(文字列, x, y);  文字列:表示したい文字を“ ”で囲います。 画面左上に「A」という文字を表示させる gc.drawString(“A”,0,0);

3 GAME OVERと表示 ゲームがストップしている状態→gameState==1の時
2006年度ゲームプログラミング GAME OVERと表示 ゲームがストップしている状態→gameState==1の時 paintメソッドの中で、gameStateが1の時のみGAME OVERと表示する   if(gameState==1){ GAMEOVERと表示   }

4 バーに当たった回数を数える 回数の保存には、変数を使う。int point; 初期値は0 point = 0;
2006年度ゲームプログラミング バーに当たった回数を数える 回数の保存には、変数を使う。int point; 初期値は0    point = 0; 画面下でバーで跳ね返した時に、数を加算    if (バーに当たったら){      跳ね返りの処理      point++; // p=p+1; pを1増やす    }

5 数字の表示 メソッドdrawStringを使います。
2006年度ゲームプログラミング 数字の表示 メソッドdrawStringを使います。  文字列の指定で「文字列+変数」という形にすると、文字列に続いて変数の値が表示されます。(変数部分は“ ”ではくくりません) gc.drawString(“score:”+point, 0,0); →pointが0の時はscore:0と表示 →pointが10の時はscore:10と表示

6 乱数を使おう メソッドrand(int min,int max)を呼ぶと、 最小値min~最大値maxのうち、無作為な値が返る。
2006年度ゲームプログラミング 乱数を使おう メソッドrand(int min,int max)を呼ぶと、 最小値min~最大値maxのうち、無作為な値が返る。 何の値が返ってくるかは、実行してみるまで不明。実行するたびに値が変わる  (だから乱数と呼ぶ)

7 乱反射させよう 乱反射→進む方向をランダム(無作為)に 跳ね返り処理の時に進む方向、つまり dx,dyの値をランダムに指定。
2006年度ゲームプログラミング 乱反射させよう 乱反射→進む方向をランダム(無作為)に 跳ね返り処理の時に進む方向、つまり  dx,dyの値をランダムに指定。 (例:上壁の処理) dx = gc.rand(1,2); →dx が1か2に dy = gc.rand(-1,1); →dy が-1か 0 か 1に dx も dy も0にすると停まってしまうので注意

8 スコアをランダムで増やそう point=point+1;ではなく、増える値を乱数で指定 →point=point+乱数 範囲は1~10;
2006年度ゲームプログラミング スコアをランダムで増やそう point=point+1;ではなく、増える値を乱数で指定   →point=point+乱数 範囲は1~10;   → gc.rand(1,10);

9 複数の的を表示しよう 配列変数を使用。(変数の集まり) 配列の宣言 int a[]=new int[3]; →a[0],a[1],a[2]の
2006年度ゲームプログラミング 複数の的を表示しよう 配列変数を使用。(変数の集まり) 配列の宣言   int a[]=new int[3];   →a[0],a[1],a[2]の    3個の変数が使えるようになる。   ※ a[3]は使えないので注意

10 複数の的の宣言 宣言 static final int BLOCK_NUM = 3; //定数化しておくと数を増減しやすい
2006年度ゲームプログラミング 複数の的の宣言 宣言   static final int BLOCK_NUM = 3;   //定数化しておくと数を増減しやすい   int block_x[]=new int[BLOCK_NUM];   int block_y[]=new int[BLOCK_NUM];   int blockflag[]=new int[BLOCK_NUM];   //座標(x,y)と有無を示す変数を   //BLOCK_NUMの数だけ用意する

11 For文で配列を効率的に使う for文を使って繰り返し for(int i=0;i<繰り返す回数;i++){ 繰り返す内容。 }
2006年度ゲームプログラミング For文で配列を効率的に使う for文を使って繰り返し   for(int i=0;i<繰り返す回数;i++){    繰り返す内容。   } 指定した回数繰り返され、かつ、  1回繰り返すごとにiが1づつ大きくなる →配列を[i]で指定することで、全ての的に同じ処理を行うことが可能

12 複数の的の初期化 for文を使って繰り返し for(int i=0;i<3;i++){
2006年度ゲームプログラミング 複数の的の初期化 for文を使って繰り返し   for(int i=0;i<3;i++){    blockflag[i]=1;//開始時は的がある    block_x[i]= i * ;    //x座標を20づつずらす。    block_y[i]= 30;//高さは同じ   } ※座標が全く同じだと的が重なって複数にならないので注意(乱数を使っても良い)

13 複数の的を表示 for文を使って繰り返し for(int i=0;i<3;i++){ if(blockflag[i]==1){
2006年度ゲームプログラミング 複数の的を表示 for文を使って繰り返し   for(int i=0;i<3;i++){    if(blockflag[i]==1){      i番目の的を書く;      }   } →(block_x[i],block_y[i])に描画

14 複数の的のあたり判定(1) for文を使って繰り返し for(int i=0;i<3;i++){ if(i番目の的が存在していて、かつ
2006年度ゲームプログラミング 複数の的のあたり判定(1) for文を使って繰り返し   for(int i=0;i<3;i++){    if(i番目の的が存在していて、かつ     i番目の的とボールが接触していたら){      blockflag[i]=0;//的を消す      point++;//得点を入れる    }   }

15 複数の的のあたり判定(2) ボールと(30,50)にある的が接触する条件 →的(30,50)とx,y座標の差が12以内
2006年度ゲームプログラミング 複数の的のあたり判定(2) ボールと(30,50)にある的が接触する条件   →的(30,50)とx,y座標の差が12以内   x - 30 >= -12 && x - 30 <= 12 &&   y - 50 >= -12 && y - 50 <= 12 ボールとi番目の的が接触する条件   →(x,y)と(block_x[i],block_y[i])を比べる x-block_x[i] >= -12 && x-block_x[i] <= 12 && y-block_y[i] >= -12 && y-block_y[i] >= 12  


Download ppt "第6回:得点を表示しよう! (文字の表示、乱数)"

Similar presentations


Ads by Google