鱼C论坛

 找回密码
 立即注册
查看: 3535|回复: 0

[技术交流] 二十一点游戏

[复制链接]
发表于 2020-3-17 15:58:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import random


  2. # # 判断随机发发的卡牌是否在列表中
  3. def judge(card, card_list):
  4.     if card in card_list:
  5.         return True
  6.     else:
  7.         return False


  8. # 将随机数对应成卡牌点数
  9. def transform(num):
  10.     if num > 40:
  11.         return 0.5
  12.     else:
  13.         return num // 4 + 1


  14. # 判断大小 返回-1平局 除了-1情况,返回赢得数字
  15. def who_win(num1, num2):
  16.     if num1 == num2:
  17.         return -1
  18.     elif num1 < 21 and num2 < 21:
  19.         return max(num1, num2)
  20.     elif num1 == 21:
  21.         return num1
  22.     elif num2 == 21:
  23.         return num2
  24.     elif num1 < 21 and num2 > 21:
  25.         return num1
  26.     elif num2 < 21 and num1 > 21:
  27.         return num2
  28.     elif num1 > 21 and num2 > 21:
  29.         if num2 - 21 > num1 - 21:
  30.             return num1
  31.         else:
  32.             return num2


  33. exit_game = False
  34. # 将所有卡片放入列表中

  35. player_name = input("请输入你的名字")
  36. while True:
  37.     while True:
  38.         # 玩家的总点数
  39.         play_sum = 0
  40.         # 机器的总点数
  41.         robot_sum = 0
  42.         # 存放所有的卡片
  43.         card_list = []
  44.         a = True
  45.         b = True
  46.         # 将卡牌放到列表中
  47.         for i in range(1, 55):
  48.             card_list.append(i)
  49.         # 如果玩家,机器都不要牌,退出循环
  50.         while a or b:
  51.             # 判断是否给玩家发牌
  52.             if a:
  53.                 ask_card = input("是否要牌:(y/n)")
  54.                 if ask_card == "y":
  55.                     card = random.randint(1, 54)
  56.                     if judge(card, card_list):
  57.                         card_list.remove(card)
  58.                         card = transform(card)
  59.                         print("给玩家牌为" + str(card))
  60.                         play_sum += card
  61.                     else:
  62.                         while card not in card_list:
  63.                             card = random.randint(1, 54)
  64.                             card_list.remove(card)
  65.                             card = transform(card)
  66.                             print("给机器牌为" + str(card))
  67.                             play_sum += card
  68.                     print("玩家现在点数为%0.1f" % (play_sum))
  69.                 else:
  70.                     a = False
  71.             # 判断是否给机器发牌
  72.             if b:
  73.                 if robot_sum < 18:
  74.                     card = random.randint(1, 54)
  75.                     print("机器选择要牌。。。。。。。")
  76.                     if judge(card, card_list):
  77.                         card_list.remove(card)
  78.                         card = transform(card)
  79.                         print("给机器牌为" + str(card))
  80.                         robot_sum += card
  81.                     else:
  82.                         while card not in card_list:
  83.                             card = random.randint(1, 54)
  84.                             card_list.remove(card)
  85.                             card = transform(card)
  86.                             print("给机器牌为" + str(card))
  87.                             robot_sum += card
  88.                     print("机器现在点数为%0.1f" % (robot_sum))
  89.                 else:
  90.                     print("机器不要牌")
  91.                     b = False
  92.         print("机器点数为%0.1f" % (robot_sum))
  93.         print("玩家点数为%0.1f" % (play_sum))
  94.         if who_win(play_sum, robot_sum) == -1:
  95.             print("平局")
  96.         elif who_win(play_sum, robot_sum) == play_sum:
  97.             print("玩家获胜")
  98.         else:
  99.             print("机器获胜获胜")
  100.         ask_game = input("是否玩下一局")
  101.         if ask_game == "y":
  102.             print("进入下一局。。。。。")
  103.         else:
  104.             print("退出游戏")
  105.             exit_game = True
  106.             break
  107.     if exit_game:
  108.         break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-14 11:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表