コンピュータゲームの仕組み(レースゲーム)
高大連携講義
担当:総合情報学科 マッキン ケネスジェームス
事前設定: Java開発環境について
目的
- 基本的なコンピュータ・アクション・ゲームの原理を学ぶ
- Java言語による、基本的なアクション・ゲームのソースコードのコンパイル、実行を体験してみる
概要
- (出席確認)
- 概要説明
- 準備(ログオン,USBメモリ挿入,Webブラウザ,コマンドプロンプト)
- 休憩
まだまだ、やっと準備が整っただけだ!
- 作業フォルダ作成,フォルダ移動,ソースコード保存,メモ帳
- コンパイル,実行
- アニメーションの原理,繰り返し,セル画の移動,変数の説明
- 休憩
ちょっと頭が痛い?もう少しだ!
- ユーザ入力,変数の比較
- カスタマイズ(色,表示文字,スピード,点数,etc.)
- カスタマイズ版ソースのコンパイル,実行
- まとめ
準備
- まずWindowsへログオン。パスワードの入力間違いに注意
- Webブラウザ(Internet Explorer)を立ち上げよう
- この講義のページを開く( http://www.edu.tuis.ac.jp/~mackin/kodai/racing.html )
- USBメモリを使用する場合、USBメモリをPCに挿入しよう
- コマンドプロンプトを起動 (スタート -> すべてのプログラム -> コマンドプロンプト)
作業フォルダ準備
- (コマンドプロンプトで)作業フォルダの移動
USBメモリ利用の場合は「g:」、USBメモリを利用しない場合は「z:」
g:

コンパイルと実行
まず、説明の前に本日の題材のゲームを実際動かしてみよう。
- ソースコード(プログラムの元)とライブラリを保存(学内のみ)
以下のリンクを右クリックして、「対象をファイルに保存」を選択
(保存場所は、USBメモリを利用の場合は「g:\」、利用しない場合は「z:\」)
プログラムソースコード Racing.java (ファイルの拡張子が「.java」であることを確認すること)
グラフィックライブラリ basic.jar (ファイルの拡張子が「.jar」であることを確認すること)
- (コマンドプロンプトで)ファイルが正しく保存されているか確認しよう。
dir

Racing.java basic.jar の二つのファイルが表示されたでしょうか?
- さあ、(コマンドプロンプトで) コンパイル。長いけど打ち間違えないように。
javac -classpath basic.jar;. Racing.java
- (コマンドプロンプトで) 実行
java -classpath basic.jar;. Racing
[ ← ] キーで自車を左に移動、[ → ] キーで自車を右に移動
何かにぶつかるとゲーム終了
ウィンドウ右上の「×」ボタンでウィンドウを閉じる
- 何が起きているの?
アニメーションの原理
- 目の残像現象と錯覚現象を利用したセル画の移動による動画
- プログラム上のループによる繰り返し (Racing.java)
/**********メインループ**********/
while(!finish){
…
}//while(!finish) メインループここまで
- 変数による描画座標の管理
//自機描画
g.locate(x,HEIGHT-1);
...
g.color(g.WHITE, g.BLACK);
g.print("▲");
入力
インベーダの方の座標はループごとに固定量更新されているため、自動的に動いて見えます。
プレイヤーキャラクタは、ユーザからの入力により座標を更新すれば、
ユーザが操作したように見えます。
入力とは、キーボードやジョイスティックなど入力装置からの信号のことです。
ここでは、キーボードを入力とし、押したキーによって、プレイヤーキャラクタの「自動的」な動作に変化を付けることができます。
//キー入力
key=g.inkey();
if(key=='←') x=x-1; //左移動
if(key=='→') x=x+1; //右移動
あたり判定
自車が障害物に当ったかどうか等の「あたり判定」は、自車の座標と障害物の座標を保持する変数の比較で行います。
つまり、自車の座標と障害物の座標が一致する場合、自車が障害物に「あたった」ことになります。
//衝突判定
if(g.screen(x,HEIGHT-1)!=' ' && g.screen(x,HEIGHT-1)!=' '){
finish=true;
crash=true;
}
カスタマイズ
さあ、自分でプログラムを修正してみよう。失敗してもやり直せば良いので怖がらずに。
- (コマンドプロンプトから) メモ帳を起動してソースコードを開いてみよう。
notepad Racing.java
- メモ帳でソースコードを修正してみよう。
- 色修正
g.color(g.BLUE, g.BLACK);
使える色は、g.BLACK g.BLUE g.CYAN g.GREEN g.MAGENTA g.RED g.WHITE g.YELLOW
- 文字変更
g.print("▲");
好きな文字に変えてみよう
- スピード変更
long MINSLEEP=50; //最高速調整用
long ACCEL = 1; //加速調整用
long speed=200; //速度調整用
数値を大きくしたり、小さくしたりしてみよう
- ゴール距離変更
int GOAL=5000; //ゴール距離
数値を大きくしたり、小さくしたりしてみよう
- 移動距離変更
distance = distance + 10; //距離加算
数値を大きくしたり、小さくしたりしてみよう
- ソースコードの保存をしよう。
メモ帳のメニューバーから「ファイル(F)」→「上書き保存(S)」
- (コマンドプロンプトで) コンパイル。
javac -classpath basic.jar;. Racing.java
- (コマンドプロンプトで) 実行。
java -classpath basic.jar;. Racing
- うまくいったかな?何度でも挑戦しよう。
(ソースコード修正 -> ソースコード保存 -> コンパイル -> 実行 を繰り返す)
まとめ
コンピュータ・アクション・ゲームの基本原理
- 目の残像現象によるアニメーション
- ループによる繰り返し
- 変数による座標管理とあたり判定
- ユーザ入力(キーボード/ジョイスティック)による変数変更
プログラミング言語(Java言語)の基本原理
- 人間の読めるソースコードを作成する。
- ソースコードをコンピュータが理解できるように翻訳(コンパイル)する。
- 翻訳(コンパイル)した結果をコンピュータで実行する。
最後に、USBメモリの停止と取出し、ログオフ/シャットダウンを忘れずに。
おまけ
カラー版レースゲーム(学内のみ)
追いかけゲーム(学内のみ)
シューティングサンプル(学内のみ)
おためしApplet(学内のみ)
Basic Graphicsについて