なんとなくだらだらと。方向性はまだ決まってない。
当方のプログラムでは、山田巧さん作成のDXライブラリを利用させていただいてます。
本サイト http://homepage2.nifty.com/natupaji/DxLib/index.html
DX Library Copyright (C) 2001-2008 Takumi Yamada.
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
前回これで完成なんて言ってたけど、ゲームが面白くなるかどうかはここから。
もうあとは、ゲームバランスのための微調整。 ダウンロード Entry025.zip (2009.08.04) 宿代は、最後まで10Gではダメだろうなと思ってたから、かなり前の段階で 調整するための前フリ入れてた。 static const int stayPrice = 10; 結局使わなかったけど。 何らかのタイミングで値上げしていけるように仕込んでたけど、よく考えたら このままだと、この宿代もセーブの対象にしないといけなくなるんだよな。 それなら、プレイヤーの足元(パラメーター)見て宿代決めてやろうかと。 main.cpp Result TownEvent(Player& player) { Result res; int cmd,cmdcnt = 0; // static int stayPrice = 10; cout << "\n\n街にいます。\n"; while(1){ cmd = 0; res = NONE; player.ShowAllStatus(); cout << "\n1:出撃\n" << "2:宿屋(" << player.GetStayPrice() << "G) 体力 " << player.getShowHP() << "\n" << "3:体力強化(" << player.TrainingCost(THP) <<"G)\n" << "4:攻撃訓練(" << player.TrainingCost(TAtk) <<"G)\n" << "5:防御訓練(" << player.TrainingCost(TDef) <<"G)\n" << "6:素早さ (" << player.TrainingCost(TAgi) <<"G)\n" << "9:終了\n" << "どうする?"; if(cmdcnt){ cin.clear(); cin.ignore(); } cin >> cmd; cout << "\n"; switch(cmd){ case 1: // 出撃 res = DEPARTURE; break; case 2: // 宿泊 if(player.Stay()) Save(player); break; case 3: // 体力強化 player.Training(THP); break; case 4: // 攻撃訓練 player.Training(TAtk); break; case 5: // 防御訓練 player.Training(TDef); break; case 6: // 素早さ訓練 player.Training(TAgi); break; case 9: res = ABORT; break; } if(res!=NONE) break; if((++cmdcnt)>100){res = ABORT; break;} //無限ループ防止 } return res; } プレイヤークラス Player.h class Player : public Unit { public: bool Stay(); // 宿に泊まる void AddMoney(int gd); // 金額加算 void ShowAllStatus(); void Training(TrainingMenu tM); // 強化訓練(3種) int TrainingCost(TrainingMenu tM); // 強化コスト string getShowHP(); string GetSaveTxt(); // セーブ用の文字列を作る int GetStayPrice(); // 宿代の計算 }; : : int Player::GetStayPrice() { double sp; sp = (( MaxHP + (Atp+Dfp+Agi)*4)/10*((1000+Atp+Dfp+Agi)/1000)); return(static_cast<int>(sp)); } bool Player::Stay() { int price = GetStayPrice(); if(HP == MaxHP){ cout << "体力満タンです。 " << getShowHP() << "\n" << "泊まる必要ありませんよ。\n"; } else if(Money >= price){ cout << Name << "は、宿に泊まった・・・\n体力が全快した。\n"; HP = MaxHP; Money -= price; return true; } else { cout << "お金がたりませんよ!\n"; } return false; } 宿代把握してるのがメインの TownEvent()関数から Player クラスに移ったので Stay()メソッドに宿代を知らせる必要が無くなったわけだ。 そのへんの変更だけ。 追加したGetStayPrice()は、これまた適当に感性だけで。 sp = (( MaxHP + (Atp+Dfp+Agi)*4)/10*((1000+Atp+Dfp+Agi)/1000)); 前半は、まず能力値の合計を出す。HPは他の能力の4分の1ぐらいの価値。 初期値からだったら、30+(8+5+6)×4 = 106 で、これの1割が基準。 sp = (( MaxHP + (Atp+Dfp+Agi)*4)/10*((1000+Atp+Dfp+Agi)/1000)); これだけじゃ増加の割合が一直線すぎて面白くないようなので、ちょっと細工。 初期値だと、(1000+8+5+6)÷1000 = 1.019 この数値を掛けることで、1.02%ほど宿代を上乗せする気なんだな。 キャラが弱いうちは効いてこないけど、能力の合計が1000超える頃には 宿代が基準値の2倍になる計算。 HP1500・500・300・200で宿代1100G。 能力値上昇との兼ね合い考えたら、宿代こんなもんかなと思う。 実際プレイしてみないとやっぱりわからない、しょせんは机上の空論。 ダウンロード Entry025.zip (2009.08.04) そうそう。 調整中だから、プレイヤーデータの削除はコメントにしてある。 負けるまで突撃したりするから、それでいちいち消えるのもうっとおしいし。 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
アクセス解析
カウンター
|