兒時回憶 剪刀✌️、石頭✊、布✋ 可線上玩,和電腦對戰

更新於 發佈於 閱讀時間約 6 分鐘
raw-image

圖片來源: Wikipedia 關於 猜拳的條目

今天我們來學一個有趣的小專案:
自己用 Python 寫一個「剪刀、石頭、布」猜拳遊戲!


學完這個,你就不只是學程式,還能順便和電腦玩幾把猜拳,重拾兒時回憶喔!😄


🎯 今天我們要透過猜拳遊戲,學會這幾個小技能:


  • 怎麼讓玩家輸入資料?
  • 怎麼讓電腦「隨機」做出選擇(出拳)?
  • 怎麼寫 if ...else ... 語句來實現邏輯判斷(根據出拳狀況決定誰輸誰贏)?

🫲 第一步:先想好我們的「拳」


我們剪刀✌️、石頭✊、布✋,總共有三個選擇。
用python的資列結構來表示,其實就是一個「列表」(List),
依序放著這三種可能的選擇:

choices = ['剪刀', '石頭', '布']

這樣一來,我們就已經完成第一部,列舉出所有可能的選擇。

之後不管是玩家或者電腦吃拳,再從choices選擇一個即可。


🎲 第二步:讓電腦隨機出拳


Python 有個與隨機抽樣和隨機數相關的內建官方模組叫 random
可以幫我們實現「隨機選擇」。

我們先在程式最上面寫:

import random​ #代表引入內建的random模組​


接著,我們就可以用 random.choice() 來讓電腦實現隨機出拳了:

computer_choice = random.choice(choices)

這行的意思是:從 choices(剪刀、石頭、布)裡,隨機選一個出來!

是不是很很直覺易懂呀?😊

這就是使用python進行開發的優勢之一,語法簡潔,而且容易理解。


🙋‍♂️ 第三步:請玩家出拳(輸入資料)


我們用 input() 來讓玩家自己打字告訴我們他要出什麼拳:

player_choice = input("請輸入你的選擇(剪刀、石頭、布):")

這行的意思就是:「請玩家輸入出拳的選擇」,然後記錄到play_choice這個變數裡。


🤜🤛 第四步:判斷誰贏了!


玩家和電腦分別出拳後,就下來就是判斷誰輸誰贏囉!


這裡我們要用 if 條件判斷式,來依照剪刀、石頭、布的遊戲規則判斷輸贏:

  1. 如果玩家和電腦出的拳一樣 ➡️ 平手!
  2. 如果玩家的拳贏過電腦 ➡️ 玩家贏!
    (玩家出剪刀 電腦出布、玩家出石頭 電腦出剪刀、玩家出布 電腦出石頭)
  3. 其他情況 ➡️ 玩家輸!


來,接著把上述的判斷邏輯寫成對應的python程式碼,搭配if條件判斷式:

if player_choice == computer_choice:
print("平手!")
elif (player_choice == '剪刀' and computer_choice == '布') or \
(player_choice == '石頭' and computer_choice == '剪刀') or \
(player_choice == '布' and computer_choice == '石頭'):
print("你贏了!🎉")
else:
print("你輸了!😢")

🪄完整程的式碼

把上面的程式碼片段組合起來,就變成完整的小遊戲囉!

import random

def play_game():
choices = ['剪刀', '石頭', '布']
print("歡迎來到剪刀石頭布遊戲!")
player_choice = input("請輸入你的選擇(剪刀、石頭、布):")

if player_choice not in choices:
print("輸入錯誤,請選擇 剪刀、石頭 或 布")
return

computer_choice = random.choice(choices)
print(f"電腦出拳:{computer_choice}")

if player_choice == computer_choice:
print("平手!")
elif (player_choice == '剪刀' and computer_choice == '布') or \
(player_choice == '石頭' and computer_choice == '剪刀') or \
(player_choice == '布' and computer_choice == '石頭'):
print("你贏了!🎉")
else:
print("你輸了!😢")

# 執行遊戲
play_game()

試玩畫面

試玩畫面

試玩畫面


點這行 線上執行 與 試玩(在新的頁面按Run開始玩)


💪 延伸思考(給還想更深入研究、練習python的同學)


  • 🌀 加入重複玩的功能(玩到玩家說「不玩了」為止)
  • 🏆 記錄玩家的總勝利次數
  • ❌ 加入輸入錯誤時,讓玩家可以重新選拳
