2012年度情報工学科2年プログラム実験

目的

チームで簡単なゲームを分担して作成するというワークショップを通じて、 創造力の育成とソフトウェア開発のプロセス(分析、設計、開発、デバッグ、他人の評価)の実践を行う。


参考文献

Delphiによるプログラミングやゲーム作成に関する本は図書館に 数多くそろっているので積極的に活用すること。

図書館HP


実験の進め方

3,4名でチームを構成し、次に示す日程でDelphiを用いてゲーム開発を行う。 なお、以下の日程はこの週はここまでチェックするという目安であるので 進行の早いチームは先の週の作業を行っても構わない。

第1週

リーダーを決め、チーム内での分担とゲームの仕様を決定する。

初めにリーダーが責任者となって仕様書を作成する。 リーダーはチームチェックシートの「仕様書の作成」の作業時間の見積りを 書いてから仕様書の作成を始めること。 仕様がまとまったら実際にかかった作業時間をチームチェックシートに書いて担当教員のレビューを行う。

レビューを受けて承認を受けたらリーダーが責任者となって各作業の作業責任者を決定する。 チームチェックシートの「作業分担、作業時間見積り」の作業時間の見積りを 行ってから、チームチェックシートに各作業責任者の名前と作業時間の見積りを書いて行く。 なお作業時間の見積りはその作業責任者がおこない、各作業が見積り時間内に終了するように他のメンバーに 働きかけること。また、メンバーは必ず一つ以上の作業責任者となること。 分担と見積りが終わったら実際にこの作業にかかった作業時間を書いて担当教員のレビューを行う。

分担と見積りが終わったら、Delphiのフォーム上へのコンポーネント配置図の作成に移る。 作業が終わったらチームチェックシートに実作業時間を記入する。 作成したコンポーネント配置図、 をレビューするのでチームチェックシートとともに次週実験日の前日(月曜の場合は金曜日まで)に教員室まで持ってくること。


第2週

先週作成した仕様書などを参照しながら、 イベントハンドラ一覧を作成する。 作業が終わったらチームチェックシートに実作業時間を記入しレビューをおこなう。

承認を受けたら外部変数表とイベントハンドラや関数、プロシージャのPADを平行して作成する。 作業が終わったらチームチェックシートに各作業の実作業時間と各メンバーが作成したPADの個数を記入して レビューを行う。 仕様書コンポーネント配置図イベントハンドラ一覧外部変数表PAD をチェックシートとともに次週実験日の前日(月曜の場合は金曜日まで)に教員室まで持ってくること。

(注意) 時折プログラミングが得意な一部のメンバーがコードを書いてから 他のメンバーがコードをPAD化するチームが見られるが、PADのレビューを受ける前にコーディングは絶対にしないこと


第3週

PADを見ながらコーディングする。それと平行して画像や音楽等を作成する。 また検査表を作成して完成したフォームやイベントハンドラから順次テストとデバッグをおこなう。

以上の作業が終わったらチームチェックシートに実作業時間を記入する。また 検査表をレビューするのでチームレポート提出前までに 教員室まで持ってくること。


第4週

最終テストをし、readmeファイルを書き、発表会をおこなう。 チームレポート、 およびソースコードは次週実験日までに提出する。

発表会の時間は質問時間も含めて5分/チームとする。また学生による作品の評価(5段階)も同時におこなう。 以下の手順に従って発表をおこなうこと。

(1) はじめに名前と学生番号を述べる
(2) ゲームのタイトルを述べる
(3) ゲームの概要について述べる
(4) ゲームを実演する
(5) ゲームの特徴(売り)について述べる
(6) 評価(5段階)をおこなう


最終提出物

最終的に以下の2つを提出すること

(1)チームレポート(チームで1部)

(2)ソースコード(チームで1部)



評価方法

評価は100点満点とし、配点は以下の通りとする

・実験内容( 60 点 )

以下の項目が全て満たされていれば60点とする。

1.作業時間の見積りと実時間を書いた。
2.企画書を書いた。
3.コンポーネント配置図を書いた。
4.全員がPADを担当している。
5.全員が作業担当者に割当たっている。
6.チーム内で仲間外れや喧嘩などをせず協力しあって実験した。


・ドキュメント ( 20 点 )

チームレポートを提出すれば20点とする。


・発表会 ( 20 点 )

学生による相互評価点を 10 点、担当教員による評価を 10 点とする。


提出用ドキュメント作成方法

・ チームレポート( A4、手書き可、チームで1部 )

以下の順に並べて提出する。表紙は、配布したものを使用すること。

表紙
チームチェックシート
全員分の自己評価
スクリーンショット(を印刷したもの)
readmeファイル(を印刷したもの)
仕様書
コンポーネント配置図
イベントハンドラ一覧
外部変数表
PAD
検査表



・ 表紙

PDFODF


・ チームチェックシート ( A4、手書き可、チームで 1 部 )

PDFODF



・ 個人自己評価( A4 1枚、手書き可、各自で1部 )

PDFODF



