第6回 最終レポート†
以下にいくつか課題を用意したので、1つ以上(最低限どれか1つでよい)の課題について自分でプログラムを作成しなさい。ただし、他人(友達,本,ネット等)のプログラムのコピーは禁止である。コピーを発見した場合、このレポートは0点とする。
自宅でプログラミングをするには、たとえば下記のページを参考にしてください。
なお、通常の毎週の課題も、できるところまでどんどん進めてよい。
提出方法†
- 締め切り
- 現在の予定では、1月13日(金)
- 1月17日に最後のがんばりをしたい人はその日まで。
- レポートの内容(用紙はA4)
- タイトル、提出日
- クラス、番号、氏名
- ソースコード、プログラムの説明、実行中の様子(画面イメージ等)
- ソースコードが長い場合には、別に電子メールで送ってください。
- 実行中の様子は、ちゃんと動いていることを証明するために大切です。
1.ジャンケン†
- ジャンケンの勝敗を判定するプログラムを作りなさい。
- それができたら、コンピュータ側は自動で動く対戦型ソフトウェアにしなさい。
- 普通のジャンケンができたら、拳の種類を3つ以上にした下記の“拡張版ジャンケン”も作ってみなさい。
2.○×ゲーム†
- ○×ゲーム(井型のマスの中で縦横斜めどれか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.マインスイーパ†
- 「マインスイーパ」(Windowsにも最初からついてくるゲーム)を作成しなさい。
- それができたら、爆弾の位置の分からないマインスイーパで、次にどこのマスを開ければよいかアドバイスしてくれる、マインスイーパ自動解法プログラムを作成してみなさい。作ったプログラムがちゃんと動くかどうか、Windowsのマインスイーパを解くときに使って試してみなさい。
4.自由課題†
- 上記の問題以上の難易度のプログラムなら何でもよい。オリジナリティ重視。
以上