python写斗地主小游戏
时间: 2023-06-28 15:05:54 浏览: 75
好的,下面是一个简单的斗地主小游戏的代码示例,仅供参考:
```
import random
# 初始化牌堆
cards = list(range(1, 11)) * 4
cards.extend([11] * 4)
cards.extend([12] * 4)
cards.extend([13] * 4)
cards.append(14)
random.shuffle(cards)
# 初始化玩家手牌
player1 = cards[0:17]
player2 = cards[17:34]
player3 = cards[34:51]
landlord_cards = cards[51:54]
# 定义出牌规则
def is_valid_play(cards):
if len(cards) == 0:
return False
if len(set(cards)) != len(cards):
return False
if max(cards) <= 10 and len(cards) != 1:
return False
if max(cards) > 10 and len(cards) < 2:
return False
if len(cards) == 2 and cards[0] != cards[1]:
return False
if len(cards) == 3 and cards[0] != cards[1] and cards[1] != cards[2]:
return False
if len(cards) == 4 and cards[0] != cards[1] and cards[1] != cards[2] and cards[2] != cards[3]:
return False
if len(cards) == 5 and (cards[0] != cards[1] or cards[1] != cards[2] or cards[2] != cards[3] or cards[3] != cards[4]):
return False
return True
# 定义出牌逻辑
def play(player_cards, played_cards):
print("当前出牌:", played_cards)
input_str = input("请出牌(用逗号分隔,不出请输入pass):")
if input_str == "pass":
return [], False
cards = list(map(int, input_str.split(",")))
if not is_valid_play(cards):
print("不合法的出牌")
return play(player_cards, played_cards)
for card in cards:
if card not in player_cards:
print("手牌中没有该牌")
return play(player_cards, played_cards)
player_cards.remove(card)
played_cards.extend(cards)
return cards, True
# 游戏开始
print("斗地主小游戏开始!")
print("玩家1的手牌:", player1)
print("玩家2的手牌:", player2)
print("玩家3的手牌:", player3)
print("地主的牌:", landlord_cards)
players = [player1, player2, player3]
landlord_index = random.randint(0, 2)
landlord = players[landlord_index]
landlord.extend(landlord_cards)
print("玩家%d成为地主,手牌为:" % (landlord_index+1), landlord)
current_player_index = landlord_index
played_cards = []
while True:
current_player = players[current_player_index]
print("玩家%d的手牌:" % (current_player_index+1), current_player)
if len(current_player) == 0:
print("恭喜玩家%d获胜!" % (current_player_index+1))
break
if len(played_cards) == 0:
print("当前出牌:无")
else:
print("当前出牌:", played_cards)
cards, valid = play(current_player, played_cards)
if valid:
current_player_index = (current_player_index + 1) % 3
else:
played_cards = []
current_player_index = (current_player_index + 2) % 3
```
这个代码示例只是一个简单的斗地主小游戏,可能还有很多需要完善的地方,例如牌型判断的规则、出牌逻辑的优化等。同时,由于每次出牌都需要手动输入,所以不太适合作为一个真正的游戏,只适合用来练习编程技巧。