谁是卧底

谁是卧底也是深受很多人喜欢的游戏,起码要三人以上才能玩,大致分为几个阶段:

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实现谁是卧底小游戏相关推荐

  1. python进行数据分析流程图_利用Python绘制诱人的特定流程图:桑基图

    大家好,我是小z~ 最近,不止一次收到群里小伙伴的截图追问: "这个图叫什么???" "这个图真好看!!!怎么画啊?" 小z本没有干货,问的人多了,也便有了干货 ...

  2. python画雪花流程图_用python画雪花,Python

    # 用Python画雪花 # 学习https://www.toutiao.com/i6787554710594257420/?tt_from=weixin&utm_campaign=clien ...

  3. python3游戏代码_将python2编写的“小游戏”代码更新到python3时出现问题

    我试图让一个用python2编写的琐碎游戏的代码在python3中运行.这是我到目前为止所得到的,但我在这一点上太困惑了.所有的选择题答案都不会显示(只有数字).在# the start of a s ...

  4. c++编写手机小游戏代码_用C++编写的小游戏源代码

    展开全部 五子棋的代码: #include #include #include #include using namespace std; const int N=15;                ...

  5. python做流程图_少儿Python编程_第十四讲:开发游戏

    无论哪一种编程语言,实现图形界面程序的方法都大同小异.本讲介绍用Python开发小游戏的方法,从中学习使用Python编写图形界面的程序,图形图像的基础知识,以及在图形界面程序中与用户交互.最后部分还 ...

  6. python 小游戏程序_用 Python 写个消消乐小游戏

    文 |野客 来源:Python 技术「ID: pythonall」 提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 ...

  7. python编写小游戏教程_用Python开发 写个消消乐小游戏

    提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 实现 消消乐的构成主要包括 ...

  8. python迷宫小游戏代码_用 Python 写个消消乐小游戏

    提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受欢迎程度可见一斑,本文我们使用 Python 来做个简单的消消乐小游戏. 很多人学习python,不 ...

  9. python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]

    python基础系列: python自学篇一[ Anaconda3安装 ] python自学篇二[ pycharm安装及使用 ] python自学篇三[ 判断语句if的使用 ] python自学篇四[ ...

最新文章

  1. 报名 | 第二届“大数据在清华”高峰论坛
  2. 2!=5 or 0在python中是否正确-不吹不擂,你想要的Python面试都在这里了【315+道题】...
  3. C++著名程序库的比较和学习经验
  4. java ftp 中文上传_java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题...
  5. DW —— 静态图片的交替更换
  6. 捷信达会员管理系统SQL语句相关
  7. 分区表的误区:性能提升
  8. 费波纳奇数c语言,费波纳切数列用C语言怎么编程
  9. 开源项目之Windows读取Ext4分区的工具 Ext2Read
  10. 大行bya412和java513_转:我的折叠生活之大行bya412改装总结
  11. QT error: assigning to ‘QListwidget *‘ from incompatible type ‘QListWidget *‘
  12. 掌上快递之主界面篇(1)
  13. visionpro求旋转中心,拟合圆心操作
  14. 跨境电商须知: Google CWV新政及应对之道(上)
  15. 云中 GPU的AI训练,显卡分配
  16. Dell1464笔记本安装Win7旗舰版和XP经历
  17. python爬虫报错:不信任证书问题的解决
  18. 如何做科研以及研究生毕设与论文研究【笔记】
  19. 数据透视表(图)中添加公式计算与汇总--计算项和计算字段
  20. Fiddler的使用[抓包]

热门文章

  1. 光猫、路由器、Wifi的解释
  2. 怎么开启搜狗高速浏览器的手动升级
  3. 【转载】人的一生最后悔什么
  4. http请求与响应全过程
  5. 【第78期】游戏策划:经典沟通案例,多少策划栽在这里
  6. 戴尔笔记本把计算机弄到桌面,刚买的dell笔记本桌面上怎么没有我的电脑,网上邻居等快捷方式,怎么设置显示在桌面...
  7. 征服 Apache + Tomcat
  8. PyQt5界面与逻辑的分离
  9. C++/MFC/Python杀毒软件 安全卫士项目
  10. Autojs微信运动自动点赞免root脚本源码