Add 510K 扑克游戏 - 经典比大小游戏
This commit is contained in:
+196
@@ -0,0 +1,196 @@
|
||||
"""
|
||||
510K 扑克游戏
|
||||
经典的 5、10、K 比大小游戏
|
||||
"""
|
||||
|
||||
import random
|
||||
import sys
|
||||
|
||||
|
||||
class Card:
|
||||
"""扑克牌类"""
|
||||
def __init__(self, value):
|
||||
self.value = value
|
||||
self.display = {5: '5', 10: '10', 13: 'K'}[value]
|
||||
|
||||
def __str__(self):
|
||||
return self.display
|
||||
|
||||
def __repr__(self):
|
||||
return self.display
|
||||
|
||||
|
||||
class Game510K:
|
||||
"""510K 游戏类"""
|
||||
|
||||
def __init__(self):
|
||||
"""初始化游戏"""
|
||||
self.player_name = ""
|
||||
self.player_score = 0
|
||||
self.computer_score = 0
|
||||
self.rounds = 0
|
||||
|
||||
# 牌堆(5、10、K 各 4 张)
|
||||
self.deck = []
|
||||
for _ in range(4):
|
||||
self.deck.extend([Card(5), Card(10), Card(13)])
|
||||
|
||||
# 牌的大小关系:K > 10 > 5
|
||||
self.power = {5: 1, 10: 2, 13: 3}
|
||||
|
||||
def display_title(self):
|
||||
"""显示游戏标题"""
|
||||
print("\n" + "=" * 60)
|
||||
print("🃏 510K 扑克游戏 🃏")
|
||||
print("=" * 60)
|
||||
print("\n游戏规则:")
|
||||
print(" - 牌堆包含 5、10、K 各 4 张(共 12 张)")
|
||||
print(" - 大小关系:K > 10 > 5")
|
||||
print(" - 玩家和电脑各抽一张牌比大小")
|
||||
print(" - 赢者得 1 分")
|
||||
print(" - 牌抽完后游戏结束")
|
||||
print("=" * 60)
|
||||
|
||||
def get_player_name(self):
|
||||
"""获取玩家名字"""
|
||||
self.player_name = input("\n请输入你的名字:").strip()
|
||||
if not self.player_name:
|
||||
self.player_name = "玩家"
|
||||
print(f"\n你好,{self.player_name}!让我们开始游戏吧!\n")
|
||||
|
||||
def shuffle_deck(self):
|
||||
"""洗牌"""
|
||||
random.shuffle(self.deck)
|
||||
print("🔀 正在洗牌...")
|
||||
|
||||
def draw_card(self):
|
||||
"""
|
||||
抽牌
|
||||
|
||||
Returns:
|
||||
抽到的牌
|
||||
"""
|
||||
if len(self.deck) > 0:
|
||||
return self.deck.pop()
|
||||
return None
|
||||
|
||||
def compare_cards(self, player_card, computer_card):
|
||||
"""
|
||||
比较两张牌
|
||||
|
||||
Args:
|
||||
player_card: 玩家的牌
|
||||
computer_card: 电脑的牌
|
||||
|
||||
Returns:
|
||||
'player' 玩家赢,'computer' 电脑赢,'draw' 平局
|
||||
"""
|
||||
player_power = self.power[player_card.value]
|
||||
computer_power = self.power[computer_card.value]
|
||||
|
||||
if player_power > computer_power:
|
||||
return 'player'
|
||||
elif player_power < computer_power:
|
||||
return 'computer'
|
||||
else:
|
||||
return 'draw'
|
||||
|
||||
def play_round(self):
|
||||
"""玩一轮游戏"""
|
||||
self.rounds += 1
|
||||
|
||||
print("\n" + "-" * 60)
|
||||
print(f"第 {self.rounds} 局")
|
||||
print("-" * 60)
|
||||
print(f"剩余牌数:{len(self.deck)}")
|
||||
|
||||
# 玩家抽牌
|
||||
input(f"\n{self.player_name},按 Enter 键抽牌...")
|
||||
player_card = self.draw_card()
|
||||
|
||||
# 电脑抽牌
|
||||
print(f"\n🤖 电脑抽牌中...")
|
||||
computer_card = self.draw_card()
|
||||
|
||||
# 显示双方牌面
|
||||
print(f"\n👤 {self.player_name}: [{player_card}]")
|
||||
print(f"🤖 电脑:[{computer_card}]")
|
||||
|
||||
# 比较大小
|
||||
result = self.compare_cards(player_card, computer_card)
|
||||
|
||||
if result == 'player':
|
||||
print(f"\n✅ {self.player_name} 赢了!{player_card} > {computer_card}")
|
||||
self.player_score += 1
|
||||
elif result == 'computer':
|
||||
print(f"\n❌ 电脑赢了!{computer_card} > {player_card}")
|
||||
self.computer_score += 1
|
||||
else:
|
||||
print(f"\n🤝 平局!双方都是 {player_card}")
|
||||
|
||||
# 显示比分
|
||||
print(f"\n📊 比分:{self.player_name} {self.player_score} : {self.computer_score} 电脑")
|
||||
|
||||
def is_game_over(self):
|
||||
"""
|
||||
检查游戏是否结束
|
||||
|
||||
Returns:
|
||||
True 表示游戏结束
|
||||
"""
|
||||
return len(self.deck) == 0
|
||||
|
||||
def show_final_results(self):
|
||||
"""显示最终结果"""
|
||||
print("\n" + "=" * 60)
|
||||
print(f"🎮 游戏结束!{self.player_name} 的最终统计")
|
||||
print("=" * 60)
|
||||
print(f" 总回合数:{self.rounds}")
|
||||
print(f" {self.player_name} 得分:{self.player_score}")
|
||||
print(f" 电脑得分:{self.computer_score}")
|
||||
|
||||
# 判定最终胜负
|
||||
if self.player_score > self.computer_score:
|
||||
print(f"\n🏆 恭喜!{self.player_name} 获胜!")
|
||||
elif self.player_score < self.computer_score:
|
||||
print(f"\n💪 电脑获胜,{self.player_name} 再接再厉!")
|
||||
else:
|
||||
print(f"\n👍 势均力敌,打成平手!")
|
||||
|
||||
print("=" * 60)
|
||||
|
||||
def run(self):
|
||||
"""运行游戏主流程"""
|
||||
try:
|
||||
# 显示标题
|
||||
self.display_title()
|
||||
|
||||
# 获取玩家名字
|
||||
self.get_player_name()
|
||||
|
||||
# 洗牌
|
||||
self.shuffle_deck()
|
||||
|
||||
# 游戏主循环
|
||||
while not self.is_game_over():
|
||||
self.play_round()
|
||||
|
||||
# 显示最终结果
|
||||
self.show_final_results()
|
||||
|
||||
print("\n感谢游玩!再见!👋\n")
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print("\n\n游戏被中断!再见!👋\n")
|
||||
if self.rounds > 0:
|
||||
self.show_final_results()
|
||||
|
||||
|
||||
def main():
|
||||
"""主函数"""
|
||||
game = Game510K()
|
||||
game.run()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,8 @@
|
||||
"""
|
||||
510K 扑克游戏启动文件
|
||||
"""
|
||||
|
||||
from game510k import main
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user