今回は受講生(K氏)の作成したお題を作成してみよう。どこかで見たことある設定だな。。。と思ったら「賭博黙示録カイジ」に出てきたゲームですね!
OK,では作ってみましょう!
目的
[ゲーム内容]
○「皇帝」「市民」「奴隷」の3種類のカードが登場します
○プレイヤーは「市民」4枚、「奴隷」1枚のカードを所持しています
○コンピューターは「市民」4枚、「皇帝」1枚のカードを所持しています
○コンピューターとプレイヤーが出したカードの相性で勝敗が決まります
○「皇帝」は「市民」に勝ち、「市民」は「奴隷」に勝ち、「奴隷」は「皇帝」に勝ちます
○「市民」と「市民」では引き分けになるため、再度勝負になります
○その際、使用した「市民」のカードはなくなります
仕様
◯処理を作成する際、コンピュータが出すカードの順番はランダムとする
◯>>enterと出力してエンターキーの入力があった場合に処理が進むようにする
◯正常系のみを考慮すればよい。(ユーザーは必ず0か1を入力する)
実行例
実行例1
ようこそeカードゲームへ
>>enter
1 戦目
手持ちのカード: 市民 4 枚 奴隷 1 枚
カード選択:「市民」なら「0」、「奴隷」なら「1」を入力>>0
カードオープン!
>>enter
あなた: 市民 PC: 市民
引き分け!
>>enter
2 戦目
手持ちのカード: 市民 3 枚 奴隷 1 枚
カード選択:「市民」なら「0」、「奴隷」なら「1」を入力>>0
カードオープン!
>>enter
あなた: 市民 PC: 皇帝
あなたの負け!
GAME OVER
実行例2
ようこそeカードゲームへ
>>enter
1 戦目
手持ちのカード: 市民 4 枚 奴隷 1 枚
カード選択:「市民」なら「0」、「奴隷」なら「1」を入力>>0
カードオープン!
>>enter
あなた: 市民 PC: 市民
引き分け
>>enter
2 戦目
手持ちのカード: 市民 3 枚 奴隷 1 枚
カード選択:「市民」なら「0」、「奴隷」なら「1」を入力>>1
カードオープン!
>>enter
あなた: 奴隷 PC: 皇帝
あなたの勝ち!
Congratulations!
Let’s challenge!
3すくみなので基本的にはジャンケンの作成に似ているが、カードの枚数が限定されているため、リストの演習にもなりそうだ。挑戦してみよう。
解答例
import random
user_cards = ["市民"] * 4 + ["奴隷"]
pc_cards = ["市民"] * 4 + ["皇帝"]
print("ようこそeカードゲームへ")
for i in range(1, len(user_cards) + 1):
input(">>enter")
print(f"{i} 戦目")
print(f"手持ちのカード: 市民 {len(user_cards)-1} 枚 奴隷 1 枚")
select = int(input("カード選択:「市民」なら「0」、「奴隷」なら「1」を入力>>"))
print("カードオープン!")
input(">>enter")
if select == 0:
user = user_cards.pop(0)
else:
user = user_cards.pop()
pc = pc_cards.pop(random.randrange(len(pc_cards)))
print(f"あなた: {user} PC: {pc}")
if user == pc:
print("引き分け")
continue
if user == "奴隷" and pc == "皇帝":
print("あなたの勝ち!")
print("Congratulations!")
else:
print("あなたの負け!")
print("GAME OVER")
break
コメント