您当前的位置:首页 > 计算机 > 编程开发 > Python

基于python代码实现棋牌游戏

时间:05-20来源:作者:点击数:

棋牌游戏11点

游戏题目及要求如下:

1、生成一副扑克牌(自己设计扑克牌的结构,小王和大王可以分别用14、15表示 )

2、3个玩家(玩家也可以自己定义)

user_list = ["alex","武沛齐","李路飞"]

3、发牌规则

默认先给用户发一张牌,其中 J、Q、K、小王、大王代表的值为0.5,其他就是则就是当前的牌面值。

用户根据自己的情况判断是否继续要牌。

要,则再给他发一张。(可以一直要牌,但是如果自己手中的牌总和超过11点,你的牌就爆掉了(牌面变成0))

不要,则开始给下个玩家发牌。(没有牌则则牌面默认是0)

如果用户手中的所有牌相加大于11,则表示爆了,此人的分数为0,并且自动开始给下个人发牌。

4、最终计算并获得每个玩家的分值,例如:

result = {

"alex":8,

"武沛齐":9,

"李路飞":0

}

代码实现如下:

  ''''扑克牌11点游戏'''

  import random

  '''1、生成扑克牌'''
  # 自定义花色
  colour = ['黑桃', '红桃', '方块', '梅花']
  # 生成牌面
  total_poker = []
  for colour in colour:
      for number in range(1, 11):
          score = number
          data_poker = (colour, number, score)
          total_poker.append(data_poker)
  # print(total_poker)
  # 自定义特殊牌
  special_poker = [('J', 11, 0.5), ('Q', 12, 0.5), ('K', 13, 0.5), ('小王', 14, 0.5), ('大王', 15, 0.5)]

  # 将所有牌面合并
  total_poker = total_poker + special_poker
  print(total_poker)

  '''2、自定义三个玩家'''
  user_lists = []
  while len(user_lists) < 3:
      user_name = input('请输入玩家姓名:').strip()
      user_lists.append(user_name)
      print(f'玩家已就位:{user_lists}')

  '''3.随机发牌一次'''

  print('各单位请注意,现在游戏开始!!!'.center(50))
  result = {}
  for user_name in user_lists:
      index = random.randint(0, len(total_poker) - 1)
      print(f'{user_name}抽到的牌为{total_poker[index]}')
      col, num, sor = total_poker[index]
      result[user_name] = sor
      print(f'{user_name}你目前的分数为{sor}')
      total_poker.pop(index)  # 删除已经分配的牌面
  # 剩下的牌面为
  print('剩下的牌面为{}'.format(total_poker))

  # 目前的结果为
  print(f'目前结果为:{result}')

  '''4.加牌阶段'''
  print('各单位请注意,现在游戏进入加牌阶段!!!'.center(50))

  while True:
      if len(total_poker) - 1 > 0:
          for user_name in user_lists:
              instructions = input(f'{user_name}你需要加牌吗?(是/否):').strip()
              if instructions == '是':
                  index = random.randint(0, len(total_poker) - 1)
                  print(f'{user_name}抽到的牌为{total_poker[index]}')
                  col, num, sor = total_poker[index]
                  total_sore = result[user_name] + sor  # 将目前该玩家结果加入总结果里
                  result[user_name] = total_sore
                  print(f'{user_name}你目前的分数为{total_sore}')
                  total_poker.pop(index)  # 删除已经分配的牌面
                  print(f'当前结果为:{result}')
                  print(f'剩余扑克牌数量为:{len(total_poker)},剩余扑克牌为:{total_poker}')
                  if result[user_name] > 11:  # 如果该玩家总分数大于11重置为0
                      result[user_name] = 0
                      print(f'{user_name}最新的分数为{result[user_name]}')
                      print(f'各个玩家最新结果为;{result}')
                      print(f'剩余扑克牌数量为:{len(total_poker)},剩余扑克牌为:{total_poker}')
              elif instructions == '否':
                  print(f"{user_name}不加牌!下一个!")
              else:
                  print(f"{user_name}输入不合法的指令!默认不需要加牌!下一个!")
      else:
          print(f'各单位注意!!!游戏已经结束!谢谢各位玩家{user_lists[0]}、{user_lists[1]}、{user_lists[2]}参与'.center(50))
          break

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门