Python 小遊戲流程 打怪練習 ( ChatGPT 輔助 )

更新於 發佈於 閱讀時間約 3 分鐘

RPG Battle Game 說明文件

簡介
這是一個簡單的回合制 RPG 遊戲,玩家與怪物進行戰鬥,雙方有不同的技能可以使用。遊戲目標是擊敗對手,將其生命值削減至零。

程式架構


1. Character 類別
Character 是一個基礎類別,表示遊戲中的角色,包括玩家和怪物。所有角色都擁有以下屬性:
• name: 角色的名字。
• hp: 角色的生命值。
• attack_power: 角色的攻擊力。

方法:
• is_alive():判斷角色是否還活著(hp 大於 0)。
• display_status():顯示角色當前的生命值。

2. Player 類別
Player 類別繼承自 Character,並增加了三個特定技能:
• fire_sword(target):使用火焰劍攻擊敵人,造成隨機 10 到 20 點傷害。
• ice_blast(target):使用冰凍衝擊,對敵人造成隨機 5 到 10 點傷害,有 50% 機率讓敵人無法行動一回合。
• heal():治療自己,恢復隨機 10 到 15 點生命值。

3. Monster 類別
Monster 類別繼承自 Character,並具有三個特定技能:
• claw_attack(target):使用爪擊攻擊敵人,造成隨機 8 到 15 點傷害。
• poison_spit(target):使用毒液噴射,使敵人中毒,每回合損失 3 到 7 點生命值。
• rage_roar():使用狂怒吼叫,提升自己下一回合的攻擊力(+5),但本回合不造成傷害。

4. game() 函數
game() 函數是整個遊戲的主邏輯,負責控制玩家與怪物之間的回合制戰鬥。遊戲流程如下:
1. 玩家和怪物分別選擇技能進行攻擊。
2. 戰鬥持續進行,直到其中一方的生命值歸零。
3. 每回合結束時,會顯示玩家與怪物的當前生命值。

遊戲流程
1. 遊戲開始時,會初始化玩家和怪物的生命值及攻擊力。
2. 玩家可以選擇以下三種技能:
• 火焰劍
• 冰凍衝擊
• 治療術
3. 每回合後,會顯示玩家和怪物的生命值狀態。
4. 怪物也會隨機選擇技能進行攻擊,並且有機會讓玩家中毒或提升自己的攻擊力。
5. 遊戲結束條件:
• 若玩家的生命值歸零,怪物獲勝。
• 若怪物的生命值歸零,玩家獲勝。

程式執行

要運行該遊戲,請執行以下步驟:
1. 安裝 Python 並確保環境已正確配置。
2. 將程式碼保存為 .py 文件。
3. 在終端或命令行中執行該文件。
4. 選擇你的技能與怪物對戰,直到一方勝利。

未來擴展
• 新增技能:可以為玩家和怪物加入更多的技能,如範圍攻擊、防禦技能等。
• 裝備系統:加入裝備系統,玩家可以選擇武器、防具來增加攻擊力或防禦力。
• 多種怪物:讓怪物種類更加豐富,每種怪物有不同的特性和弱點。


程式碼示例

import random

class Character:
"""
角色的基礎類別,包括名字、生命值和攻擊力。
Attributes:
name (str): 角色的名字。
hp (int): 角色的生命值。
attack_power (int): 角色的攻擊力。
"""
def __init__(self, name, hp, attack_power):
"""
初始化角色。
Args:
name (str): 角色的名字。
hp (int): 角色的生命值。
attack_power (int): 角色的攻擊力。
"""
self.name = name
self.hp = hp
self.attack_power = attack_power

def is_alive(self):
"""
檢查角色是否還活著。
Returns:
bool: 如果角色生命值大於 0,返回 True;否則返回 False。
"""
return self.hp > 0

def display_status(self):
"""
顯示角色當前的生命值狀態。
"""
print(f"{self.name} 的生命值: {self.hp}")


class Player(Character):
"""
玩家類別,繼承自 Character,並且擁有特定技能。
"""
def fire_sword(self, target):
"""
玩家技能:火焰劍,對目標造成 1020 點隨機傷害。
Args:
target (Character): 受到攻擊的對象。
"""
damage = random.randint(10, 20)
target.hp -= damage
print(f"{self.name} 使用了 火焰劍 對 {target.name} 造成 {damage} 點傷害!")

