なんとなくだらだらと。方向性はまだ決まってない。
当方のプログラムでは、山田巧さん作成のDXライブラリを利用させていただいてます。
本サイト http://homepage2.nifty.com/natupaji/DxLib/index.html
DX Library Copyright (C) 2001-2008 Takumi Yamada.
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
クソース。
気になりだしたら気になるところ? そろそろ明日にまわしたいけど、明日見るソースは奇麗なほうがいい。 ダウンロード Entry010.zip(2009.07.30) マジックナンバー。 自分の世界で統一されてるような気はするんだけど、果たしてこのプロジェクトが終わって 1週間後の俺に、Result(結果)の2番が何で3番が何か言い当てることができるだろうか。 実際、すでに街の処理と戦闘の処理で番号がぶれてるんだから怖い。 enum列挙子で、この乱世のプログラムを一応の形だけでも統一させておく。 main.cpp #include "Unit.h" #include "Histgram.h" enum Result { NONE = 0, // 街滞在時 DEPARTURE, // 出発、旅立ち STAY, // 宿に泊まる // 戦闘時 WIN, // 勝利 RUNAWAY, // 逃亡 LOSE, // 敗北 // システム共通 ABORT, // 強制終了 UNKNOWN // 不明 }; int NormalAttack(Unit &lst, Unit &rst) 既存箇所の変更 main.cpp Result Battle(Unit &player, Unit &enemy) { int cnt = 1, cmd, cmdcnt; Result res; while(1){ cmdcnt = 0; Sleep(600); cout << "\ncnt:" << cnt << "\n"; player.ShowStatus(); enemy.ShowStatus(); while(1){ cout << "どうする?(1:攻撃 2:逃げる 9:終了):"; if(cmdcnt){ cin.clear(); cin.ignore(); } cmd = 0; cin >> cmd; cout << "\n"; if(cmd == 1) break; if(cmd == 2) { cout << player.getName() << "は逃げ出した!\n"; break; } if(cmd == 9)break; if((++cmdcnt)>10){cmd = 9;break;} //無限ループ防止 } if(cmd == 9){res = ABORT; break;} if(cmd == 2){res = RUNAWAY; break;} if(NormalAttack(player,enemy)){res = WIN; break;} if(NormalAttack(enemy,player)){res = LOSE; break;} if((++cnt)>100)break; // 無条件ループなので、無限ループ防止 } return res; } int main() { Result res; int cmd,cmdcnt; srand(static_cast<unsigned int>(time(NULL))); : : ← このへん、途中省略っぽいニュアンス。理解してくれい。 : // 戦闘 for(int i=0;i<5;++i) { enemy = eList[i]; res = Battle(player,enemy); if(res==WIN){ // プレイヤー勝利 cout << "勝ち。\n"; } else break; } if(res==WIN){ // 戦闘勝利で終了してるってことは、大勝利の予感 cout << "\n\n*+*+* 完 全 勝 利 !! *+*+*\n"; cout << "勇者 " << player.getName() << " の名を永遠に称えるがよい。\n\n"; break; // ゲーム終了 } if(res==LOSE){ cout << player.getName() << " は死亡した。\n\n-GAME OVER-\n"; break; // ゲーム終了 } if(res==ABORT) break; // 「終了」コマンド選択 } cout << "\n\n終了。" << endl; return 0; } なんか完全に勇み足だったような。 ちょっと整理してみたふうな感じだけど、プログラムが長くなっただけ。 全体を支配している変数 res(結果)はこんな感じでひとつにまとまったけど、 入力部分の cmd 変数を、このres世界に引きずり込むことはできなかった。 あくまでも表示どおり、「1:戦闘 2:逃げる 9:終了」であって、この表記がぶれるのは俺は嫌だ。 あ。 直接数字を入力するタイプじゃなく、グラフィック使って、上下カーソルでコマンド選ぶタイプなら ボタンの裏にどんな数字書いてあるかわからないし、enumResult世界の律に入れることが できるかな。できるんだろうな。 そうしたほうが美しいよな。 ダウンロード Entry010.zip(2009.07.30) PR |
カレンダー
カテゴリー
フリーエリア
最新記事
(01/29)
(01/28)
(01/26)
(12/28)
(12/27)
(12/25)
(12/20)
(09/09)
(09/09)
(09/09)
(09/08)
(09/08)
(09/08)
(09/06)
(09/05)
(08/27)
(08/27)
(08/27)
(08/25)
(08/23)
ブログ内検索
P R
アクセス解析
カウンター
|