gameState:3

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