C言語での質問です。
ロシアンルーレットのルール
先攻になった方は,銃弾が1,3,5発目のいずれかに込められた(1〜6の乱数により決定)場合は「死亡」→負け
•後攻になった方は,銃弾が2,4,6発目のいずれかに込められた(1〜6の乱数により決定)場合は「死亡」→負け
•先攻/後攻は交互に引き金を引く.
先攻、後攻のソースコードはかけたのですが、ロシアンルーレットの部分が全くできないです。できれば、breakと continueや、whlie for if文などを使ってやりたいです。どなたかお願いします。
C言語 ロシアンルーレットについて
Re: C言語 ロシアンルーレットについて
そのままC言語で書いてしまうと Dai さんがやることが無くなってしまい、つまらないだろうから、Python で実装してみました。
参考になれば幸いです。
参考になれば幸いです。
import random
# 弾を入れる枠の数
numBulletSpaces = 6
# 弾を入れる枠
cylinder = [False for _ in range(numBulletSpaces)]
# 1~6の乱数で弾を入れる位置を決定する
bulletPosition = random.randint(1, numBulletSpaces)
# 決定した位置に弾を入れる
cylinder[bulletPosition - 1] = True
# プレイヤー名
players = ["1P", "2P"]
# 次に撃つプレイヤーの添字
nextPlayer = 0
for bullet in cylinder:
if bullet:
# 弾が入っていた場合
print("%s: Ouch!!!!!" % players[nextPlayer])
break
else:
# 空だった場合
print("%s: Safe!" % players[nextPlayer])
# 次のプレイヤーに交代する
nextPlayer = (nextPlayer + 1) % len(players)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: C言語 ロシアンルーレットについて
弾の場所が決まったならばその時点で勝敗が確定する話なので,
【弾の場所を決める → 勝敗を表示する】
だけで良いのではないか? とか思えるが,
一応それっぽく(?)途中経過を表示したいという話なのであれば,単に表示すればよいだけであろう.
すなわち,
【弾の場所を決める → 経過っぽいものを表示する → 勝敗を表示する】
として,間に表示処理を挟めばいい.
【弾の場所を決める → 勝敗を表示する】
だけで良いのではないか? とか思えるが,
一応それっぽく(?)途中経過を表示したいという話なのであれば,単に表示すればよいだけであろう.
すなわち,
【弾の場所を決める → 経過っぽいものを表示する → 勝敗を表示する】
として,間に表示処理を挟めばいい.
//弾の位置を決定する処理.1~6の何れかを返す.
int RandomizeBulletPos()
{ //※実際には疑似乱数でも使って実装されたい
return 3;
}
int main(void)
{
const char *Names[] = { "The1stMan", "The2ndMan" }; //これは単なる表示用.
//(1)弾の場所を決める.
//この時点で全てが確定するので,あとは最低限必要なのは(3)の結果表示だけであろう.
int BulletPos_0Based = RandomizeBulletPos() - 1;
//(2)無駄に経過を表示したいなら,てきとーに表示する
for( int i=0; i<BulletPos_0Based; ++i )
{ printf( "%s : Safe\n", Names[i & 1] ); }
//(3)結果表示.
//この例では「誰が負けたか」を表示している
printf( "%s, Lose", Names[BulletPos_0Based & 1] );
return 0;
}
Re: C言語 ロシアンルーレットについて
おっと,うっかり (2) と (3) とで出力書式が異なっているが,まぁどうでもいいところだ.
Re: C言語 ロシアンルーレットについて
東上☆海美☆「
> 先攻、後攻のソースコードはかけたのですが、
見せてください。
」
> 先攻、後攻のソースコードはかけたのですが、
見せてください。
」
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。
中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。
中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。