* 第6回 最終レポート [#f3963dc7]

** 課題 [#m0fbaf51]

以下にいくつか課題を用意したので、''1つ以上(最低限どれか1つでよい)''の課題について自分でプログラムを作成しなさい。ただし、他人(友達,本,ネット等)のプログラムの''コピーは禁止''である。コピーを発見した場合、このレポートは0点とする。

自宅でプログラミングをするには、たとえば下記のページを参考にしてください。
- [[CG]](Dev-C++の使い方)
- [[フリーソフトでプログラミング]]

なお、通常の毎週の課題も、できるところまでどんどん進めてよい。

*** 提出方法 [#y274fa2c]

- 締め切り
-- 現在の予定では、''1月10日(火)正午''
-- 1月17日はやりません。
-- ''1月10日(火)正午''(1月17日はやりません)

- レポートの内容(用紙は''A4'')
-- タイトル、提出日
-- クラス、番号、氏名
-- ソースコード、プログラムの説明、実行中の様子(画面イメージ等)
--- ソースコードが長い場合には、別に電子メールで送ってください。
--- 実行中の様子は、ちゃんと動いていることを証明するために大切です。

- 提出場所
-- 塩澤(330号室)前に置いたレポートボックス

*** 1.ジャンケン [#a80aa78b]

- ジャンケンの勝敗を判定するプログラムを作りなさい。
- それができたら、コンピュータ側は自動で動く対戦型ソフトウェアにしなさい。

- 普通のジャンケンができたら、拳の種類を3つ以上にした下記の“拡張版ジャンケン”も作ってみなさい。
-- http://d-ken.netgamers.jp/archives/2005/11/post_400.php
-- http://blog.livedoor.jp/kotaro269/archives/50052538.html

*** 2.○×ゲーム [#ca1ec459]

- ○×ゲーム(井型のマスの中で縦横斜めどれか1列そろえるゲーム)を作りなさい。以下がプログラムの処理の流れの説明である。

> ''準備''

> 1. 2次元配列を用いて、3×3の盤面を定義し、全部のマスを空に初期化する。※ たとえば、整数配列int board[3][3]で定義する。

> ''入力''

> 2. 次の手が、先手の番か後手の番かを表示する。※ もちろんだが、先手と後手は交互にくる。

> 3. キーボードから、手(座標)を読み込む。※ たとえば、「1 2」とか「1b」とか…

> 4. 盤面の配列にその手を保存する。※ たとえば、空なら「0」、○なら「1」、×なら「2」のように決めておく。

> 5. 盤面の状態を表示する。※ 2重ループを使う。

> ''判定''

> 6. タテ・ヨコ・ナナメに1列そろっているかどうか判定し、そろっていればその手番の勝利とする。

> 7. すべてのマスが○か×で埋め尽くされても勝負がつかなかったら、そこまでで終わりとする。

> ''反復''

> 8. 以上2.〜7.の手順を、先手と後手を交互にしながら繰り返す。

- うまく動くようになったら、○×ゲームをコンピュータとの対戦型にしなさい。さらに、コンピュータの強さを設定できるようにして、上級レベルではコンピュータが必勝の手を打ってくるようにしてみなさい。

*** 3.マインスイーパ [#q3ad8621]

- 「マインスイーパ」(Windowsにも最初からついてくるゲーム)を作成しなさい。

- それができたら、爆弾の位置の分からないマインスイーパで、次にどこのマスを開ければよいかアドバイスしてくれる、マインスイーパ自動解法プログラムを作成してみなさい。作ったプログラムがちゃんと動くかどうか、Windowsのマインスイーパを解くときに使って試してみなさい。

*** 4.自由課題 [#l56f79c0]

- 上記の問題以上の難易度のプログラムなら何でもよい。オリジナリティ重視。

以上



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS