授業計画 12.アプリケーションの作成 アプリケーションの作成を通したプログラムの理解 12.1 確認・提出事項 レポート提出 12.2 授業内容 インターフェイス 演習 アルゴリズム教室 12月24日(火)は月曜日の授業です。 本講義は本日が今年度最後となります。 レポート〆切 1月7日(火) 12.3 インターフェイス 使いやすいインターフェイスとは? 12.4 演習 乱数を使ったアルゴリズム 12.5 アルゴリズム教室 ゲームを作ってみよう 12.6 レポート課題 ※これまでの授業用資料、レポート課題等は http://cb.apc.kagoshima-u.ac.jp/~higolabo/proex/proex.htm にアップロードしてあります。 質問、レポート提出先 [email protected] 【アルゴリズム教室】 1 ミニゲームを作ってみよう! →ゲームを作ることは、アルゴリズムの作り方の習得に最適 【基本コンセプト】 1.A列のスタート地点からG列のゴールまで進んだときの歩数を競う 2.キー入力の判定は非常に難しいので、チェックボックスを4つとコマンド ボタンを一つおき、ボタンを押したときにチェックボックスにチェックが 入っている方向に進んではどうか。 3.自キャラの位置はセルA2、B2に、歩数はセルC2に表示させ、 これを利用したら良いのではないか。 4.極力授業で出てきたアルゴリズムの組み合わせで作りたい。 【この3つの問題点を克服してみる】 ①上下左右に1歩しか ●の位置をA2,B2から取得しているが、 進めない理由 その値を更新していないので、ボタンを押す ごとに、x=1、y=6に設定され直される。 ↓ 最終的なxとyの値をA2、B2に出力すれば良い。 ②歩いた後が残る理由 自キャラを消すための命令がない。 ↓ 移動前に●を消せばよい。 ③左に動くとエラーが出る xの値が0になり、6行0列というあり得ない 場所に●を表示しようとしたため。 ↓ x=0になったら1にすればよい。また、情報を 表示している2行にも入れなくしたいので、 y=2になったときに3に戻すようにすれば良い。 【アルゴリズム教室】 【海賊王に、俺はなる!】 これをベースにゲームを作ってみよう!宝探しなんかどうかな? 【追加コンセプト】 B3~G9の間に宝が埋まっていて、それを探す! 【どのようにすれば良いか?】 ④「初期化」ボタンを押したとき、宝の場所をランダムで決めて、 自キャラの位置管理と同じくC2、D2に出力して場所を管理してはどうか? ⑤「動け!」で移動した後、自キャラのx、yとお宝のtx、tyが一致したら、 メッセージを表示しよう! 2 【プログラム改良】 '画面初期化 Cells = "" Cells(2, 1).Value = 1 Cells(2, 2).Value = 6 Cells(6, 1).Value = "●" 'ついでに自キャラを表示 Dim tx As Integer, ty As tx = Int(Rnd() * 6 + 2) ty = Int(Rnd() * 7 + 3) Cells(2, 3).Value = tx Cells(2, 4).Value = ty Integer '④お宝位置用変数 '④2(B)以上8未満(7(G)以下)の整数乱数 '④3以上10未満(9以下)の整数乱数 '④お宝列をC2に表示 '④お宝行をD2に表示 【プログラム改良】 Dim x As Integer, y As Integer x = Cells(2, 1).Value '列座標 y = Cells(2, 2).Value '行座標 Cells(y, x).Value = "" '問題点②修正 If If If If CheckBox1.Value CheckBox2.Value CheckBox3.Value CheckBox4.Value If x = 0 Then x = 1 If y = 2 Then y = 3 = = = = True True True True Then Then Then Then y y x x = = = = y y x x + + 1 1 1 1 '問題点③修正 '問題点③修正 Cells(2, 1).Value = x '問題点①修正 Cells(2, 2).Value = y '問題点①修正 Cells(y, x).Value = "●" Dim tx As Integer, ty As Integer '⑤お宝位置用変数 tx = Cells(2, 3).Value '⑤C2の値をtxに読み込む ty = Cells(2, 4).Value '⑤D2の値をtyに読み込む If x = tx And y = ty Then MsgBox "発見!" '⑤発見判定 ※C2、D2セルの文字色を 白にすればゲームっぽく 仕上がる! 後は、時間や歩数を 得点としてはどうか。 【僕は海賊になんかならないよ!】 その他、どんな改良がある? ・障害物があり、行く手を遮る。 →移動前のxとyを別の変数にコピーしておき、移動方向に障害物があったら コピーした移動前の値をxとyに書き戻す。 ・いくつか見えない落とし穴があり、落ちるとスコアが減る →お宝と同じ方法で落とし穴用の処理を追加する。 ・お宝の近くに来るとヒントが出る。→tx-x、ty-yの絶対値を判定する コントロールを二種類以上を用いてプログラムを作成しなさい。 ただし、ラベルコントロールはカウントせず、 リストボックスとコンボボックスは同一種類と見なします。
© Copyright 2024 ExpyDoc