本当にプログラムソースは見直していますか?
> case 2:
> myspeed=100-a;
> a=rand()%20;
> enemyspeed=100-a;
> a=rand()%20;
おかしいとは思いません?
reshiaさん
もちろんよく見直しました。
しかしそこは別におかしいと思いませんでした。
自分ではわからないので、どうおかしいか教えて下さい。お願いします。
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
int main(void) {
int my_hp = 100, my_mp = 5, my_speed = 100;
int enemy_hp = 100, enemy_speed = 100;
srand((unsigned)time(NULL));
printf(ラウンジが現れた\n);
for (;;) {
int command;
int damage;
printf(\nたか HP:%d MP:%d\n, my_hp, my_mp);
printf(ラウンジ HP:%d\n, enemy_hp);
printf(0:攻撃 1:呪文 2:逃げる\n>);
scanf(%d, &command);
switch(command){
case 0:
{
int damage = rand() % 20;
enemy_hp -= damage;
printf(ラウンジに%dのダメージ\n, damage);
break;
}
case 1:
{
int magic;
printf(0:悩む 1:ホイミ 2:メラ\n>);
scanf(%d, &magic);
if (!magic) break;
switch (magic) {
case 1:
if (my_mp < 3) printf(MPが足りない\n);
else {
my_mp -= 3;
my_hp += 30;
printf(HPが30回復\n);
}
break;
case 2:
if (my_mp < 5) printf(MPが足りない\n);
else {
int damage = rand() % 20 + 10;
my_mp -= 5;
enemy_hp -= damage;
printf(ラウンジに%dのダメージ\n, damage);
}
break;
}
break;
}
case 2:
if (my_speed-rand()%20 < enemy_speed-rand()%20)
printf(たかは回り込まれた\n);
else {
printf(たかは逃げた\n);
return 0;
}
break;
}
if (enemy_hp <= 0) { printf(ラウンジを倒した\n); break; }
damage = rand() % 20;
my_hp -= damage;
printf(たかは%dのダメージ\n, damage);
if (my_hp <= 0) { printf(たかは死んだ\n); break; }
getchar();
}
return 0;
}
> > > case 2:
> > > myspeed=100-a;
> > > a=rand()%20;
> > > enemyspeed=100-a;
> > > a=rand()%20;
> > おかしいとは思いません?
> もちろんよく見直しました。
> しかしそこは別におかしいと思いませんでした。
先のスレッドで、私がした指摘を見直してもらえますか。
tib 2005/06/01(水) 11:32:12
同様のミスをここでもしているんです。
一度指摘されたミスを、指摘されたところだけ直して、それが一体どういうミスだったの
か、同様のミスを他の所でもしていないか、というチェックをしていないようですね。言
われたままの修正だけなら「考えていない」と思われてもしかないのではないでしょうか。
1回でやめようと思ったけど
確かに変かな
>1: case 2:
>2: myspeed=100-a;
>3: a=rand()%20;
>4: enemyspeed=100-a;
>5: a=rand()%20;
>6: if(enemyspeed>myspeed){
>7: a=rand()%20;
>8: myHP-=a;
#5:のaはいつ、使用されるんでしょうか、部分しか見てないから、俺の勘違いか
な?
デバックでステップ実行すると分かると思うけど
考えるより、実行してみれば?・・・値が示してくれるんじゃない
>2: myspeed=100-a;
>3: a=rand()%20;
>4: enemyspeed=100-a;
>5: a=rand()%20;
>6: if(enemyspeed>myspeed){
>7: a=rand()%20;
>8: myHP-=a;
#5:のaはいつ、使用されるんでしょうか、部分しか見てないから、俺の勘違いか
な?
デバックでステップ実行すると分かると思うけど
考えるより、実行してみれば?・・・値が示してくれるんじゃない
いや、実行したとき、この部分には何も問題なかったので、それだけに困惑してます。
5のaですが、自分の素早さとともに、敵の素早さも戦闘中に減少するってことです。
// |д~)ナニコレ 祭リカナニカデスカ?
// 祭リナラ 参加セズニハ イラレナイ
>いや、実行したとき、この部分には何も問題なかったので、それだけに困惑してます。
表面上は正常に動作しているように見えますが
その処理は多分に潜在的な問題を発生させる原因になります。
しかも、1関数内で全て実装している為に、よりその問題点が
表面上にでなくなっているんでしょう。
「めったに問題は出ないんだからいいじゃん」と
思われるかもしれませんが、この手の問題点は発覚した際
原因の特定にものすごく手間取ります。
(なにせ一見普通のソースのように見えるのですから)
学校の課題ということですので、どの程度のソースが
求められているのかは判断しがたいですが
私なら20点中4,5点減点するところです。
ちゃんと調べられて、努力されているということですので
がんばって問題点を突き止めてください。
// 私も極稀にやってしまうのですが、MSのC#ならちゃんと
// warningなり errorなり吐いてくれるので助かってます。
> 会ったこともない人間に対して「自分で考えてない!」などと勝手に
> 決め付けるのはやめろ!!
たか さん自身の「疑問点が見つかり次第」という発言を受けたもので、
いろいろとソースを弄られたり苦労されていること自体は分かりますし、
私としては たか さんがまったく自分で努力していないと決め付けたりつもりは
ありません。
ただ、不適切な例えが たか さんに不快感をあたえてしまったことは確かなようで、
その点については申し訳ありませんでした。
補足説明と若干の釈明をさせていただけば、
> そういう趣旨
「出題者があえて質問を禁じた」という意向を私なりに推測すると
・「見つけた疑問点を自分でじっくり考え、整理する」練習の一環
・「独力で一プログラムを完成させる」という経験を積んで欲しい
・「あえて難題を与え対応がみたい」(普通はその後に説明/討論等を用意しているはず)
あたりではないかと思いました。
そうすると、せっかくの疑問点を見つけ次第に他人に質問してしまうと
課題の意味も薄れますし、出題者の思惑も台無しにしてしまいかねませんので、
その時点での質問は避けるほうがよく、またそれに対する余計な口出しも
差し控るべきと思いました。
先の発言の主旨はあくまでここにあるものとご理解いただければ幸いです。
>#5:のaはいつ、使用されるんでしょうか、部分しか見てないから、俺の勘違いか
な?
この質問で難しかったみたいですね?!
>5のaですが、自分の素早さとともに、敵の素早さも戦闘中に減少するってことです。
変!・変!・とっても変!
ねえ~!ねえ~!・・本当に「たか さん」の仕様とおりなの?
見ている・考えている・・・方向が間違ってませんか?
こんな回答をもらうと言うことは、間違いなく実行検証していないと受け取っても
しょうがない、でしょ!
連続65、000回くらい「逃げて」みれば~
たいがい、一発目で実行時エラーになりそうなものだがな~
デバックコンパイル時は変数初期化、してくれるコンパイラもいるから
エラーにならないかもね?
質問変更します
#2:のaはいつの値(どのような状況下で取得されたもの)でしょうか?
これで理解できないのなら、回答者が回答書くだけ無駄な努力ですね
ところで、指摘事項(たか さん としては問題なしと思っていること)以外の
疑問って何?
このスレッドを続ける意味はあるの?
> 会ったこともない人間に対して「自分で考えてない!」などと勝手に
> 決め付けるのはやめろ!!
>
確かにあったことないけど私も色々な面で「考えてない(足りないのか?)」と思います
よ。
まず、先生にも友達にも聞くのはNGと言っていながら掲示板になぜ投稿してるの?
掲示板で回答してる人が先生か友達という可能性はないんですか?それともたかさんは投
稿者全員のプロフィールがわかるとか(あったことも無いような人の・・・)
その他の判断材料として投稿されているプログラムですね。
まず、人に見せるならある程度整理して見やすいようにしないと(RiSK氏のサンプルのよ
うにインデントを上手く使用するだけで見栄えが大分違うと思いますよ。)
> 私なら20点中4,5点減点するところです。
>
私なら15点ぐらい減点しますよ。(笑
正しく動作しないプログラムに点数は上げられません。残りの5点は努力賞です。
あとはプログラムの見易さによって+αですね。(合計20点以上)
>#5
>
私もこの板の始めの方で指摘してるんですけど理解できてないのね。
ご指摘された点は改めて修正し直しました。たびたびのご指摘ありがとうございまし
た。
ところでこの場合、自分の攻撃と敵の攻撃は別々に書いた方がいいのでしょうか?
敵の分は敵の分で、また別にswitch分で書いた方がいいでしょうかね?
実は今のプログラムだと敵がどんな時にどんな種類の攻撃を仕掛けてくるのか
わかりきっていて面白みに欠けます。
しかし敵の攻撃方法をランダムにするにはどうすればいいのかがわかりません。
出てくる数値などをランダム設定する方法はわかるのですが、攻撃方法自体はどのよう
にすればランダム設定できるのでしょうか?
またswitch(~)とした時、(~)の中の数値は必ずしもscanfで読み込まなくていいので
しょうか?
自分の攻撃の場合は、読み込みますけど、敵の攻撃まで読み込むわけにはいかないので
そのあたり困惑してます。
>ご指摘された点は改めて修正し直しました
だれのどんな指摘に対しての回答か?
>ところでこの場合、自分の攻撃と敵の攻撃は別々に書いた方がいいのでしょうか?
の前に変数の使い方(使い分け)を勉強してください
またswitch(~)とした時、(~)の中の数値は必ずしもscanfで読み込まなくていいので
しょうか?
はい、そうです。
ところで、なぜ、そのような制約があると思われたのでしょうか?
いまさらの感はありますけれど、しゃしゃり出てみました。
たかさんはfor文までしか習っていないと書かれていますけれど、
いったい何処までの制御文なら使っていいのですか?
使ってもかまわないといわれている制御文とか関数とか列挙できるなら
列挙した方がよいような気がします。
何かをアドバイスしてもそれは使えないと言われてしまうと
せっかくのアドバイスが無駄になってしまいます。
制約があるのであれば、質問を出す時に制約もきちんと提示しておかないと
片手落ちだと思いますよ。
あと、scanfがどんな関数でどんな処理をするのかきちんと理解されていますか?
敵の攻撃パターンはユーザーが入力するものではないとすれば、
どうすればランダムに選択したような効果が出せるでしょう?
既にたかさんが書かれているプログラムの中にヒントはあると思いますけれど。
自分が書いたプログラムの動作がきちんと把握できているのであれば、
多分、思いつけると思います。
あと、先生や友達に尋ねるのは駄目なのにこういう掲示板で質問するのはOKなんですか?
尋ねる対象が変わったというだけで同じ事だと思います。
尋ねるのが駄目という事になるとWeb上を検索して自力で情報をそろえるくらいまでしか
許されないのではないかと思うのですが。
ドラクエのパクリじゃ、どうがんばっても面白くならないぞ。