当前课程知识点:Python程序设计基础 > 任务四:庄家给玩家发首轮牌 > 4.3 任务四参考代码 > 参考代码
"""
Game Name:TenHalfPoint
Developer: xuzl
Version: 1.0
Date:2019.2.29
"""
import random
#输入玩家1的姓名,并打印出欢迎玩家1的信息
player1_Name = input("请输入玩家1的姓名:")
print("欢迎你:"+player1_Name)
print("完成了任务一")
#黑桃(spade)用s代表、红桃(heart)用h代表、梅花(club)用c代表、方块(dianmond)用d代表
card1=input("请输入第一张牌") #定义一个名为card1的变量用来接收从键盘录入的第一张牌,属于string类型,input()是从键盘输入的函数。
card2=input("请输入第二张牌") #定义一个名为card2的变量用来接收从键盘录入的第一张牌,属于string类型
#打印出两张牌
print("第一张牌为:"+card1)
print("第二张牌为:"+card2)
#计算第一张牌的大小
#使用if语句判断单张牌的点数,需要掌握if 语句的使用
if card1[0] == "A" : #判断card1字符串的第一元素card1[0]是否等于“A” ,需要掌握字符串的索引
card1_number = 1
elif card1[0] == "J":
card1_number = 0.5
elif card1[0] == "Q":
card1_number = 0.5
elif card1[0] == "K":
card1_number = 0.5
elif len(card1)>2: #调用len()函数求字符串的长度,也就是字符串包含的字符数
card1_number =10
else:
card1_number = int(card1[0]) #使用int()函数将string类型转换为整型
print(card1_number)
#计算第二张牌的大小
if card2[0] == "A": #判断card2字符串的第一元素card2[0]是否等于“A”,需要掌握字符串的索引
card2_number = 1
elif card2[0] == "J":
card2_number = 0.5
elif card2[0] == "Q":
card2_number = 0.5
elif card2[0] == "K":
card2_number = 0.5
elif len(card2)>2: #调用len()函数求字符串的长度,也就是字符串包含的字符数
card2_number = 10
else:
card2_number = int(card2[0]) #使用int()函数将string类型转换为整型
print(card2_number)
#计算两张牌的点数大小
sum = card1_number + card2_number #使用+运算符计算两张牌的点数和
print("两张牌的大小为:"+str(sum)+"点") #使用str()函数将sum转换为string类型
print("完成了任务二")
RANKS = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"] #定义了RANKS列表拥有13个元素来存储牌的数值
SUITS = ["♠","♦","♥","♣"] #定义了SUITS列表来存储牌的4种花色
cards= [] #定义一个列表用于保存一副牌,初始为空列表。
#模拟产生一副除去大小王的扑克牌
#应用while双重循环生成一幅除去大小王的牌
i=0 #设置牌的数值循环体变量
j=0 #设置牌的花色循环体变量
while i<=12 : #外循环
while j<=3 : #内循环
cards.append(RANKS[i]+SUITS[j] )
j=j+1
j=0 #每当i发生变化时,j一定要置成0
i=i+1
#应用for双重循环生成一幅除去大小王的牌
# for i in RANKS: #应用for 循环对RANKS中的元素遍历一遍
# for j in SUITS: #应用for 循环对SUITS中的元素遍历一遍
# cards.append(i+j )
print(cards) #将有序的扑克牌打印出来
random.shuffle(cards)#模拟洗牌,打乱顺序
print("打印出洗牌后的一副牌")
print(cards)
print("完成了任务三")
# #Ctrl + / 选中多行代码后快捷注释
# #未采用循环定义四个玩家组成的牌局
# #定义玩家1,默认为庄家
# #庄家应该包含姓名、筹码、要牌标识符、牌列表、牌点数、下注数
# player1=[]
# player1_name = input("请输入庄家的姓名:")
# player1.append(player1_name)#给庄家添加姓名
# player1_money="100"
# player1.append(player1_money)#初始化庄家的筹码为100
# player1_flag=True
# player1.append(player1_flag)#初始化庄家要牌标志符为True
# player1_cards=[]
# player1.append(player1_cards)#初始化庄家的牌列表为空
# player1_pointsum=0
# player1.append(player1_pointsum)#初始化庄家的牌点数为0
# player1_bet=0
# player1.append(player1_bet)#初始化庄家的下注数为0
# #定义玩家2,默认为闲家
# player2=[]
# player2_name = input("请输入第一个闲家的姓名:")
# player2.append(player2_name)#给闲家1添加姓名
# player2_money=100
# player2.append(player2_money)#初始化闲家1的筹码为10
# player2_flag=True
# player2.append(player2_flag)#初始化闲家1要牌标志符为True
# player2_cards=[]
# player2.append(player2_cards)#初始化闲家1的牌列表为空
# player2_pointsum=0
# player2.append(player2_pointsum)#初始化闲家1的牌点数为0
# player2_bet=0
# player2.append(player2_bet)#初始化闲家1的下注数为0
# #定义玩家3
# player3=[]
# player3_name = input("请输入第二个闲家的姓名:")
# player3.append(player3_name)
# player3_money=100
# player3.append(player3_money)
# player3_flag=True
# player3.append(player3_flag)
# player3_cards=[]
# player3.append(player3_cards)
# player3_pointsum=0
# player3.append(player3_pointsum)
# player3_bet=0
# player3.append(player3_bet)#初始化闲家2的下注数为0
# #定义玩家4
# player4=[]
# player4_name = input("请输入第三个闲家的姓名:")
# player4.append(player4_name)
# player4_money=100
# player4.append(player4_money)
# player4_flag=True
# player4.append(player4_flag)
# player4_cards=[]
# player4.append(player4_cards)
# player4_pointsum=0
# player4.append(player4_pointsum)
# player4_bet=0
# player4.append(player4_bet)#初始化闲家3的下注数为0
# #定义一个玩家列表
# player=[player1,player2,player3,player4]
# print(player1,player2,player3,player4)
# 用循环语句改进创建四个玩家组成的牌局
player=[[],[],[],[]] #创建一个具有4个玩家的玩家列表,每个玩家又是由一个包含姓名、筹码、要牌标识符、牌列表、牌点数、下注数等元素的列表构成
number=0
while number<=3 :
if number==0 :
player_name = input("请输入庄家的姓名:")
player[number].append(player_name) # 给庄家添加姓名
else :
player_name = input("请第" + str(number) + "个闲家的姓名:")
player[number].append(player_name) # 给庄家添加姓名
player_money = 100
player[number].append(player_money) # 初始化庄家的筹码为100
player_flag = True
player[number].append(player_flag) # 初始化庄家要牌标志符为True
player_cards = []
player[number].append(player_cards) # 初始化庄家的牌列表为空
player_pointSum = 0
player[number].append(player_pointSum) # 初始化庄家的牌点数为0
player_bet = 0
player[number].append(player_bet) # 初始化庄家的下注数为0
number=number+1
print(player)
print("玩家创建完毕,准备下注")
#闲家1下注
player_bet=input(player[1][0]+":请下注")
while int(player_bet)>20 or int(player_bet)<1 or int(player_bet)>int(player[1][1]):
player_bet=input(player[1][0]+":下注不成功,请重新下注")
player[1][5]=player_bet
#闲家2下注
player_bet=input(player[2][0]+":请下注")
while int(player_bet)>20 or int(player_bet)<1 or int(player_bet)>int(player[2][1]):
player_bet=input(player[2][0]+":下注不成功,请重新下注")
player[2][5]=player_bet
#闲家3下注
player_bet=input(player[3][0]+":请下注")
while int(player_bet)>20 or int(player_bet)<1 or int(player_bet)>int(player[3][1]):
player_bet=input(player[3][0]+":下注不成功,请重新下注")
player[3][5]=player_bet
print("三个闲家下注完毕")
print(player)
#定义函数计算牌点大小
def compute(card): #card 表示单张牌,属于形式参数
if card[0] == "J" or card[0] == "Q" or card[0] == "K":
cardpoint = 0.5
elif card[0] == "A":
cardpoint = 1
elif len(card)>2:
cardpoint = 10
else:
cardpoint = int(card[0])
return cardpoint #使用return 返回单张牌的点数
#模拟发第一轮牌
print("从庄家开始发第一轮牌,每人一张牌")
i=0 #定义i来表示第几个玩家
j=0 #定义j来计算发第几张牌
while i<=3: # 应用while循环语句实现第一轮发牌
player[i][3].append(cards[j])
player[i][4]=compute(cards[j])
i=i+1
j=j+1
print("第一轮发牌完毕,已经计算出每个玩家手上的牌点数")
print(player)
-课程性质与课程设计
--课程简介
--课程设计
-1.1 十点半游戏简介
-1.2 任务描述与目标要求
--任务描述
--目标要求
--知识导图
-1.3 Python的安装与使用 视频讲解
-1.4 任务一参考代码
--参考代码
-1.5任务相关知识测验
-2.1 任务描述与目标要求
--任务描述
--目标要求
-2.2 基础数据类型与运算符 知识点视频讲解
-2.3条件语句 知识点视频讲解
--if语句介绍
--数字排序(1)
--数字排序(2)
-- 数字排序(3)
--数字排序(4)
-2.4 任务二参考代码
--参考代码
-2.5 任务相关知识测验
-3.1任务描述与目标要求
--任务描述
--目标要求
--知识导图
-3.2循环语句 知识点讲解视频
-- 数字求和
-- 数字求和(续)
-- for语句
-3.3 序列数据 知识点视频讲解
--list类型
--字符串介绍1
--字符串介绍(2)
--字符串介绍(3)
--内存查看对象
--字典类型
--集合类型(1)
--集合类型(2)
-3.4 任务三参考代码
--参考代码
-3.5 任务相关知识测验
-4.1 任务描述与目标要求
--任务描述
--目标要求
--知识导图
-4.2 函数 知识点视频讲解
--函数(1)
--函数(2)
--日期计算器
-4.3 任务四参考代码
--参考代码
-4.4 任务相关知识测验
-5.1 任务描述与目标要求
--任务描述
--目标要求
--知识导图
-5.2 异常处理 知识点视频讲解
--异常处理(1)
--异常处理(2)
-5.3 任务五参考代码
--参考代码
--参考代码(续)
-5.4 任务相关知识测验
-6.1 任务描述与目标要求
--任务描述
--目标要求
--知识导图
-6.2 模块 知识点视频讲解
--模块
-- 包
-6.3 任务六参考代码
--参考代码
--参考代码(续)
-6.4 任务相关知识测验
-7.1 任务描述与目标要求
--任务描述
--目标要求
--知识导图
-7.2 文件的读写 知识点视频讲解
--文件的读写(上)
--文件的读写(下)
-7.3 任务七参考代码
--参考代码
--参考代码(续)
-7.4 任务相关知识测验
-8.1 任务描述与目标要求
--任务描述
--目标要求
--知识导图
-8.2 面向对象基础 知识点视频讲解
-8.3 任务八参考代码
--参考代码
-8.4 任务相关知识测验
-9.1 任务描述与目标要求
--任务描述
--目标要求
--知识导图
-9.2 面向对象高级 知识点视频讲解
-9.3 任务九参考代码
--参考代码
-9.4 任务相关知识测验
-10.1 具体任务描述与目标要求
--任务描述
--目标要求
-10.2 任务十参考代码
--参考代码
-11.1任务描述与目标要求
--任务描述
--目标要求
--知识导图
-11.2 Python数据库编程 知识点视频讲解
--数据库编程
-11.3 任务十一参考代码
--参考代码
-11.4 任务相关知识测验
-12.1任务描述与目标要求
--任务描述
--目标要求
--知识导图
-12.2 窗体程序开发 知识点视频讲解
--窗体程序开发
-12.3 任务十二参考代码
--参考代码
-12.4 任务相关知识测验
-项目简介
--2048游戏简介
-开始游戏
--开始游戏(上)
--开始游戏(下)
-移动控制
--移动控制(中)
--移动控制(下)
-胜负判断
--胜负判断(上)
--胜负判断(下)
-游戏积分
--游戏积分(上)
--游戏积分(下)
-程序重构
-程序优化
--程序优化(上)
--程序优化(中)
--程序优化(下)
-游戏窗口
--游戏窗口
-连接数据库
--连接数据库