Pythonでレトロゲームをつろう!!(佐藤 誠 の あくまでも独り言)

Pyhtonで2Dレトロゲームを作っていきます!! たまに、Googleアドセンスからグルメにスイーツ、子供の受験、古墳に神社・・・色々と楽しみながら書い伝えていきます!!

じゃんけんゲームの作り方③ (if・elif・での勝敗判定)  Let's Python 8(初級編)

ブログランキング・にほんブログ村へにほんブログ村

どうもです〜 Python誠です。

 

じゃんけんゲームの第3回目を解説していきます。

今回は・・・

  1. if 、elif 、 を使った勝敗判定
  2. 短いプログラムで同じ結果をだす方法

の2つを紹介します。🤔 

 

「if、elif 、を使った勝敗判定」 

 こちらが、前回勝敗判定のプログラムを追加した「じゃんけんプログラム」です。

# 「モンスターじゃんけん③」



import random                    



jan = ["グー", "チョキ", "パー"]



# プレーヤー

print("0:グー 1:チョキ 2:パー")

p = int(input("じゃんけん・・・"))

player = jan[p]

print("プレーヤー: " + player)



# モンスター

m = random.randint(0, 2)

monster = jan[m]

print("モンスター: " + monster)



# 勝敗判定
if player == monster: print("引き分け") elif player == "グー": if monster == "チョキ": print("勝ち") elif monster == "パー": print("負け") elif player == "チョキ": if monster == "グー": print("負け") elif monster == "パー": print("勝ち") elif player == "パー": if monster == "グー": print("勝ち") elif monster == "チョキ": print("負け")

 

# 勝敗判定 について解説していきます。

 

www.makotoblog.net

 

if文での条件分岐

こちらが# 勝敗判定 のすぐ下2行で、「あいこの時」に実行されます。

if player == monster: 

    print("引き分け")
  • 「 if 」は日本語に訳すと「 もし 」ですね。
  •  ifを使ったコードをif文といい、もし条件が成りたてば、つづくブロック(半角スペース4字下げした部分)を実行します。
  • 上のコードでみてみると、if に続く player == monster :  がその条件となり、もし変数playerと変数monsterの中身(出し手)が一緒なら、「 print("引き分け") 」が実行されます。 もし一緒でなければ実行されません。

 

elif文での条件分岐

こちらが if 文につづく5行で、プレーヤーが「グー」の時に、モンスターの出し手に応じて勝敗を出力します。

elif player == "グー":

    if monster == "チョキ":

        print("勝ち")

    elif monster == "パー":

        print("負け")
  •  「 elif 」は、先の if 文の条件が成り立たなかった時に、別の条件が成り立つか?を確認し、条件が成り立てばつづくブロックを実行します。
  • 上のコードでみてみると、elif に続く条件「 プレーヤーがグーの時 」に、「 モンスターがチョキ 」か?「 パー 」か?を判定し、勝敗を出力します。

 

つづく、elif文  

つづく5行ごとの elif で、チョキの時は・・・、パーの時は・・・と条件を分岐し勝敗を出力していきます。

elif player == "チョキ":

    if monster == "グー":

        print("負け")

    elif monster == "パー":

        print("勝ち")



elif player == "パー":

    if monster == "グー":

        print("勝ち")

    elif monster == "チョキ":

        print("負け")

これで全ての勝敗パターンを網羅できました。 

 

何度か実行してみよう!

打ち込んだPythonコードを、IDLEのシェルウィンドウで 新規ファイルに保存し実行 します。

何度か実行してみて、勝敗判定が正しく行われるか?確認してみましょう! 😳

じゃんけんプログラムを何度か実行

 

それぞれの出し手に合った正しい勝敗結果が表示されました。

 

if文はゲームプログラムに限らず、あらゆるプログラムで使用されます。

しっかり、復習しておきましょう!🤔

 

www.makotoblog.net

 

じゃんけんプログラムを短くしよう!

モンスターじゃんけん③では、if文やelif文を使い、出し手・総当たりで勝敗判定を完成させました。

これはこれで、理解しやすいコードになるのですが・・・このままだとプログラムが長すぎます。

今後ゲームプログラミングを作っていくにあたり、長すぎるプログラムはメンテナンスがしにくく、無駄にコンピューターに負担をかけてしまいます。

結果、操作性やレスポンスの悪いプログラムになってしまう恐れがあります。

 

ここで、短いプログラムで同じ結果をだす方法を紹介します。🤔

 

次のプログラムを入力し、実行してみてください。 

# ゲーム:「モンスターじゃんけん④」

import random

jan = ["グー", "チョキ", "パー"]
judge = ["あいこ", "負け", "勝ち"]

# プレーヤー
print("0:グー 1:チョキ 2:パー")
p = int(input("じゃんけん・・・"))
print("プレーヤー: " + jan[p])

# モンスター
m = random.randint(0, 2)
print("モンスター: " + jan[m])

# 勝敗判定
i = (p - m) % 3
print(judge[i])

 

実行すると、こんなに短いプログラムなのに モンスターじゃんけん③ と全く同じ結果になりました!!😳

 

次回は、じゃんけんプログラムを短くかく方法を解説します。

 

それでは、また次回お会いしましょう!

「 Let’s Python!!🤗」 

・・・ by Python誠。