2015年11月25日水曜日

【プログラミング】Pythonの勉強 その10 - ロシアンルーレット -

プログラミング初心者の学習記録です。
今回はロシアンルーレットのプログラミングを作ってみたいと思います。

ロシアンルーレットとは拳銃に弾を1発だけ入れて、いつ玉が出るかわからない状態にして、順番に銃口を頭に当てて引き金を引くという大変危険なゲームです。
ロシアンルーレット - Wikipedia

リボルバー式の拳銃は6発まで弾を入れることができるので、ロシアンルーレットで最初の人がハズレを引く可能性は1/6です。
1回毎にシリンダーを回転させるというやり方もあるようですが、今回のプログラムではそれはやりません。
どういうことかというと、2番目の人は1/5、3番目の人は1/4という具合に、段々とハズレを引く可能性が上がっていくようにしたいと思います。



プログラムは、プレイヤーとコンピューターとの1対1の勝負とします。
 ・まず最初に先攻か後攻かを選びます。
 ・1回ごとに「n発目 あなた(コンピューター)の番です。」というメッセージを出します。
 ・緊張感を出すために、エンターを押すまで次のメッセージがでないようにします。
 ・ハズレを引かなかったら「Safe!!!」と、ハズレなら「Baaaaaaaang!!!!」と表示します。
 ・ハズレならば「あなた(コンピューター)の負けです。」と表示します。
 ・6発目まで回ったら、自動的に負けのメッセージがでるようにします。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# coding:shift-jis
import random

order = input('先攻か後攻か選んでください。先攻→0、後攻→1:    ')

n = 0
while True:
    if n !=5: # 1発目から5発目まで
        n += 1
        if order == 0: # playerが先攻ならば
            if n%2 == 1: # 奇数回目は
                turn = 'あなた'
            else: # 偶数回目は
                turn = 'コンピューター'
        else: # playerが後攻なら
            if n%2 == 1: # 奇数回目は
                turn = 'コンピューター'
            else: # 偶数回目は
                turn = 'あなた'
            
        print (str(n) + '発目 ' + turn + 'の番です。')
        x = raw_input() # enterを押すまで次の表示を待つ
        result = random.randint(0,6-n)
    
        if result == 0: # ハズレを引いたとき
            print('Baaaaaaaang!!!!!')
            print(turn + 'の負けです。')
            break # ゲーム終了
        else: # ハズレを引かなかったとき
            print('Safe!!!')
            
    else: # 6発目は自動的に負けを表示する
        if order == 0: # playerが先攻ならば
            y = raw_input()
            print('最後の一発なので、コンピューターの負けです。')
            break
        else: # playerが後攻なら
            y = raw_input()
            print('最後の一発なので、あなたの負けです。')
            break
syntax2html
こんな感じに表示されます。

「while True」の使い方に今ひとつ自信がありませんが、ちゃんと動くみたいなので大丈夫でしょう。
エンターを押すまで次の表示を待つために「raw_input」を使いましたが、「input」を使うとエラーが出ます。何がいけないのかよくわかりません。


思いついたプログラミングのネタは今回で終わりです。
たくさんのエラー表示にあいましたが、自分が考えたとおりに動いてくれるととても嬉しく感じます。プログラミングが好きになりました。

次は「みんなのPython 第3版」を読むことにしました。
これからはPython3を使っていこうと思います。


0 件のコメント:

コメントを投稿