留言
avatar-img
留言分享你的想法!
avatar-img
小松鼠的演算法樂園
95會員
427內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
2024/10/10
從Python 內建deque資料結構的角度切入, 同時了解deque 與 FIFO Queue相關的function用法。 collections.deque是一種兩端點皆可進出的雙端佇列 在兩端點高效地在O(1)常數時間內添加和刪除元素。 這使得deque非常適合實現FIFO Queue
Thumbnail
2024/10/10
從Python 內建deque資料結構的角度切入, 同時了解deque 與 FIFO Queue相關的function用法。 collections.deque是一種兩端點皆可進出的雙端佇列 在兩端點高效地在O(1)常數時間內添加和刪除元素。 這使得deque非常適合實現FIFO Queue
Thumbnail
2024/09/27
井字遊戲(OOXX)的遊戲描述 Tic Tac Toe(井字遊戲)是經典的雙人棋盤遊戲,在一個3x3的方格中進行。 每回合兩個玩家輪流選一個位置,先讓自己的符號(是 X 或 O)在 水平線、垂直線或對角線上連成一線的玩家宣告獲勝。
Thumbnail
2024/09/27
井字遊戲(OOXX)的遊戲描述 Tic Tac Toe(井字遊戲)是經典的雙人棋盤遊戲,在一個3x3的方格中進行。 每回合兩個玩家輪流選一個位置,先讓自己的符號(是 X 或 O)在 水平線、垂直線或對角線上連成一線的玩家宣告獲勝。
Thumbnail
2024/09/23
深入探討圖(Graph)的基本概念 及 最短路徑Shortest Path的尋找。 我們專注於廣度優先搜尋(BFS)演算法,以等權圖的最短路徑為例, 詳細說明如何利用BFS從起點擴散到終點,並且提供詳細的程式碼範例。 透過實作,讀者能夠更清楚理解圖論及BFS的應用,並體會水波紋擴散模型的重要性。
Thumbnail
2024/09/23
深入探討圖(Graph)的基本概念 及 最短路徑Shortest Path的尋找。 我們專注於廣度優先搜尋(BFS)演算法,以等權圖的最短路徑為例, 詳細說明如何利用BFS從起點擴散到終點,並且提供詳細的程式碼範例。 透過實作,讀者能夠更清楚理解圖論及BFS的應用,並體會水波紋擴散模型的重要性。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
人們常說生長在不同世代的人容易產生代溝,而「手談」則沒有這個困擾。 圍棋不只是屬於小孩子的才藝,大人們也可以一起上課、一起學習、一起對弈,「手談」也就是圍棋的別稱。 歡迎小時候有看過「棋靈王」的爸爸媽媽們一起來下棋哦,回憶兒時看過的漫畫,圓兒時想下棋的夢想。
Thumbnail
人們常說生長在不同世代的人容易產生代溝,而「手談」則沒有這個困擾。 圍棋不只是屬於小孩子的才藝,大人們也可以一起上課、一起學習、一起對弈,「手談」也就是圍棋的別稱。 歡迎小時候有看過「棋靈王」的爸爸媽媽們一起來下棋哦,回憶兒時看過的漫畫,圓兒時想下棋的夢想。
Thumbnail
玩的意義 玩不是工作。無論是和人玩、和物玩,還是和想法玩——即假裝,我們都是在隨機、多變地嘗試不同的動作和想法,然後總結這些動作和想法的後果。玩是一種試錯式的學習,能讓我們快速獲得反饋、積累經驗,提高應對意外局面的能力。
Thumbnail
玩的意義 玩不是工作。無論是和人玩、和物玩,還是和想法玩——即假裝,我們都是在隨機、多變地嘗試不同的動作和想法,然後總結這些動作和想法的後果。玩是一種試錯式的學習,能讓我們快速獲得反饋、積累經驗,提高應對意外局面的能力。
Thumbnail
圍棋的訓練過程,與人對弈是必不可少的,課堂中可以找人下棋,但是課後呢?
Thumbnail
圍棋的訓練過程,與人對弈是必不可少的,課堂中可以找人下棋,但是課後呢?
Thumbnail
所以真心推薦讓小朋友學圍棋,並且讓子彈飛一會吧! 很多軟實力是經過幾年之後驗證真的對我們有學棋的孩子很有幫助的,歡迎加入圍棋的黑白世界中!
Thumbnail
所以真心推薦讓小朋友學圍棋,並且讓子彈飛一會吧! 很多軟實力是經過幾年之後驗證真的對我們有學棋的孩子很有幫助的,歡迎加入圍棋的黑白世界中!
Thumbnail
拼圖是一種古老的遊戲,已經存在了數個世紀,在世界各地都非常受歡迎。瞭解拼圖的歷史、遊戲方式以及適合不同年齡層的特點。拼圖適閤家庭成員一起玩,可增進家庭互動和溝通。
Thumbnail
拼圖是一種古老的遊戲,已經存在了數個世紀,在世界各地都非常受歡迎。瞭解拼圖的歷史、遊戲方式以及適合不同年齡層的特點。拼圖適閤家庭成員一起玩,可增進家庭互動和溝通。
Thumbnail
這週學校換了兩個新的遊具-套圈圈和丟沙包, 在老師早會介紹完使用規則之後, 開放給孩子們玩,孩子們非常期待, 在空閒的廣場時間裡, 他們也玩得很開心喔! 渝安:老師,這個要排隊嗎? 芯樂:我要選紅色的沙包,我丟了一個進去了。 子恩:我也要用紅色的砂包丟看看。 子駿:我的四個沙
Thumbnail
這週學校換了兩個新的遊具-套圈圈和丟沙包, 在老師早會介紹完使用規則之後, 開放給孩子們玩,孩子們非常期待, 在空閒的廣場時間裡, 他們也玩得很開心喔! 渝安:老師,這個要排隊嗎? 芯樂:我要選紅色的沙包,我丟了一個進去了。 子恩:我也要用紅色的砂包丟看看。 子駿:我的四個沙
Thumbnail
想找一個與志同道合的朋友一起學習圍棋嗎?快來參加我們的成人初學圍棋班吧!這是一個線上圍棋教室,由7段老師親自授課,讓你從基礎到冠軍階段都能得到適合的指導。現在報名還能享有5折優惠和抽獎活動,快來和我們一起學習圍棋,享受棋友的陪伴吧!
Thumbnail
想找一個與志同道合的朋友一起學習圍棋嗎?快來參加我們的成人初學圍棋班吧!這是一個線上圍棋教室,由7段老師親自授課,讓你從基礎到冠軍階段都能得到適合的指導。現在報名還能享有5折優惠和抽獎活動,快來和我們一起學習圍棋,享受棋友的陪伴吧!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News