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メガ)
(実行ファイル、リソース、プログラム)
→画像や音は容量を食うので、計画的に。
© Copyright 2026 ExpyDoc