用python做一个麻将游戏
时间: 2024-02-02 13:02:39 浏览: 51
好的,这是一个比较复杂的项目,需要用到面向对象编程思想。我可以给你提供一个大致的思路:
1. 定义麻将牌的类,包括属性:牌面、花色、点数等。
2. 定义玩家类,包括属性:手牌、碰牌、杠牌、吃牌等。并实现出牌、吃牌、碰牌、杠牌、胡牌等方法。
3. 定义游戏类,包括属性:牌堆、废牌堆、玩家列表等。并实现发牌、摸牌、判断胡牌等方法。
4. 实现游戏的主逻辑,即玩家按照规则出牌、吃牌、碰牌、杠牌、胡牌,直到有玩家胡牌或者牌堆没有牌为止。
5. 实现基于终端的用户交互界面,让用户能够通过命令行输入来进行游戏。
希望这些思路对你有所帮助,如果你在实现过程中遇到问题可以随时向我提问。
相关问题
用python写一个麻将游戏
好的,这是一个麻将游戏的代码示例,使用Python语言编写:
```python
import random
# 麻将牌总数
MAHJONG_COUNT = 144
# 麻将牌的种类
MAHJONG_KINDS = ["万", "条", "饼", "风", "箭"]
# 麻将牌的数字
MAHJONG_NUMS = ["一", "二", "三", "四", "五", "六", "七", "八", "九"]
# 风牌的种类
MAHJONG_FENG_KINDS = ["东", "南", "西", "北"]
# 箭牌的种类
MAHJONG_JIAN_KINDS = ["中", "发", "白"]
# 玩家初始手牌数量
INIT_HAND_COUNT = 13
# 麻将牌的类
class Mahjong:
def __init__(self, kind, num):
self.kind = kind
self.num = num
def __str__(self):
return self.num + self.kind
# 麻将牌堆的类
class MahjongHeap:
def __init__(self):
self.heap = []
self.init_heap()
self.shuffle()
# 初始化麻将牌堆
def init_heap(self):
for kind in MAHJONG_KINDS:
if kind == "风":
for feng in MAHJONG_FENG_KINDS:
for i in range(4):
self.heap.append(Mahjong(feng, ""))
elif kind == "箭":
for jian in MAHJONG_JIAN_KINDS:
for i in range(4):
self.heap.append(Mahjong(jian, ""))
else:
for num in MAHJONG_NUMS:
for i in range(4):
self.heap.append(Mahjong(kind, num))
# 洗牌
def shuffle(self):
random.shuffle(self.heap)
# 摸牌
def draw(self):
if len(self.heap) > 0:
return self.heap.pop()
else:
return None
# 玩家类
class Player:
def __init__(self, name):
self.name = name
self.hand = []
# 摸牌
def draw(self, mahjong):
self.hand.append(mahjong)
# 打牌
def discard(self, index):
if index >= 0 and index < len(self.hand):
return self.hand.pop(index)
else:
return None
# 显示手牌
def show_hand(self):
print(self.name + "的手牌:")
for i, mahjong in enumerate(self.hand):
print(str(i+1) + ": " + str(mahjong))
# 游戏类
class Game:
def __init__(self):
self.players = []
self.mahjong_heap = MahjongHeap()
# 添加玩家
def add_player(self, player):
self.players.append(player)
# 开始游戏
def start(self):
# 发牌
for i in range(INIT_HAND_COUNT):
for player in self.players:
player.draw(self.mahjong_heap.draw())
# 显示玩家手牌
for player in self.players:
player.show_hand()
# 主循环
while True:
for player in self.players:
# 玩家摸牌
mahjong = self.mahjong_heap.draw()
player.draw(mahjong)
print(player.name + "摸了一张牌:" + str(mahjong))
# 显示玩家手牌
player.show_hand()
# 玩家打牌
while True:
index = input(player.name + "打哪张牌?")
if index.isdigit():
index = int(index) - 1
mahjong = player.discard(index)
if mahjong is not None:
print(player.name + "打出了:" + str(mahjong))
break
else:
print("无效的牌号!")
else:
print("无效的输入!")
# 判断是否有人胡牌、和牌、杠牌、碰牌等等
# 判断是否有人胡牌
# 判断是否有人和牌
# 判断是否有人杠牌
# 判断是否有人碰牌
# 判断是否流局
# 结束游戏
def end(self):
pass
# 测试代码
if __name__ == "__main__":
game = Game()
game.add_player(Player("张三"))
game.add_player(Player("李四"))
game.add_player(Player("王五"))
game.start()
game.end()
```
用python做20个游戏
好的,以下是我为您整理的20个用 Python 编写的小游戏:
1. 猜数字游戏
2. 石头剪刀布游戏
3. 2048小游戏
4. 扫雷游戏
5. 贪吃蛇小游戏
6. 弹球小游戏
7. 五子棋游戏
8. 数独小游戏
9. 飞机大战小游戏
10. 拼图小游戏
11. 贪吃虫小游戏
12. 飞行棋游戏
13. 俄罗斯方块小游戏
14. 推箱子小游戏
15. 麻将小游戏
16. 跳棋游戏
17. 井字棋小游戏
18. 战舰小游戏
19. 跳跳球小游戏
20. 钓鱼小游戏
以上游戏只是其中的一部分,您可以根据自己的兴趣和实际情况进行选择和编写。希望对您有所帮助!
相关推荐
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)