コンピュータゲームの仕組み(レースゲーム)

高大連携講義
担当:総合情報学科 マッキン ケネスジェームス
事前設定: Java開発環境について

目的

  1. 基本的なコンピュータ・アクション・ゲームの原理を学ぶ
  2. Java言語による、基本的なアクション・ゲームのソースコードのコンパイル、実行を体験してみる

概要

準備

  1. まずWindowsへログオン。パスワードの入力間違いに注意
  2. Webブラウザ(Internet Explorer)を立ち上げよう
  3. この講義のページを開く( http://www.edu.tuis.ac.jp/~mackin/kodai/racing.html )
  4. USBメモリを使用する場合、USBメモリをPCに挿入しよう
  5. コマンドプロンプトを起動 (スタート -> すべてのプログラム -> コマンドプロンプト)

作業フォルダ準備

  1. (コマンドプロンプトで)作業フォルダの移動
    USBメモリ利用の場合は「g:」、USBメモリを利用しない場合は「z:」

    g:


コンパイルと実行

まず、説明の前に本日の題材のゲームを実際動かしてみよう。
  1. ソースコード(プログラムの元)とライブラリを保存(学内のみ)

    以下のリンクを右クリックして、「対象をファイルに保存」を選択
    (保存場所は、USBメモリを利用の場合は「g:\」、利用しない場合は「z:\」)
    プログラムソースコード Racing.java (ファイルの拡張子が「.java」であることを確認すること)
    グラフィックライブラリ basic.jar (ファイルの拡張子が「.jar」であることを確認すること)

  2. (コマンドプロンプトで)ファイルが正しく保存されているか確認しよう。

    dir


    Racing.java basic.jar の二つのファイルが表示されたでしょうか?


  3. さあ、(コマンドプロンプトで) コンパイル。長いけど打ち間違えないように。

    javac -classpath basic.jar;. Racing.java

  4. (コマンドプロンプトで) 実行

    java -classpath basic.jar;. Racing
    [ ← ] キーで自車を左に移動、[ → ] キーで自車を右に移動
    何かにぶつかるとゲーム終了
    ウィンドウ右上の「×」ボタンでウィンドウを閉じる

  5. 何が起きているの?

アニメーションの原理

入力

インベーダの方の座標はループごとに固定量更新されているため、自動的に動いて見えます。
プレイヤーキャラクタは、ユーザからの入力により座標を更新すれば、 ユーザが操作したように見えます。
入力とは、キーボードやジョイスティックなど入力装置からの信号のことです。
ここでは、キーボードを入力とし、押したキーによって、プレイヤーキャラクタの「自動的」な動作に変化を付けることができます。

//キー入力
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;
	    }

カスタマイズ

さあ、自分でプログラムを修正してみよう。失敗してもやり直せば良いので怖がらずに。
  1. (コマンドプロンプトから) メモ帳を起動してソースコードを開いてみよう。

    notepad Racing.java

  2. メモ帳でソースコードを修正してみよう。
  3. ソースコードの保存をしよう。

    メモ帳のメニューバーから「ファイル(F)」→「上書き保存(S)」

  4. (コマンドプロンプトで) コンパイル。

    javac -classpath basic.jar;. Racing.java

  5. (コマンドプロンプトで) 実行。

    java -classpath basic.jar;. Racing

  6. うまくいったかな?何度でも挑戦しよう。
    (ソースコード修正 -> ソースコード保存 -> コンパイル -> 実行 を繰り返す)

まとめ

コンピュータ・アクション・ゲームの基本原理
  1. 目の残像現象によるアニメーション
  2. ループによる繰り返し
  3. 変数による座標管理とあたり判定
  4. ユーザ入力(キーボード/ジョイスティック)による変数変更
プログラミング言語(Java言語)の基本原理
  1. 人間の読めるソースコードを作成する。
  2. ソースコードをコンピュータが理解できるように翻訳(コンパイル)する。
  3. 翻訳(コンパイル)した結果をコンピュータで実行する。
最後に、USBメモリの停止と取出し、ログオフ/シャットダウンを忘れずに。

おまけ

カラー版レースゲーム(学内のみ)
追いかけゲーム(学内のみ)
シューティングサンプル(学内のみ)
おためしApplet(学内のみ)
Basic Graphicsについて