情報処理2z(Java version)
課題10:オリジナルゲームへ向けて

基本課題
  1. 一人テニスゲームを作る人

  2. オリジナルゲームを作る人

今日からは最終課題にチャレンジしてもらいます。

できた所までを班担当SAに見せてチェックしてもらってから帰ってください。

5時45分より早くに帰るのは御遠慮下さい。

できたところまでのプログラムをレポートシステム(Subject:2z10)に提出してください。


参考資料(細かい質問等)


おまけ。

☆いきなりゲームが始まるのもなんですから、
  sキーを押したらゲームが始まるようにしたい場合。

(※色々方法はあると思いますが、あくまでも一つの例です)

待機中なのかゲーム中なのかを示す変数を用意し、その変数の値によって、
描画するものや動かす物体の内容を切り替えます。

具体的には……

int gamemode; /* 0:待機中 1:ゲーム中 */

という「今なにをしているのかを表わす変数」を作って、

initメソッドの中で gamemode=0;/* 待機中 */ とやっておいて、

printメソッドは

/* gamemodeの値によって描くものを切り替える */
if(gamemode==0){ 「sを押してください」と表示 ;}
if(gamemode==1){ 通常の描画;}

として、

keyDownメソッドの中に

case 's': /* s が押されるとゲームが始まる */
          if(gamemode==0){
            ボールやバーの座標の初期化;
            gamemode=1; 
          }
          break;

を追加して、


runメソッドの中身を

while(true){
  時間調節(sleep);
  if(gamemode==1){
    バーの移動やボールの移動やはね返り判定;
    if(ボールを逃した){gamemode=0;/* 待機中の状態に */}
  }
  else {
    ゲームが始まる前に何かが動く演出を入れたいならこの辺に;
    特にないならelseは必要ないでしょう。;
  }
  repaint();
}

こうしてやれば、
sを押すまでは「sを押せ!」と表示されて、
sを押すとテニスゲームが始まり、
ゲームが終わると「sを押せ!」という表示に戻ります。
この状態でsを押すと再びテニスゲームが始まる、と。

ゲームオーバーの表示等を入れたい人は各自工夫してください。
gamemode==2(ゲーム終了後)という状態を作るとか、gamemode==0の時に
座標などの変数の値から判断して「ゲームオーバー」と表示させるとか。
同様にゲームクリアー時にも演出等が入れられます。