def ice_blast(self, target):
"""
玩家技能:冰凍衝擊,對目標造成 510 點傷害,並有 50% 機率冰凍對手一回合。
Args:
target (Character): 受到攻擊的對象。
Returns:
bool: 如果目標被冰凍,返回 True;否則返回 False。
"""
damage = random.randint(5, 10)
target.hp -= damage
freeze = random.choice([True, False])
print(f"{self.name} 使用了 冰凍衝擊 對 {target.name} 造成 {damage} 點傷害!")
if freeze:
print(f"{target.name} 被冰凍,無法行動一回合!")
return freeze

def heal(self):
"""
玩家技能:治療術,恢復 1015 點生命值。
"""
heal_amount = random.randint(10, 15)
self.hp += heal_amount
print(f"{self.name} 使用了 治療術,恢復了 {heal_amount} 點生命值!")


class Monster(Character):
"""
怪物類別,繼承自 Character,並且擁有特定技能。
"""
def claw_attack(self, target):
"""
怪物技能:爪擊,對目標造成 815 點隨機傷害。
Args:
target (Character): 受到攻擊的對象。
"""
damage = random.randint(8, 15)
target.hp -= damage
print(f"{self.name} 使用了 爪擊 對 {target.name} 造成 {damage} 點傷害!")

def poison_spit(self, target):
"""
怪物技能:毒液噴射,讓目標中毒,每回合造成 37 點持續傷害。
Args:
target (Character): 受到攻擊的對象。
Returns:
int: 中毒後每回合造成的傷害值。
"""
poison_damage = random.randint(3, 7)
print(f"{self.name} 使用了 毒液噴射,{target.name} 中毒了\
,每回合損失 {poison_damage} 點生命值!")
return poison_damage

def rage_roar(self):
"""
怪物技能:狂怒吼叫,增加自己下一回合的攻擊力(加 5 點),本回合不造成傷害。
"""
print(f"{self.name} 使用了 狂怒吼叫,下一回合的攻擊力提升!")
self.attack_power += 5


def game():
"""
遊戲的主邏輯,模擬玩家和怪物之間的回合制戰鬥。
玩家和怪物輪流進行攻擊,直到一方的生命值歸零為止。
"""
player = Player("玩家", 50, 10)
monster = Monster("怪物", 40, 8)
poison_damage = 0
frozen = False

print("戰鬥開始!")

while player.is_alive() and monster.is_alive():
print("\n=== 玩家回合 ===")
player.display_status() # 顯示玩家狀態
monster.display_status() # 顯示怪物狀態

# 玩家選擇技能
print("1. 火焰劍\n2. 冰凍衝擊\n3. 治療術")
choice = input("選擇你的技能(1-3):")

if choice == "1":
player.fire_sword(monster)
elif choice == "2":
frozen = player.ice_blast(monster)
elif choice == "3":
player.heal()

if not monster.is_alive():
print("怪物被打敗了!你贏了!")
break

print("\n=== 怪物回合 ===")
if frozen:
print(f"{monster.name} 被冰凍,無法行動!")
frozen = False
else:
# 怪物選擇技能
monster_action = random.choice(["claw", "poison", "rage"])
if monster_action == "claw":
monster.claw_attack(player)
elif monster_action == "poison":
poison_damage = monster.poison_spit(player)
elif monster_action == "rage":
monster.rage_roar()

# 處理中毒效果
if poison_damage > 0:
player.hp -= poison_damage
print(f"{player.name} 受到中毒傷害,損失 {poison_damage} 點生命值!")
if not player.is_alive():
print("你被打敗了!")
break

# 回合結束時顯示雙方狀態
print("\n回合結束狀態:")
player.display_status()
monster.display_status()

if player.is_alive():
print("恭喜,你贏了!")
else:
print("遊戲結束,怪物勝利!")


