gameState:3

2008年度ゲームプログラミング
ゲームプログラミング
第7回:一人テニスゲーム、完成!
(ゲームとしての体裁を整える)
2008年度ゲームプログラミング
オープニング画面を出そう(1)

ゲームオーバー画面と同じように作る

gameStateの値でオープニング画面の状態
かどうかを区別(gameState:3)

タイトル、操作方法等を表示する

ボタンが押されたらスタートするように
2008年度ゲームプログラミング
オープニング画面を出そう(2)

ゲームの状態の流れ
↓オープニング
gameState:3
↓ゲーム中
gameState:0
↓
ゲームオーバー gameState:1
または
ゲームクリアー gameState:2
↓
↓オープニング
gameState:3
2008年度ゲームプログラミング
オープニング画面を出そう(3)

決定ボタンが押されたら
if(gc.isKeyPushed(gc.KEY_SELECT)){
「ボタンが押された時の処理」
・gameStateが3だったら0に
・gameStateが1か2だったら3に
}
2008年度ゲームプログラミング
オープニング画面を出そう(4)

drawGame()内で文字等の表示
if(gameStateが3){
タイトルを表示
説明(ルール、キー操作等)を表示
}

起動後はオープニングから始まるので、コン
ストラクタ(メソッドgame)の最後で、
gameStateを3に
2008年度ゲームプログラミング
ハイスコアの保存(1)

それまでに取った最も高い得点がハイスコア
として表示されるようにする。

ハイスコアを保存するたの変数が必要
int high=0;

init()内では初期化しない。
→ゲームを始めるごとに初期化されてしまう
→変数の宣言と同時、またはコンストラクタ
内で初期化する
2008年度ゲームプログラミング
ハイスコアの保存(2)

ハイスコアの更新処理
if(スコアがハイスコアより大きい){
ハイスコア=スコア;
}
→スコアに変化があった時に
(updateGame内で毎回判定しても可)

ハイスコアの表示
→gc.drawString();を使う
2008年度ゲームプログラミング
スクラッチパッドに保存

一般的な変数
→アプリを終了時に破棄される

スクラッチパッドのデータ
→アプリを終了させても値が保持される。
→次回起動時に値を参照できる

エミュレーター上ではファイルとして保存される
(spフォルダの下)
2008年度ゲームプログラミング
スクラッチパッド使用の準備

データ領域の確保
Project→ADF設定でSPsizeに値を入れる。
(1024等→1024byte保存できる)

保存したいパラメータを決める
ハイスコア等の最高記録、
ボリューム等のユーザー設定情報
2008年度ゲームプログラミング
スクラッチパッドの使用(1)

読み取り、書き込みメソッド
→サンプルをコピー、適宜呼び出す
→最終課題等で使う場合は適宜改造

スクラッチパッドのデータはbyte型の配列
byte型:-128~127の値を取る
範囲を超える数を保存したい場合は
int型用の保存メソッドを仕様する
2008年度ゲームプログラミング
スクラッチパッドの使用(2)

読み込みの命令 loadHighScore()
→保存領域(ファイル)があればhighに値を読
み込み。なければ保存領域をデータ作成
→起動時に1回だけ呼ぶ(コンストラクタ内)

書き込みの命令 saveHighScore()
→変数highの値を保存領域に書き込み
→ハイスコアスコア更新時に
→処理が重くなる時はゲーム終了時等に
2008年度ゲームプログラミング
ゲームをより面白くする
 どうしたら面白くなるか考える
↓
 それをどうやったら実現できるか考える
↓
 プログラムを組んでみる
↓
 実際に遊んでみて調整
2008年度ゲームプログラミング
最終課題に向けて
これまでに学んだことを駆使して、どんなゲー
ムを作れるか考えよう
→最後の授業で優秀な作品を作った人を表彰
→今までに無い、新しいゲームを作った人は、
別途表彰


最終課題の容量の制限
→フロッピーディスク1枚分(1.4メガ)
(実行ファイル、リソース、プログラム)
→画像や音は容量を食うので、計画的に。