・ スクリーンショット ( A4、チームで1部)

実行時のスクリーンショットを撮って印刷せよ。画像は何枚使用しても良いが 印刷時にA4用紙1部に収まるようにすること。



・ readme(はじめに、説明)ファイル( テキストファイル形式、A4、チームで1部 )

以下のような内容でreadmeファイルを作成する。 必要以上に個人情報を含めないこと。


・ 仕様書 ( A4、手書き可、チームで 1 部 )

以下の様にゲームの仕様を記述すること。

1.ゲームのタイトル
2.ジャンル
3.開発環境
4.コンセプト(ストーリー)
5.ゲームの流れ : フローチャートや簡単な図などで表現し、分かりやすさと曖昧さのない表現とする。


(注1) 配列を1つ以上用いるような仕様を作ること。

(注2) 著作権、著作人格権の侵害は絶対にしないこと。 これを守らなかった場合はレポートを受け取らない。

・画像や音楽等を使用する際は必ず自分たちで作成すること
・著作権フリー素材も使用しないこと
・漫画のキャラクターなどに似せて書いたイラストも著作権侵害にあたるので使用しないこと
・許可を得ないで他人の似顔絵や名前を出すことは著作人格権の侵害にあたるのでしないこと

(注3) 作成したゲームは原則としてインターネット上で公開し、イベントなどで使用することもあるので、 必要以上に個人情報を含めないこと。



・ コンポーネント配置図 ( A4、手書き可、チームで 1 部 )

仕様書の簡易的な図と異なり、具体的にフォーム別にコンポーネントを配置した図を示す。 フォーム名、及びコンポーネントの種類と名前を示すこと。(例 フォーム名: Form1、コンポーネント種類: Button、名前: Button1 )

過去の作品では次のようなコンポーネントがよく使われている。

Label, Edit, Button, CheckBox, RadioButton, Image, Progressbar, Timer

過去の作品では、キャラクターを描画して移動させる時は Image に画像を読み込ませて Image.Left や Image.Top の値を タイマーの中で変化させて移動させている例が多い。
またBitmapを用いてバックスクリーンを作成してキャラクターを描画している作品もある。 このようなバックスクリーンを使用することで描画時のチラつきが抑えられる。

Bitmap使用例
enemy : TBitmap;
BackImg : TBitmap;

enemy := Tbitmap.Create;
enemy.Transparent:=True;
enemy.LoadFromFile('enemy.bmp');

BackImg:=Tbitmap.Create;
BackImg.Width:=640; 
BackImg.Height:=480;

BackImg.Canvas.draw( x_enemy, y_enemy, enemy);
Form1.Canvas.Draw(0,0,BackImg);



・ イベントハンドラ一覧 ( A4、手書き可、チームで 1 部 )

どういうイベントが起きたときにどういうイベントハンドラを呼び出すのか、下の例のように表にして示すこと。 イベントが生じたフォーム別に、イベント内容とそのハンドラで実行される内容も簡単に表内に記述すること。

Form1 :
イベント 内容
OnCreate 変数や画面の初期化
Button1をクリック ゲーム画面(Form2)を表示してゲーム開始
Button2をクリック ゲームを終了する


Form2 :
イベント 内容
OnShow 変数や画面の初期化
Image1をクリック ゲームオーバー画面(Form3)を表示
Button1をクリック タイトル画面(Form1)に戻る
Timer1の呼び出し キャラクター移動
OnClose メインフォーム(Form1)を閉じる(Close)


(注1) OnCreateとOnShowの違いは、OnCreateはフォームが作成された時に1度だけ起きるイベントであるのに 対して、OnShowはフォームが画面に表示される度に起きるイベントであることである。つまり、タイトル画面やゲーム画面 などのようにフォームを複数用意して切り替えて使う場合はOnCreateではなくてOnShowを使って変数などの初期化をする必要がある。

(注2) フォームを複数使用する場合は、各フォームを閉じるとき(OnCloseイベント)にメインフォーム(Form1)もCloseしないと プロセスがゾンビ状態になるので、必ずメインフォームもCloseするようにPADを書くこと。



・ 外部変数表 ( A4、手書き可、チームで 1 部 )

フォーム(またはユニット)別に型名と変数名、役割を以下の例のように表にして示すこと。 なお配列を1つ以上用いること。

Form1 :
変数名 役割
integer counter 0になるとゲームオーバー


Form2 :
変数名 役割
array [1..3]of integer x_enemy 敵1,敵2,敵3のx座標
array [1..3]of integer y_enemy 敵1,敵2,敵3のy座標
array [1..3]of boolean y_flag 真になると敵がパワーアップする




・ イベントハンドラーや関数、プロシージャのPAD ( A4、手書き可、チームで 1 部 )

(注1) 同じような処理をしている箇所や、長くなったイベントハンドラは関数やプロシージャに分割すること。

(注2) PADの各ページにはページ番号を記すこと。