if __name__ == "__main__":
game()
avatar-img
1會員
3內容數
Python 練習 政治自覺 ~反共~ ~反獨裁~ ~反統一~
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
~~ Chaing Py World ~~ 的其他內容
在當今的數位科技時代,直播技術迅猛發展,成為了人們日常生活中的一部分。這種技術不僅用於娛樂和社交媒體,還可以被運用到更為重要的社會監督中。文章將探討利用直播技術來監督政治人物,以提升政治透明度和清廉度的可行性。
政治家在執行公務的同時必須保持廉潔自律,這對社會穩定和發展至關重要。本文介紹瞭如何利用科技手段增強對政治家清廉的監管,包括電子政務系統、區塊鏈技術、大數據分析、網絡舉報平臺、人工智能和電子審計系統。
在當今的數位科技時代,直播技術迅猛發展,成為了人們日常生活中的一部分。這種技術不僅用於娛樂和社交媒體,還可以被運用到更為重要的社會監督中。文章將探討利用直播技術來監督政治人物,以提升政治透明度和清廉度的可行性。
政治家在執行公務的同時必須保持廉潔自律,這對社會穩定和發展至關重要。本文介紹瞭如何利用科技手段增強對政治家清廉的監管,包括電子政務系統、區塊鏈技術、大數據分析、網絡舉報平臺、人工智能和電子審計系統。
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
https://www.youtube.com/watch?v=0L2OgNQDzTc 之前看了啾啾鞋這部影片,裡面說退坑一款手遊,也說到一些觀念,就如下圖這樣
Thumbnail
不知道這個遊戲夠不夠應景,整體遊戲風格也是採用昏暗風格,沒有什麼故事內容,純粹就是召喚角色卡牌然後過任務,這也是我玩過眾多遊戲當中,角色卡牌非可愛性感風格的手遊。
遊戲是單純的RPG類型小遊戲 都是一個人做的非常厲害 遊戲共三章應該不太會再有後續了 每段大約40分內可完成 優點:音樂好聽,畫風出色,主角配角的人物刻劃優秀,劇情很戳我的心,CG多,難度親民,有中文 缺點:提示少分支多,完整體驗找找攻略可能會有比較好,缺乏超展開,有懸疑要素但不多,戰鬥難度簡單
Thumbnail
一個獨立開發者,立志打造顛覆性的遊戲體驗,在開拓全新玩法的道路上,砥礪前行。 大家好,我正在開發一款獨立遊戲,以魔法戰鬥為主題,如果想要嘗試遊戲的demo,歡迎到下方連結處,加入我的Discord群組。 魔法與戰鬥的世界---開發中的遊戲   這款遊戲發生在一個飄浮於雲端之上的世界,
Thumbnail
  遊戲將以不破壞遊戲體驗的情況下分析,避免劇透。因本文為求職遊戲企劃時所寫分析,故以遊戲企劃之角度撰寫文章,程式及美術僅簡易分析及解構。備註:後記有雷,如果有需要請避開。
Thumbnail
測試桌遊時,難免可能會找不到對象一起幫忙測試你的桌遊,或是你的桌遊在找人測試前,需要經過你先做最基本的確認。這時候該麼辦?我認為:求人不如求己,學會幫自己測試桌遊,你設計的成本將大大降低。 在此我提出一個我構思的方法:角色扮演決鬥。如果這個方法運用得當,自己找自己玩市面上的桌遊也不成問
Thumbnail
一、了解思維 二、大量體驗 三、拆解架構 四、找出樂趣
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
https://www.youtube.com/watch?v=0L2OgNQDzTc 之前看了啾啾鞋這部影片,裡面說退坑一款手遊,也說到一些觀念,就如下圖這樣
Thumbnail
不知道這個遊戲夠不夠應景,整體遊戲風格也是採用昏暗風格,沒有什麼故事內容,純粹就是召喚角色卡牌然後過任務,這也是我玩過眾多遊戲當中,角色卡牌非可愛性感風格的手遊。
遊戲是單純的RPG類型小遊戲 都是一個人做的非常厲害 遊戲共三章應該不太會再有後續了 每段大約40分內可完成 優點:音樂好聽,畫風出色,主角配角的人物刻劃優秀,劇情很戳我的心,CG多,難度親民,有中文 缺點:提示少分支多,完整體驗找找攻略可能會有比較好,缺乏超展開,有懸疑要素但不多,戰鬥難度簡單
Thumbnail
一個獨立開發者,立志打造顛覆性的遊戲體驗,在開拓全新玩法的道路上,砥礪前行。 大家好,我正在開發一款獨立遊戲,以魔法戰鬥為主題,如果想要嘗試遊戲的demo,歡迎到下方連結處,加入我的Discord群組。 魔法與戰鬥的世界---開發中的遊戲   這款遊戲發生在一個飄浮於雲端之上的世界,
Thumbnail
  遊戲將以不破壞遊戲體驗的情況下分析,避免劇透。因本文為求職遊戲企劃時所寫分析,故以遊戲企劃之角度撰寫文章,程式及美術僅簡易分析及解構。備註:後記有雷,如果有需要請避開。
Thumbnail
測試桌遊時,難免可能會找不到對象一起幫忙測試你的桌遊,或是你的桌遊在找人測試前,需要經過你先做最基本的確認。這時候該麼辦?我認為:求人不如求己,學會幫自己測試桌遊,你設計的成本將大大降低。 在此我提出一個我構思的方法:角色扮演決鬥。如果這個方法運用得當,自己找自己玩市面上的桌遊也不成問
Thumbnail
一、了解思維 二、大量體驗 三、拆解架構 四、找出樂趣