作品:十点半 / TenPointHalf(?)
前言:这是我的python编程作业,一个python写的纸牌游戏。

本文适合python入门新手,都是python基础知识

文章底部会贴出完整代码,如不想看罗嗦教程可以直接下划


*其实这个游戏我总共写了两次,
第一次是按游戏的设计一步一步写的,那时我刚接触python,写的乱七八糟
其实现在大概也差不多,不过有些进步就是了。。
那么我把它写完了,结果后来老师说:用类的方法来写
我一下子傻了
看了看以前写的代码,简直不能看……
又乱又长可读性还差……
就想着干脆就直接重构它吧

花一晚上时间,一气呵成,把它重构了*

原本我写这个破游戏居然写了500行……重构之后代码量大概在240行左右(不含注释)

文章底部会贴出完整代码


游戏仅涉及python基础知识

存档、读档(python文件读写)
python类的运用(如init方法,self)
random库和time库(洗牌和记录存档时间)
循环、数组、字典、函数、集合等..游戏道具:扑克牌一副

我先讲讲这扑克牌游戏大概是怎么一回事

  1. 游戏支持2-4人游玩(这是作业的设定,其实只要你想,几个人都能玩):设定游戏人数,每个玩家输入自己的名字
  2. 开局,手动选择一名庄家:指定序号的玩家称为庄家,庄家不需要下注

——顺带一提,我最初制作的是所有玩家丢骰子决定谁当庄家,重构的时候嫌麻烦就没那么整了

  1. 除庄家外的玩家(称闲家)下注:最低下1元最高下20元(我定的 )
  2. 发牌,一人一张,闲家可根据情况选择是否继续要牌,点大的玩家赢但手牌总点数超过十点半就要输钱了(称爆牌)
  3. 当所有的闲家都选择不要牌时,庄家可以开始选择是否继续要牌
  4. 庄家也不要牌时就可以决胜了,所有玩家的点数放在一起对比,输赢计算方式看下方

对了,这游戏里J/Q/K被称为人牌,均代表0.5


核心规则*获胜者不能爆牌(手牌总点数不超过10.5)*

某玩家点数最大,且全场没有出现与之相同点数的玩家:他单人获胜
某玩家点数最大,但存在其它玩家与之点数相同:持最大点数的玩家都获胜

所有玩家都爆牌,下注金额全部归作者)


发奖*所有获胜者都有奖金,奖金是所有玩家本轮下注之和构成的奖池*

闲家赢,获得奖池中的钱,且庄家需要额外向获胜闲家支付与其下注金额等量的钱(毕竟庄家不用下注…)
庄家赢,获得奖池中的钱

***多人获胜则平分奖池中的奖金***

首先是游戏道具,一副扑克牌,Card类;

    #扑克牌类class Card:#初始化方法,包含了扑克牌对象的3个属性#3个属性:{花色,牌号,所代表的点数}def __init__(self,suit,rank,value):self.suit = suitself.rank = rankself.value = value#创建一副全新的扑克牌def InitCard(self):#创建扑克牌盒子self.cards = []#创建花色for suit in ["♠","♥","♣","♦"]:#创建牌号for rank in ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]:#实例化扑克牌对象,并赋予属性,然后装进扑克牌盒子self.cards.append(self.Card(suit,rank,self.Calculate(rank)))#引入随机模块from random import shuffle as refresh#洗牌refresh(self.cards)

这里用到了Calculate,赋予每张扑克牌点数

    #牌点计算器,用于在创建扑克牌对象时提供每张牌的点数#输入参数:{牌号}def Calculate(rank):#字典,数据来源dictionary = {"A":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"10":10,"J":0.5,"Q":0.5,"K":0.5}#约定点数并返回value = dictionary[rank]return value

接着是游戏参与者,Players类;

    class Players:#初始化方法,包含了玩家对象的9个属性#9个属性:{序号,名称,手牌,庄家标记,要牌标记,未爆牌标记,下注,金钱,牌点}def __init__(self,number,name,hand,banker,want,inboom,bet,money,point):self.number = numberself.name = nameself.hand = handself.banker = bankerself.want = wantself.inboom = inboomself.bet = betself.money = moneyself.point = point

