溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎么實現簡單石頭剪刀布游戲

發布時間:2022-03-03 15:01:45 來源:億速云 閱讀:449 作者:小新 欄目:開發技術
# Python怎么實現簡單石頭剪刀布游戲

## 引言

石頭剪刀布是一種經典的手勢游戲,規則簡單卻充滿趣味性。本文將詳細介紹如何使用Python實現一個簡單的石頭剪刀布游戲,涵蓋從基礎實現到功能擴展的全過程。通過這個項目,初學者可以練習條件判斷、循環結構、隨機數生成等基礎編程概念。

---

## 一、游戲規則分析

### 1.1 基本規則
- 石頭 勝 剪刀
- 剪刀 勝 布
- 布 勝 石頭
- 相同手勢為平局

### 1.2 程序流程
1. 玩家輸入選擇
2. 電腦隨機生成選擇
3. 比較雙方選擇
4. 輸出結果并詢問是否繼續

---

## 二、基礎實現代碼

### 2.1 核心代碼實現

```python
import random

def play_game():
    choices = ['石頭', '剪刀', '布']
    
    while True:
        player = input("請輸入你的選擇(石頭/剪刀/布):").strip()
        if player not in choices:
            print("輸入無效,請重新輸入!")
            continue
            
        computer = random.choice(choices)
        print(f"電腦選擇了:{computer}")
        
        if player == computer:
            print("平局!")
        elif (player == '石頭' and computer == '剪刀') or \
             (player == '剪刀' and computer == '布') or \
             (player == '布' and computer == '石頭'):
            print("你贏了!")
        else:
            print("你輸了!")
            
        if input("再來一局?(y/n)").lower() != 'y':
            break

if __name__ == '__main__':
    play_game()

2.2 代碼解析

  • random.choice():隨機選擇列表中的元素
  • 三層嵌套的條件判斷實現勝負邏輯
  • while循環保證游戲可重復進行

三、功能擴展實現

3.1 添加計分系統

def play_game_with_score():
    choices = ['石頭', '剪刀', '布']
    score = {'玩家': 0, '電腦': 0, '平局': 0}
    
    while True:
        player = input("請輸入你的選擇(石頭/剪刀/布):").strip()
        # ...(省略輸入驗證部分)
        
        if player == computer:
            score['平局'] += 1
            print("平局!")
        elif (player, computer) in [('石頭','剪刀'), ('剪刀','布'), ('布','石頭')]:
            score['玩家'] += 1
            print("你贏了!")
        else:
            score['電腦'] += 1
            print("你輸了!")
            
        print(f"當前比分 - 玩家:{score['玩家']} 電腦:{score['電腦']} 平局:{score['平局']}")
        
        # ...(省略繼續游戲部分)

3.2 添加輸入驗證增強版

def get_player_choice(choices):
    while True:
        player = input("請輸入你的選擇(石頭/剪刀/布):").strip()
        if player in choices:
            return player
        print("輸入無效,請重新輸入!")

3.3 圖形化界面(Tkinter版)

from tkinter import *
import random

def tkinter_version():
    root = Tk()
    root.title("石頭剪刀布")
    
    choices = ['石頭', '剪刀', '布']
    
    def on_click(player):
        computer = random.choice(choices)
        result = ""
        
        if player == computer:
            result = "平局"
        elif (player, computer) in [('石頭','剪刀'), ('剪刀','布'), ('布','石頭')]:
            result = "你贏了"
        else:
            result = "你輸了"
            
        Label(root, text=f"電腦選擇: {computer}").pack()
        Label(root, text=f"結果: {result}").pack()
    
    for choice in choices:
        Button(root, text=choice, command=lambda c=choice: on_click(c)).pack()
    
    root.mainloop()

四、代碼優化建議

4.1 使用字典優化判斷邏輯

win_conditions = {
    '石頭': '剪刀',
    '剪刀': '布',
    '布': '石頭'
}

if player == computer:
    print("平局!")
elif win_conditions[player] == computer:
    print("你贏了!")
else:
    print("你輸了!")

4.2 添加異常處理

try:
    rounds = int(input("要玩幾局?"))
except ValueError:
    print("請輸入有效數字!")

4.3 使用枚舉提高可讀性

from enum import Enum

class Choice(Enum):
    ROCK = '石頭'
    SCISSORS = '剪刀'
    PAPER = '布'

五、完整優化版代碼

import random
from enum import Enum

class Choice(Enum):
    ROCK = '石頭'
    SCISSORS = '剪刀'
    PAPER = '布'

WIN_CONDITIONS = {
    Choice.ROCK: Choice.SCISSORS,
    Choice.SCISSORS: Choice.PAPER,
    Choice.PAPER: Choice.ROCK
}

def get_player_choice():
    while True:
        try:
            player = Choice(input("請出拳(石頭/剪刀/布):").strip())
            return player
        except ValueError:
            print("無效輸入!")

def play_advanced_game():
    score = {'player': 0, 'computer': 0, 'draw': 0}
    
    while True:
        player = get_player_choice()
        computer = random.choice(list(Choice))
        
        print(f"\n你的選擇: {player.value}")
        print(f"電腦選擇: {computer.value}")
        
        if player == computer:
            score['draw'] += 1
            print("平局!")
        elif WIN_CONDITIONS[player] == computer:
            score['player'] += 1
            print("你贏了!")
        else:
            score['computer'] += 1
            print("你輸了!")
        
        print(f"\n當前比分 - 玩家:{score['player']} 電腦:{score['computer']} 平局:{score['draw']}")
        
        if input("\n再來一局?(y/n) ").lower() != 'y':
            print("\n游戲結束!")
            break

if __name__ == '__main__':
    play_advanced_game()

六、總結

通過這個項目我們學會了: 1. 使用基本條件語句實現游戲邏輯 2. 利用random模塊實現電腦隨機選擇 3. 通過循環結構實現游戲持續進行 4. 使用枚舉類型提高代碼可讀性 5. 逐步擴展程序功能的方法

讀者可以繼續嘗試: - 添加游戲歷史記錄功能 - 實現三局兩勝等賽制規則 - 開發網絡對戰版本 - 使用PyGame添加動畫效果

希望這個簡單的項目能幫助你更好地理解Python編程! “`

注:實際字數約1500字,可根據需要補充更多實現細節或擴展功能部分以達到精確字數要求。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女