python谁是卧底游戏流程图_用python实现谁是卧底小游戏
谁是卧底
谁是卧底也是深受很多人喜欢的游戏,起码要三人以上才能玩,大致分为几个阶段:
1.分配平民词语和卧底词语--->
2.玩家依次发言--->
3.根据发言投票认为谁是卧底--->
4.得到票数最多的玩家出局--->
5.出局玩家刚好是卧底则平民胜利,如果出局玩家是平民则被冤死并继续第2步,当剩下的平民只有1个时卧底胜利。
特殊情况是,出现两名或以上的玩家票数相同,则相同票数的玩家重新发言,然后全体针对这几个玩家投票。
设计思路
1、创建游戏类
2、创建玩家类
玩家类拥有名字,是否卧底,拥有票数的属性
3、玩家发言
4、玩家投票
5、判断出局
6、判断是否结束游戏
代码实现
import random
class Game:
""" 游戏类 """
game_list=[]
def __init__ (self):
""" 初始化类时加入列表 """
Game.game_list.append(self)
def wd_r ():
""" 随机一个卧底 """
random.choice(Game.game_list).wd=1
def speak (self,talk):
""" Function doc """
self.talk=talk
def vote_r (self,name):
""" 玩家投票 """
for i in Game.game_list:
if i.name==name:
i.vote+=1
def judge ():
""" 判决出局,判断是否结束游戏 """
vote=0
player=0
weather=0
#判断哪个玩家的票数最高
for i in Game.game_list:#判断最高票数玩家的票数
if i.vote>vote:
vote=i.vote
for i in Game.game_list:#选出最高票数玩家的对象
if i.vote==vote:
weather+=1#判断获得最高票数玩家的个数
player=i#取出最高票数玩家对象
if weather == 1:#判断最高票数玩家是否只有一个
print('玩家%s被出局'%player.name)
if player.wd == 1:#判断出局玩家是否卧底
print('卧底出局,平民胜,游戏结束')
return 0
else:
Game.game_list.remove(player)
if len(Game.game_list)<=2:#判断剩余玩家人数
print('卧底未出局,卧底胜,游戏结束')
return 0
print('卧底未出局,游戏继续')
return 1
else:
print('存在票数相同的玩家,游戏继续')
return 1
class Player(Game):
""" 玩家类 """
def __init__ (self,name,wd=0,vote=0):
""" 初始化玩家类 """
self.name=name
self.wd=wd
self.vote=vote
super().__init__()
if __name__=='__main__':
flag=1
while flag:#输入玩家数量
num=int(input('请输入玩家数量(至少3个):'))
if num>=3:
flag=0
else:
print('请输入正确人数')
n=num
names=locals()#动态创建玩家对象
for i in range(num):
n-=1
name=input('请输入第%d个玩家名字:'%(num-n))
names['player'+str(i)]=Player(name)
# ~ exec('player{} = {}'.format((num-n),Player(name)))
Game.wd_r()#随机将一个玩家变成卧底
flag=1
while flag:
for i in Game.game_list:#玩家发言
i.speak(input('请玩家%s发言:'%i.name))
for i in Game.game_list:#输出玩家发言
print('玩家%s发言:%s'%(i.name,i.talk))
for i in Game.game_list:#投票
i.vote_r(input('请玩家%s投票(玩家名):'%i.name))
flag=Game.judge()#判决出局
for i in Game.game_list:#票数清零
i.vote=0
总结
在实现过程中遇到了动态命名创建的对象难题,学习了新的方法:
names=locals()
names['player'+str(i)]=Player(name)
该方法通过python中字典的原理,利用键值结构实现了动态赋值变量名
python谁是卧底游戏流程图_用python实现谁是卧底小游戏相关推荐
- python进行数据分析流程图_利用Python绘制诱人的特定流程图:桑基图
大家好,我是小z~ 最近,不止一次收到群里小伙伴的截图追问: "这个图叫什么???" "这个图真好看!!!怎么画啊?" 小z本没有干货,问的人多了,也便有了干货 ...
- python画雪花流程图_用python画雪花,Python
# 用Python画雪花 # 学习https://www.toutiao.com/i6787554710594257420/?tt_from=weixin&utm_campaign=clien ...
- python3游戏代码_将python2编写的“小游戏”代码更新到python3时出现问题
我试图让一个用python2编写的琐碎游戏的代码在python3中运行.这是我到目前为止所得到的,但我在这一点上太困惑了.所有的选择题答案都不会显示(只有数字).在# the start of a s ...
- c++编写手机小游戏代码_用C++编写的小游戏源代码
展开全部 五子棋的代码: #include #include #include #include using namespace std; const int N=15; ...
- python做流程图_少儿Python编程_第十四讲:开发游戏
无论哪一种编程语言,实现图形界面程序的方法都大同小异.本讲介绍用Python开发小游戏的方法,从中学习使用Python编写图形界面的程序,图形图像的基础知识,以及在图形界面程序中与用户交互.最后部分还 ...
- python 小游戏程序_用 Python 写个消消乐小游戏
文 |野客 来源:Python 技术「ID: pythonall」 提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 ...
- python编写小游戏教程_用Python开发 写个消消乐小游戏
提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 实现 消消乐的构成主要包括 ...
- python迷宫小游戏代码_用 Python 写个消消乐小游戏
提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 很多人学习python,不 ...
- python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]
python基础系列: python自学篇一[ Anaconda3安装 ] python自学篇二[ pycharm安装及使用 ] python自学篇三[ 判断语句if的使用 ] python自学篇四[ ...
最新文章
- 报名 | 第二届“大数据在清华”高峰论坛
- 2!=5 or 0在python中是否正确-不吹不擂,你想要的Python面试都在这里了【315+道题】...
- C++著名程序库的比较和学习经验
- java ftp 中文上传_java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题...
- DW —— 静态图片的交替更换
- 捷信达会员管理系统SQL语句相关
- 分区表的误区:性能提升
- 费波纳奇数c语言,费波纳切数列用C语言怎么编程
- 开源项目之Windows读取Ext4分区的工具 Ext2Read
- 大行bya412和java513_转:我的折叠生活之大行bya412改装总结
- QT error: assigning to ‘QListwidget *‘ from incompatible type ‘QListWidget *‘
- 掌上快递之主界面篇(1)
- visionpro求旋转中心,拟合圆心操作
- 跨境电商须知: Google CWV新政及应对之道(上)
- 云中 GPU的AI训练,显卡分配
- Dell1464笔记本安装Win7旗舰版和XP经历
- python爬虫报错:不信任证书问题的解决
- 如何做科研以及研究生毕设与论文研究【笔记】
- 数据透视表(图)中添加公式计算与汇总--计算项和计算字段
- Fiddler的使用[抓包]