1999年度のプログラミングIIIの授業は終りました。 この授業のページは参照用の資料として保存しているものです。最新の情報・資料は
江上の授業ページ
で。
[
EGAMIX トップ
] > [
授業のページ
] > [
1999年度 プログラミングIII
] > [授業ノート・資料]
[
Back
] [
Index
]
サンプル・プログラム(復習用) sinkei.c について
プログラムの動作について
プログラムの動作
→ フローチャートを考えてみる
関数の役割・引数の受け渡しについて
引数の個数 4個 , 戻り値 なし
関数の呼び出され方(3種類)
display(-1,-1,-1,-1);
1枚も引いていないときの画面を表示する
隠されている部分は # を表示する
display(x1, y1, -1,-1);
(x1,y1) で指定したところをめくった画面を表示する
display(x1, y1, x2, y2);
(x1,y1) と (x2,y2) の2箇所をめくった画面を表示する
変数
map[][]
の動作
簡単に図示してみる
4x4の2次元配列を準備。初期値として1〜8までの数のペアを代入。
このままではゲームにならないからトランプを振る(シャッフル)動作が必要になる。
この動作は乱数関数(
rand
)を用いて実現させる。
ゲームが進み'当たった'カードが取られると、そこには
-1
を代入する。
よって、ゲームの最後は
map[][]
の内容がすべて -1 になって終了する。
課題について
[Q]
このゲームには「終わり」がありません。カードがすべて無くなったら終われるようにプログラムを改良してください。
[A]
方法はいろいろあるが、たとえば次の2通り
'あたり' が8回(= 16枚)に達したかどうかをチェックする
→
改造されたソースプログラム
map[][]
の内容がすべて -1 になったかどうかをチェックする
→
改造されたソースプログラム
[Q]
ゲーム得点を計算するようにする。当たれば +10 外れれば -5。
[A]
'あたり'と'外れ'を判断している if 文内に点数計算を加える
→ 改造されたソースプログラム
[Q]
既に引いてしまった部分(空白部分)を引けないように修正する。
[Q]
同一カードを続けて引いた場合に「当たり」判定されるのを修正する。
[A]
'あたり' と判断され取り除かれたカードには -1 が代入されているので、その部分を指定すると -1 が出たり、'不正な当たり' 判定がされてしまう。
→
map[][]
の内容が -1 のところは引けないようにプログラムする
[
Back
] [
Index
]
egami@egamix.com