(注3) 負担が大きいのでPADは必ず全員で分担して作成すること。各PADの前に作成した者の名前を記して チェックシートに作成した個数を示すこと。なおPADを一つも作成しなかった者は本実験の点数を0点とする

(注4) イベントハンドラや関数やプロシージャの名前、役割、作成者名をPADの先頭に書くこと。 またPAD中に適宜日本語で何をしているのかコメントを入れること。

(注5) 外部変数も含めて、変数名は実際に使用する際の名前にすること。 適当に a や i などの簡単な文字を使わず、自分が1年後に見ても分かるような変数名にすること

(注6) レビューを受ける前に必ずメンバー間で確認をおこなって矛盾や問題点が無いか確認すること

(注7) チェックシートのPADの個数欄には作成したPADの数を書くこと。フォームの数やページ数では無い

・例




・ 検査表 ( A4、手書き可、チームで 1 部 )

以下の例のような検査表を作成せよ。

(注1) 負担が大きいので必ず全員で分担して検査表を作成して検査すること。検査表には各ハンドラや関数、プロシージャ名と検査者の名前を記し、チェックシートに各自が検査したPADの個数を示すこと。なお 一つも検査しなかった者は本実験の点数を0点とする(ただしコーディングや画像、音楽作成などの作業責任者は除く)。

(注2) 検査表の各ページにはページ番号を示すこと。

(注3) チェックシートの検査数には検査したPADの数を書くこと。すなわち検査数の合計とPADの合計は一致する

・全分岐検査法の手順

(i) PADの葉に番号を振る。
(ii) すべての末端葉を通過するように、イベントハンドラ別にテストケースを作成し、検査表を書く。
(iii)検査表に従って、テストを行い、全ての末端葉を正常に通過したか確認する。

・例 上のPADの場合、

名前: TForm1.FormKeyPress
検査者: 函館 太郎
ケースNo. 末端葉番号 テスト内容 検査結果
1 2 右に移動したか O
2 5 弾を打ったか O
3 6 正常にイベントが終わったか O

drop_enemy
検査者: 高専 花子
ケースNo. 末端葉番号 テスト内容 検査結果
1 3 正常に敵が下に移動したか O




ソースコード提出方法について

最終提出用のソースコードは以下の注意に従って提出すること。

(1) ファイルはzipファイルにまとめて圧縮して提出すること。

(2) コンパイルするのに最低限必要なファイルのみをzipに含め、必要のない ファイルはzipに含めないこと。

(注意) 実行ファイル(*.exe)は含めないこと

コンパイルに必要なファイル
(3)
readmeファイルもzipに含めること。

(4) 必ず解凍したzipファイルから実行ファイルを作成して ゲームを実行できることを確認してから提出すること。

(5) zipファイルの提出が無い場合は採点しない(できない)。



本実験により作成されたゲームをいくつか紹介します。画像クリックで画像を拡大表示できます。

(注意)
・Windows XP上で動作確認しました。
・一応ウィルスチェック済みですが念のためにダウンロード後に必ずもう一度再チェックして下さい。
・以下のアーカイブに含まれるソース、画像等の著作権は各制作者にあります。ソース、画像のライセンスは 各アーカイブに含まれる説明に従って下さい。特に指定が無い場合は教育目的である限り自由に使用できます。 それ以外の用途につきましては情報工学科・東海林までご連絡下さい。


Dome Defence
作者:
青山・池田・内糸・柳田

説明:
タワーディフェンスゲーム

ダウンロード
説明書



幼女育成ゲーム
作者:
上原、阿部、江守

説明:
月から来た女の子を自分好みに育てるゲーム

ダウンロード
説明書



ブロック崩す
作者:
王、金澤、上林

説明:
ブロック崩し

ダウンロード
説明書



部屋からの脱出
作者:
金森、金沢

説明:
部屋から脱出するアドベンチャーゲーム

ダウンロード
説明書



棒人間栗拾い
作者:
境、鈴木、砂原

説明:
画面上部から落ちてくる栗を拾うアクションゲーム

ダウンロード
説明書



兄と妹
作者:
高石,近藤,鈴木

説明:
迷路系脱出ゲーム

ダウンロード
説明書



UFOを撃退せよ!
作者:
高岡、滝澤、中澤

説明:
UFO型エイリアンに弾を撃って倒すシューティングゲーム

ダウンロード
説明書



振り向いて!振り向かないで・・
作者:
多田、高橋、中浜

説明:
ヒロインを追いかけるアクションゲーム

ダウンロード
説明書



最速シューティング
作者:
長濱・西村・姫路

説明:
シューティングゲーム

ダウンロード
説明書



火曜サスペンス劇場 山奥の洋館
作者:
西村、浜本、堀野

説明:
謎解きゲーム

ダウンロード
説明書



The 脱出
作者:
村上、松浦、松村

説明:
とある学校の教室から脱出するゲーム

ダウンロード
説明書



ハイパーヤギオ
作者:
八木・松山・松村

説明:
横スクロールアクションゲーム

ダウンロード
説明書



過去の作品


2011年度作品
2010年度作品
2009年度作品