上面我给玩家设定了很多属性,方便 后面继续写……(并不方便


以上是游戏核心组成部分,下面开始真正的游戏结构

游戏从Game类的Process开始

Game.Process(Game)

上面这句是放在全局最后面用来启动游戏的,我们看看下面的Game
顺带一提,游戏的一切都包围在Game类里

#游戏类
class Game:#一般游戏进程,从读取存档开始def Process(self):#初始回合数为0self.rounds = 0#初始Continue标记为Trueself.Continue = True#读取游戏self.Read(self)#当Continue标记为True时循环进行游戏while self.Continue:#创建一个玩家集合self.player_set = set()#初始化扑克牌self.Card.InitCard(self)#每轮的开始都将重置每名玩家的部分信息for i in range(self.player_amount):self.player_set.add(i)self.player_list[i].banker = Falseself.player_list[i].want = Trueself.player_list[i].inboom = Trueself.player_list[i].bet = 0#下面两句是加牌操作,每名玩家1张self.player_list[i].hand = [self.cards[0]]del self.cards[0]#进入叫庄环节self.Banker(self,self.player_amount,self.player_set)

上面这段代码会先执行到Read,游戏尝试读档

 #读取游戏的程序def Read(self):#首先进入读取游戏的子程序,子程序将判断系统是否能够读取游戏数据if self.__Read(self):#读取游戏存档with open("save.txt","r") as data:save = data.readlines()#让玩家选择是开始新游戏还是继续上一局if input(">>>系统检测到您已存在游戏数据:\n{}\n{}\n>>>是否要接着玩呢?输y继续玩,输其它开始新游戏:".format((save[0])[0:save[0].find("[Savetime]")],save[1])) in ("y","Y"):player_name = []#读取玩家数量信息self.player_amount = int((save[1])[save[1].find("[Rounds]")+8:save[1].find("[Players]")])#读取游戏回合信息self.rounds = int((save[1])[0:save[1].find("[Rounds]")])#读取玩家名称信息for i in range(self.player_amount):player_name.append((save[i+2])[save[i+2].find("[Num]")+5:save[i+2].find("[Name]")])#初始化扑克牌self.Card.InitCard(self)#初始化游戏,初始化方法为1self.InitGame(self,player_name,self.player_amount,1)#读取玩家金钱信息for i in range(self.player_amount):self.player_list[i].money = int((save[i+2])[save[i+2].find("[Name]")+6:save[i+2].find("[Money]")])#清除读取的save,释放内存del saveinput(">>>已恢复上局游戏数据~<<<\n\n-戳回车键查看玩家信息并继续游戏")#展示所有玩家信息self.Show(self,self.player_amount)#初始化游戏,初始化方法为3self.InitGame(self,player_name,self.player_amount,3)#若玩家选择不读取,则开始新游戏else:self.Start(self)

Read这里最开始是进入__Read,判断能否读到存档
如果读不到存档就进入Start(全新开始)

    #读取游戏的子程序def __Read(self):try:#检验是否能正常读取游戏数据,若能读取则返回Truewith open("save.txt","r"):return True#否则将直接开始新游戏except:print(">>>系统未检测到游戏数据喔,新游戏将开始<<<")self.Start(self)

这个是Start

    #游戏进程,从零开始def Start(self):#初始化扑克牌self.Card.InitCard(self)#初始化玩家self.PlayerInit(self)

绕了一圈,现在我们回到Read
如果读到了存档,程序就只用初始化扑克牌Card.InitCard

毕竟从存档读取到了玩家的信息,不需要用PlayerInit方法

既然有了玩家和扑克牌,就可以初始化游戏了

#初始化游戏,初始化方法为1
self.InitGame(self,player_name,self.player_amount,1)

我们先来看看InitGame函数
这里我们给的Action参数是1

    #初始化游戏,有三种初始化方法#输入参数:{玩家名称列表,玩家数量,初始化方式}def InitGame(self,player_name,player_amount,Action):#Action参数小于3时执行游戏初始化if Action < 3:#创建玩家列表,玩家集合self.player_list = []self.player_set = set()#给每位玩家添加初始数据for i in range(self.player_amount):self.player_list.append(self.Players(i,player_name[i],[self.cards[0]],False,True,True,0,100,0))self.player_set.add(i)#因为中间涉及到了发牌,所以要从牌堆删除发给玩家的牌del self.cards[0]#若Action等于2追加执行,进入叫庄环节if Action == 2:self.Banker(self,self.player_amount,self.player_set)#Action参数等于3时不进行初始化,直接进入叫庄环节(成功读取到游戏数据)if Action == 3:self.Banker(self,self.player_amount,self.player_set)

那么InitGame只会执行创建玩家信息并给牌的操作
再次回到Read,读取每名玩家的金钱信息

为什么不在一开始就读取呢?主要是因为我流程设计的原因…只能放到后面…

接着进入Show,展示玩家们的信息

    #展示所有玩家信息的程序#输入参数:{玩家数量}def Show(self,player_amount):#此Flag用于记录玩家金钱是否不足以进行下一局游戏,初始值为TrueFlag = True#对于所有玩家for i in range(self.player_amount):#展示玩家信息print("\n>>>玩家{}:[{}]\n>>>庄家:{}\n>>>手牌:".format(i + 1,self.player_list[i].name,self.player_list[i].banker),end = "")#若此玩家金钱不足,Flag将设定为False,游戏将结束if int(self.player_list[i].money) <= 0:Flag = False#展示玩家信息for n in range(len(self.player_list[i].hand)):print(self.player_list[i].hand[n].suit + self.player_list[i].hand[n].rank,end = " ")print("\n>>>手牌点数:{}\n>>>本轮下注:{}$\n>>>钱包余额:{}$".format(self.player_list[i].point,self.player_list[i].bet,self.player_list[i].money))return Flag

Show的作用有两个:一个是展示所有玩家的信息,另一个是判断玩家有没有输光
这里玩家还是有钱的,所以展示完成后又回到Read,执行到下面这段

#初始化游戏,初始化方法为3
self.InitGame(self,player_name,self.player_amount,3)

初始化函数里Action参数为3的时候其实已经不是初始化了
这里是直接进入叫庄环节(banker),游戏开始了

Banker(self,self.player_amount,self.player_set)
    #叫庄环节#输入参数:{玩家数量,玩家集合}def Banker(self,player_amount,player_set):#进入叫庄意味着游戏正式开始,回合数将加1self.rounds += 1while True:try:#输入庄家的玩家序号banker_number = int(input("第{}局游戏开始,请您选出一名庄家,庄家不需要下注哟!\n>>>请指定庄家的序号,1-{}号都可以:".format(self.rounds,self.player_amount))) - 1#若玩家序号没有错误将执行子程序if banker_number in range(self.player_amount):self.__Banker(self,self.player_amount,banker_number,self.player_set)break#玩家序号输入错误则报错else:print(">>>请输入正确的玩家序号哟,再试一次吧!<<<")#若输入非数字将报出此错except:print("\n>>>系统监测到了错误,但是系统不知道怎么解决")

Banker负责判断玩家序号是否输入正确,若正确则进入__Banker修改庄家信息

    #叫庄子程序#输入参数:{玩家数量,庄家编号,玩家集合}def __Banker(self,player_amount,banker_number,player_set):#修改该名玩家的庄家标识符self.player_list[banker_number].banker = True#从玩家集合中除去这名庄家,将其变为闲家集合self.player_set -= {banker_number}print("\n>>>{}号玩家:[{}]通过选举成为了庄家!".format(banker_number + 1,self.player_list[banker_number].name))#进入下注环节self.Bet(self,self.player_amount,banker_number,self.player_set)

庄家被确定,游戏进入下一个环节:下注 Bet

    #下注环节#输入参数:{玩家数量,庄家编号,闲家集合}def Bet(self,player_amount,banker_number,player_set):#对于每名闲家for i in self.player_set:while True:try:#输入下注值bet = int(input("-闲家{}:[{}],轮到你下注了!\n>>>最低下1$,最高可以下20$:".format(i + 1,self.player_list[i].name)))#限制下注值在1-20范围之间if bet in range(1,21):#进入下注子程序if self.__Bet(self,i,bet):break#若下注不符合范围规定则报错else:print(">>>下注区间是1-20$,请注意下呢!<<<")#若输入非整数将报此错except:print("\n>>>系统监测到了错误,但是系统不知道怎么解决")#进入补牌环节self.AugmentCard(self,self.player_amount,banker_number,self.player_set)

Banker一样,Bet这里只负责判断,真正修改下注数据需要执行__Bet

    #下注子程序#输入参数:{下注者编号,下注金额}def __Bet(self,i,bet):#判断该名玩家是否下假注(钱包里根本没那么多钱)if (self.player_list[i].money - bet) >= 0:#未超额,正常下注self.player_list[i].money -= betself.player_list[i].bet = betprint("\n>>>闲家{}:[{}]下了{}$,钱包还剩{}$!".format(i + 1,self.player_list[i].name,bet,self.player_list[i].money))return True#超额了,返回False给主程序,主程序将给予回应else:print(">>>您的钱不够,您只有{}$!请重新下注!".format(self.player_list[i].money))return False

当每名闲家下注完,程序回到Bet这里,开始下一个环节:补牌

#进入补牌环节
self.AugmentCard(self,self.player_amount,banker_number,self.player_set)

补牌环节是这个游戏里相对复杂的流程

也是这个游戏中比较能体现[博弈]的场景
牌点又要大过别人,又不能超过 10.5
而且也不知道扑克牌堆里的下一张是什么,说不定一抽就成千古恨了

说实话我感觉自己写的不怎么样……有点长乱

    #补牌环节#输入参数:{玩家数量,庄家编号,闲家集合}def AugmentCard(self,player_amount,banker_number,player_set):#初始化补牌轮数为0count = 0#完成补牌的玩家数为0success = 0#设定补牌未完成标识为Trueinsuccess = Trueprint("\n>>>补牌阶段开始,闲家优先!<<<\n")#若补牌未完成标识为Truewhile insuccess:#补牌轮数加1count += 1print("-第{}轮补牌开始!".format(count))#对于每名闲家for i in self.player_set:#若该名闲家的要牌标记为True且不爆牌标记为Trueif self.player_list[i].want and self.player_list[i].inboom:#玩家可决定是否补牌,若输入为Y、y将进入补牌子程序if input(">>>闲家{}:[{}]轮到你选择了!\n-目前牌点为{},若要补牌请输入y:".format(i + 1,self.player_list[i].name,self.__calculate(self,i))) in ("Y","y"):self.__AugmentCard(self,i)#玩家选择不补牌则将玩家的要牌标记设为Falseelse:print("\n>闲家{}不敢补了。".format(i + 1))self.player_list[i].want = False#补牌完成了,完成补牌的玩家数量加1else:success += 1#若所有闲家均完成补牌,则将未完成标识符设为False,循环将停止if success == self.player_amount - 1:insuccess = False#接下来轮到庄家补牌了i = banker_numberwhile True:#循环条件为庄家要牌标记为True且不爆牌标记为Trueif self.player_list[i].want and self.player_list[i].inboom:#玩家可决定是否补牌,若输入为Y、y将进入补牌子程序if input("\n>>>庄家{}:[{}]请注意!现在轮到你选择了!\n-目前牌点为{},若要补牌请输入y:".format(i + 1,self.player_list[i].name,self.__calculate(self,i))) in ("Y","y"):self.__AugmentCard(self,i)#玩家选择不补牌则将玩家的要牌标记设为Falseelse:print("\n>庄家{}不敢补了。".format(i + 1))self.player_list[i].want = False#所有玩家完成补牌,结束循环else:break#进入决胜环节self.Fight(self,self.player_amount,banker_number)

总而言之就是闲家补完庄家补,且爆牌者即刻出局,不得参与补牌……
这里可能 有一些……复杂的判断 …所以写的比较长乱…水平有限……

和前面一样,AugmentCard也只负责表面工作,真正修改扑克牌数据是在__AugmentCard里面进行的

    #补牌子程序#输入参数:{要牌者玩家编号}def __AugmentCard(self,i):print("\n-玩家{}:[{}]抽到了{}{}:{}点!".format(i + 1,self.player_list[i].name,self.cards[0].suit,self.cards[0].rank,self.cards[0].value))#从牌堆顶摸一张牌给玩家self.player_list[i].hand.append(self.cards[0])del self.cards[0]#玩家得牌后计算该名玩家的手牌点数,若大于10.5则爆牌if self.__calculate(self,i) > 10.5:print(">>>目前的点数为{}!您爆了,神仙也救不了您!".format(self.player_list[i].point))#修改不爆牌标记self.player_list[i].inboom = False#若未爆则对赌徒进行鼓励,增加赌场的预期收入else:print(">>>目前的点数为{}!再接再励哟!".format(self.player_list[i].point))

__AugmentCard负责告诉玩家自己抽到牌的点数,并判断玩家是否爆牌
若玩家爆牌则修改一下该名玩家的爆牌标记,该名玩家即刻退出补牌环节

这里调用了__calculate计算牌点

    #玩家牌点计算器#输入参数:{被计算牌点的玩家编号}def __calculate(self,i):#计算前先将记录玩家牌点的属性归零,因为稍后将给予新的数值self.player_list[i].point = 0#将玩家手中每张牌的点数加起来for n in range(len(self.player_list[i].hand)):self.player_list[i].point += self.player_list[i].hand[n].value#返回该名玩家的牌点return self.player_list[i].point

__calculate将返回指定玩家手牌点数的总和
好了,回到我们的AugmentCard,接下来要进入到最终环节Fight,亮牌决胜

#进入决胜环节
self.Fight(self,self.player_amount,banker_number)

这个环节同样比较长,比较复杂…… 也许只是我写的比较复杂而已……

    #决胜环节#输入参数:{玩家数量,庄家编号}def Fight(self,player_amount,banker_number):#为了方便决出胜负,创建点数列表用于存放所有玩家的牌点point_list = []#创建奖金,初始值为0bouns = 0#对所有玩家进行操作for i in range(self.player_amount):#奖金为玩家下注总和bouns += self.player_list[i].bet#若玩家未爆牌(手牌点数和小于10.5)if self.player_list[i].point <= 10.5:#则在点数列表中添加相应玩家的手牌点数point_list.append(self.player_list[i].point)else:#否则为这名玩家添加大小为"-1"的点数point_list.append(-1)#判断玩家是否全爆,判断依据为:"-1"数量是否小于玩家的总数if point_list.count(-1) < self.player_amount:#玩家未全爆,则找出点数最大值biggest = max(point_list)#若点数最大值出现重复现象if point_list.count(biggest) > 1:#创建获胜玩家列表,重复且最高的玩家都将获胜winner = [i for i,repeat in enumerate(point_list) if repeat == biggest]print("\n>>>本轮游戏共有{}名玩家获胜:".format(len(winner)))#对于每名获胜玩家,进入发奖子程序for i in winner:self.__Bouns(self,i,bouns/len(winner),banker_number)#若点数最大值未出现重复现象else:#获胜者为该最大点数的所有者i = point_list.index(biggest)print("\n>>>恭喜玩家{}:[{}]获得本轮的胜利!<<<".format(i + 1,self.player_list[i].name))#进入发奖子程序self.__Bouns(self,i,bouns,banker_number)#若所有玩家都爆牌将不进行任何发奖else:print(">>>\n你们都爆了,这里的{}$谁也拿不走!".format(bouns),banker_number)#程序将在此停顿,接到回车键命令后继续进行input("\n>>>戳回车键展示所有玩家的数据<<<\n")#保存游戏数据self.Save(self,self.player_amount)#进入Show程序,程序在展示玩家数据的同时将判断是否有玩家输光,若未出现输光情况则可以继续进行下一轮游戏if self.Show(self,self.player_amount):if input("\n>>>还来一把?\n-输入n可以结束游戏,不输n继续游戏:") in ("n","N"):#若玩家选择不继续,将结束游戏self.GameExit(self)#若Show程序发现有玩家已经输光else:print(">>>啊哦,好像有人输光了!<<<")#结束游戏self.GameExit(self)

Fight主要的工作是判断获胜者,处理奖金,并将获胜者交给__Bouns颁奖
对于多名玩家获胜的判断,这里用到了一点链表

下面是__Bouns

    #发奖子程序#输入参数:{获奖者玩家编号,奖金,庄家编号}def __Bouns(self,i,bouns,banker_number):#若该名获奖者不是庄家if not self.player_list[i].banker:#从庄家的钱包中扣除该名获奖者在本轮中的下注金额,并将其加入奖池self.player_list[banker_number].money -= self.player_list[i].betbouns += self.player_list[i].betprint("\n>>>闲家获胜,庄家要额外付给他与他下注同样多的钱,总共{}$!".format(self.player_list[i].bet))#发奖给获奖者self.player_list[i].money += bounsprint(">>>玩家{}:[{}]共获得{}$奖金,钱包余额为{}$!".format(i + 1,self.player_list[i].name,bouns,self.player_list[i].money))

__Bouns的工作很简单,判断一下然后发钱就行了,再顺便告诉一下玩家自己赢(输)了多少钱

奖发完了,同时宣告这轮游戏正式结束,程序进入Save尝试保存游戏数据

    #保存游戏的程序#输入参数:{玩家数量}def Save(self,player_amount):#首先进入保存游戏的子程序,子程序将判断系统是否能够保存游戏数据if self.__Save(self):#引入时间库,记录存档时间import datetime as date#重新格式化时间文本time = date.datetime.now().strftime("%Y.%m.%d-%H:%M:%S")#保存数据with open("save.txt","w+") as data:#游戏数据:保存时间、游戏回合、玩家数量data.writelines("{}[Savetime]\n{}[Rounds]{}[Players]\n".format(time,self.rounds,self.player_amount))#玩家数据:玩家序号、玩家名称、玩家金钱for i in range(self.player_amount):    data.writelines("{}[Num]{}[Name]{}[Money]\n".format(self.player_list[i].number,self.player_list[i].name,int(self.player_list[i].money)))

__Save__Read一样,就是用来测试能否读写文件的,其实这俩函数合并成一个就行了……

    #保存游戏的子程序,用于判断能否保存游戏数据def __Save(self):try:with open("save.txt","w+"):#若执行成功程序将返回Truereturn True#执行失败将报错except:print("\n>>>不知为何,系统无法保存游戏数据<<<")

Save运行后在py运行目录下写出一个txt存档,然后我们回到Fight,进行到执行Show

        #进入Show程序,程序在展示玩家数据的同时将判断是否有玩家输光,若未出现输光情况则可以继续进行下一轮游戏if self.Show(self,self.player_amount):if input("\n>>>还来一把?\n-输入n可以结束游戏,不输n继续游戏:") in ("n","N"):#若玩家选择不继续,将结束游戏self.GameExit(self)#若Show程序发现有玩家已经输光else:print(">>>啊哦,好像有人输光了!<<<")#结束游戏self.GameExit(self)

前面也提到过Show的两个作用,展示数据,以及判断玩家是否输光

如果存在任意一名玩家输光了钱,那当然是强制结束游戏,赶出赌场了,进入GameExit

当然,如果所有玩家都还有钱,还是可以主动选择是否结束游戏(GameExit)的

    #结束游戏的程序def GameExit(self):self.Continue = Falseinput("\n>>>十点半游戏到此结束!\nCopyright ©2018 武澳博\n>>>有问题的话欢迎来找我交流!\n\n-请按回车键结束程序")

当然,如果选择不结束,游戏会不断循环进行,直到有玩家输光,或者玩到你不想玩了为止

控制循环的部分在Game.Process,由一个Continue标记决定,回去上面看看吧


到这本文也就结束了,作者刚读大一,水平有限,欢迎交流指正
以前总看别人的文章,这下自己也写个一篇,继续努力

下面贴出这个十点半游戏的完整代码:
https://blog.csdn.net/qq_26373925/article/details/87288054

原创

python十点半纸牌游戏教程相关推荐

  1. python十点半游戏代码_十点半游戏完整代码及详细注释.py

    # -*- coding: utf-8 -*- #此版本,于2018年12月9日 #游戏类 class Game: #一般游戏进程,从读取存档开始 def Process(self): #初始回合数为 ...

  2. Python之十点半小游戏

    源码(详细注释): # -*- coding: utf-8 -*-#游戏类 class Game:#一般游戏进程,从读取存档开始def Process(self):#初始回合数为0self.round ...

  3. python十点半游戏代码_十点半源码|十点半棋游戏源码

    游戏规则 提示:庄家赢 pai,无论是什么 pai型都不翻倍,只有闲家赢 pai才针对 pai型进行加倍 底注:比赛前确认基本源码下载的数额 十点半 十点半 庄家:选定一个玩家为庄家,其他玩家都为闲家 ...

  4. python创建游戏代码_用Python类创建纸牌游戏

    我试图通过创建一个纸牌游戏来练习Python中的编程类.现在我要做的是让玩家从牌堆中抽一张牌.我有如下代码: class Deck(): def __init__(self): #create the ...

  5. python10点半纸牌游戏_扑克11点游戏(python代码)

    扑克11点游戏(python代码)import random'''纸牌11点游戏 规则: 1. 3个人参与,默认先给用户发一张牌,其中 J.Q.K.小王.大王代表的值为0.5,其他就是则就是当前的牌面 ...

  6. 纸牌游戏10点半c语言,python10点半纸牌游戏_【Python】Python编的纸牌游戏

    [Python] 纯文本查看 复制代码import random from cards import Card ############################################ ...

  7. python十点半游戏代码_Python实现Pig Latin小游戏实例代码

    前言: 本文研究的主要是Python实现pig Latin小游戏的简单代码,具体介绍如下. Pig Latin是一个语言游戏. 步骤: 1.让用户输入一个英文单词 2.确保用户输入一个有效单词 3.将 ...

  8. python10点半纸牌游戏_【Python】Python编的纸牌游戏

    [Python] 纯文本查看 复制代码import random from cards import Card ############################################ ...

  9. Python贪吃蛇小游戏教程

    今天教大家使用pygame编一个简单贪吃蛇小游戏. 1.导库 import pygame, sys, time, random, zt """ zt库是用来搞游戏暂停的 ...

最新文章

  1. 直播|深大周池:跨数据中心的高效大图处理问题研究
  2. react生命周期和组件生命周期
  3. Win7 Tensorflow 安装
  4. ios打包报错:User interaction is not allowed
  5. 服务降级和服务熔断的区别_Spring Cloud 熔断 隔离 服务降级
  6. 危机管理计划书模板_免费领!40套商业计划书PPT模板+10份知名公司商业计划书真实案例范文...
  7. C语言使用QR(正交三角)求特征值eigen values(附完整源码)
  8. java版数据结构解迷宫问题_C语言数据结构之迷宫问题
  9. 二分算法和冒泡排序时间复杂度分析
  10. mybatis官网下载
  11. 人工智能重新定义管理
  12. caffe+报错︱深度学习参数调优杂记+caffe训练时的问题+dropout/batch Normalization
  13. GPS时间转北京时间
  14. 0x000000c5(0X000000C5蓝屏是什么意思)
  15. aws打开慢_亚马逊AWS服务器访问较慢,如何快速访问AWS服务器呢?
  16. aecmap快捷键_arcmap快捷键
  17. 【Scratch案例实操】Scratch字母排序 scratch编程案例教学 scratch创意编程 少儿编程教案
  18. 对比了论坛,博客和微博
  19. 北航计算机学院学硕分数,考研|北航各学院复试分数线陆续公布,原来这个专业分数最高!...
  20. html5手机拍照上传

热门文章

  1. 工控机 安装 mysql_安卓系统远程数据库MySql的操作
  2. pycharm激活秘籍
  3. vivox3android系统,vivo X3深入评测:Smart vivo ROM系统功能
  4. Day --01 课后总结
  5. Mysql 都有那些最需要掌握的原理?
  6. 高德地图Loca 数据可视化 API 2.0的用法
  7. 5福最多多少钱_集5福 2018支付宝集5福活动攻略:最高可以分多少钱?
  8. 电路中的原理图中电阻电容的选择
  9. 用Editplus制作HTML网页
  10. java tree 树的代码实现