No.5

第5回 ゲーム作成

  • 班でのゲームアイデア
  • 「エチケット」というゲームで1対1の形式で行う。両者ともに{1,2,3,4,5}の手持ちの数があり、交互に相手の出した数より大きい数字を出していく
    5を出すと一度、場をリセットして、手持ちの数の中から再び数字を出し合う。手持ちの数がすべてなくなった方の勝利。というもの。
  • 班員の協力により作成
  • ソースコード
    1. import random
    2. import copy
    3. print("こんにちは")
    4. print("1対1で行うゲームです。まず先攻後攻を決めます。先攻から1から5の数字を選んでいき、先にすべて出し終わったほうの勝ちです。")
    5. print("しかし、数字を選ぶ際、必ず相手より大きな数字を選ばなければなりません。自分の数字に相手より大きな数字がない場合パスになります。")
    6. print("パスの場合は0を入力してください")
    7. mochite_com=[1,2,3,4,5]
    8. mochite_pla=[1,2,3,4,5]
    9. te_com=0
    10. te_player=0
    11. for i in range(1,20):
    12.     print(i,"ターン")
    13.     # print("c",mochite_com)
    14.     print("p",mochite_pla)
    15.     if te_com!=5:
    16.         te_player = int(input("数字を入れてください"))
    17.         if 0<te_player <= 4:
    18.             mochite_pla.remove(te_player)
    19.             #プレイヤーの手が4以下だったらコンピュータにその数字以上の手を出してほしい
    20.             #コンピュータの持ち手から出す候補を作成(プレイヤーの出してより大きい)
    21.             dasu_koho = copy.copy(mochite_com)
    22.             #出す候補のなかでプレイヤーの手より小さいものを削除
    23.             for c in range(1, te_player+1):
    24.                 try:
    25.                     dasu_koho.remove(c)
    26.                 except:
    27.                     pass
    28.             #出す手の候補からランダムにコンピュータの手を選ぶ
    29.             try:
    30.                 te_com = random.choice(dasu_koho)
    31.                 print("COM", te_com)
    32.                 #コンピュータが出した手をコンピュータの持ち手から削除
    33.                 mochite_com.remove(te_com)
    34.             except:
    35.                 print("COMパス")
    36.                 pass
    37.         elif te_player==0:
    38.             print("Playerパス")
    39.             # コンピュータの手
    40.             dasu_koho = copy.copy(mochite_com)
    41.             # 出す手の候補からランダムにコンピュータの手を選ぶ
    42.             te_com = random.choice(dasu_koho)
    43.             print("COM", te_com)
    44.             # コンピュータが出した手をコンピュータの持ち手から削除
    45.             mochite_com.remove(te_com)
    46.         else:
    47.             mochite_pla.remove(te_player)
    48.             #プレイヤーの手が5だったらパスしたい
    49.             print("COMパス")
    50.     else:
    51.         print("Playerパス")
    52.         #コンピュータの手
    53.         dasu_koho = copy.copy(mochite_com)
    54.         # 出す手の候補からランダムにコンピュータの手を選ぶ
    55.         te_com = random.choice(dasu_koho)
    56.         print("COM", te_com)
    57.         # コンピュータが出した手をコンピュータの持ち手から削除
    58.         mochite_com.remove(te_com)
    59.     if len(mochite_pla)==0:
    60.         print("Playerの勝ち")
    61.         exit()
    62.     elif len(mochite_com) == 0:
    63.         print("COMの勝ち")
    64.         exit()
  • 作成
  • 実際作り始めてみるとかなり難しい。苦戦している中で、他のゲームアイデアが出てきたのでゲームアイデア2を創ることにした。
  • ゲームアイデア2
  • 1対1で行うゲーム。交互に連続した相手より大きい数字を言って先に10を言えた方の勝利。ただし数字1ターンにつき最大3つまでしか数字は言えない。
  • ソースコード
    1. name=input("プレイヤー1、名前を教えて下さい")
    2. number=int(input("数字を入れてください"))
    3. if 1<= number <4:
    4.     import random
    5.     # 重複なし
    6.     def rand_ints_nodup(a, b, k):
    7.         ns = []
    8.         while len(ns) < k:
    9.             n = random.randint(a, b)
    10.             if not n in ns:
    11.              ns.append(n)
    12.         return ns
    13.     print(rand_ints_nodup(number+1, number+3, 1))
    14.     if (rand_ints_nodup(number+1, number+3, 1))==2:
    15.         numberA = int(input("数を入れてください"))
    16.         if 3 <= numberA <=5:
    17.             import random
    18.             # 重複なし
    19.             def rand_ints_nodup(a, b, k):
    20.                 ns = []
    21.                 while len(ns) < k:
    22.                     n = random.randint(a, b)
    23.                     if not n in ns:
    24.                         ns.append(n)
    25.                 return ns
    26.             print(rand_ints_nodup(numberA + 1, numberA+3, 1))
    27.         elif numberA <= 2 or numberA >= 6:
    28.             print("もう一回")
    29.     if (rand_ints_nodup(number+1, number+3, 1))==3:
    30.         numberA= int(input("numberを入れてください"))
    31.         if 4<=numberA<=6:
    32.             import random
    33.             def rand_ints_nodup(a,b,k):
    34.                 ns=[]
    35.                 while len(ns)<k:
    36.                     n=random.randint(a,b)
    37.                     if not n in ns:
    38.                         ns.append(n)
    39.                 return ns
    40.             print(rand_ints_nodup(numberA+1,numberA+3,1))
    41.         elif numberA<=3 or numberA>=7:
    42.             print("one more")
    43.     if (rand_ints_nodup(number+1, number+3, 1))==4:
    44.         numberA= int(input("入れてください"))
    45.         if 5<=numberA<=7:
    46.             import random
    47.             def rand_ints_nodup(a,b,k):
    48.                 ns=[]
    49.                 while len(ns)<k:
    50.                     n=random.randint(a,b)
    51.                     if not n in ns:
    52.                         ns.append(n)
    53.                 return ns
    54.             print(rand_ints_nodup(numberA+1,numberA+3,1))
    55.         elif numberA<= 4or numberA>=8:
    56.             print("more")
    57.     if (rand_ints_nodup(number+1, number+3, 1))==5:
    58.         numberD= int(input("hayaku入れてください"))
    59.         if 6<=numberA<=8:
    60.             import random
    61.             def rand_ints_nodup(a,b,k):
    62.                 ns=[]
    63.                 while len(ns)<k:
    64.                     n=random.randint(a,b)
    65.                     if not n in ns:
    66.                         ns.append(n)
    67.                 return ns
    68.             print(rand_ints_nodup(numberA+1,numberA+3,1))
    69.         elif numberD<=5 or numberD>=9:
    70.             print("mokkai")
    71.     if (rand_ints_nodup(number+1, number+3, 1))==6:
    72.         numberA= int(input("入れて"))
    73.         if 7<=numberA<=9:
    74.             import random
    75.             def rand_ints_nodup(a,b,k):
    76.                 ns=[]
    77.                 while len(ns)<k:
    78.                     n=random.randint(a,b)
    79.                     if not n in ns:
    80.                         ns.append(n)
    81.                 return ns
    82.             print(rand_ints_nodup(numberA+1,numberA+3,1))
    83.         elif numberA<=6 or numberA>=10:
    84.             print("残念")
    85.     if (rand_ints_nodup(numberA+1,numberA+3,1))==7:
    86.         numberB= int(input("お願いします"))
    87.         if 8<=numberB<=9:
    88.             import random
    89.             def rand_ints_nodup(a,b,k):
    90.                 ns=[]
    91.                 while len(ns)<k:
    92.                     n=random.randint(a,b)
    93.                     if not n in ns:
    94.                         ns.append(n)
    95.                 return ns
    96.             print(rand_ints_nodup(numberB+1,10,1))
    97.         elif numberB<=7 or numberB>=11:
    98.             print("ショックです")
    99.         elif numberB==10:
    100.             print("YOU WIN")
    101.     if (rand_ints_nodup(numberA+1,numberA+3,1))==8:
    102.         numberB= int(input("どうぞ"))
    103.         if 9<=numberB<10:
    104.             import random
    105.             def rand_ints_nodup(a,b,k):
    106.                 ns=[]
    107.                 while len(ns)<k:
    108.                     n=random.randint(a,b)
    109.                     if not n in ns:
    110.                         ns.append(n)
    111.                 return ns
    112.             print(rand_ints_nodup(numberB+1,10,1))
    113.         elif numberB<=8 or numberB>=11:
    114.             print("ごめんなさい")
    115.         elif numberB==10:
    116.             print("ファンタスティック")
    117.     if (rand_ints_nodup(numberA+1,numberA+3,1))==9:
    118.         numberB= int(input("come on"))
    119.         if numberB==10:
    120.             print("congratulation")
    121.         elif numberB<=9 or numberB>=11:
    122.             print("oh my...")
    123.     if (rand_ints_nodup(numberA+1,numberA+3,1))==10:
    124.         print("YOU LOSE")
    125. elif number <1 or number >5:
    126.     print("GAME OVER")
  • やってみて
  • 現時点(2021/11/02)では完成しておらずエラーが出てしまう。ランダムと条件分岐を多用したが、思った動きにならず苦戦している。
       完成させたい

  • 参照