python实现 谁是卧底之杀人游戏游戏

利用python写“猜数字”,“猜词语”,“谁是卧底”这三个游戏,从而快速掌握python编程的入门知识,包括python语法/列表/元组/字典/流程控制/库函数等等。
linux平台,python 3.4。需要在linux中把python 3.4编译一下,这样编写python程序时保存为.py格式的文件并添加执行权限再终端运行即可(原理跟shell脚本相同),非常方便。
ps:贴出来的python程序代码在windows中也兼容,只不过运行方式不是命令行,而是要通过python软件。python软件可以上官网下载安装& ,在学习的时候,可以直接在python软件上面输入python语句即可打印结果,也就是说python无需编译即可运行,很多人也称之为“脚本”语言。
很多人在聚餐时都玩过猜数字游戏,由某人随机出一个指定范围内的数,然后其他人一个一个猜,猜的过程中区间不断缩小,直到猜中为止。
这里的猜数字游戏就是用程序来代替那个出数字的人,程序算法设计为:
1.输入数字区间---&2.系统产生区间内的随机数---&3.玩家输入自己猜的数字---&4.比较玩家猜的与答案的高低并提示---&5.未猜中则回到3,猜中则提示猜次数
代码很少,如下所示:
#!/usr/local/bin/python3
import random
bot=int(input('Set range bottom\n'))
top=int(input('Set range top\n'))
rand=random.randint(bot,top)
print ('Random number in ['+str(bot)+','+str(top)+'] generated!')
num=int(input('###Guess the number###\n'))
while (num!=rand):
if (num&rand):
print('*_* Lower than the answer')
print('T_T Higher than the answer')
num=int(input('###Guess the number###\n'))
print('^_^ You get the answer with [%d] times'%cnt)第一行是要让linux系统知道这是python3程序,random是产生随机数的库函数,要注意的是python对格式要求很严格,因为它不用通过{}而是通过缩进量判断流程。
通过这个可以掌握基本的语法和编写规则了,下面再试试有点难度的,用到词组和循环控制等知识。
电视节目中的”你来比划我来猜“大家应该都看过,而且很多人也玩过,规则就是一个人看词语比划相应动作和说一些提示,另一个人看不到词语要通过比划的动作猜出来,猜的过程中主持人判断是否符合规则。
某一组玩家猜词语的算法设计为:
1.开始计时---&2.猜词语---&3.答对则正确数加1并回到2,要跳过或犯规了则直接回到2,超时了直接跳到3---&3.循环10次后或时间结束后统计答对的题数
有num组玩家就进行以上流程的num次循环,当然也要准备x组词语,因为每组玩家猜的词语是不同的。
代码量不大,如下所示:
#!/usr/local/bin/python3
import time
num = int(input('有多少组玩家\n'))
guessWord = []
correct = []
#定义列表,num+10是不想让guessWord下标不合法
for i in range(0,num+10):
guessWord.append(0)
correct.append(0)
wordNum=10
guessWord[0] = ['打情骂俏','海绵宝宝','娇媚','金鸡独立','狼吞虎咽','睡眼朦胧','鹤立鸡群','手舞足蹈','卓别林','穿越火线']
guessWord[1] = ['眉飞色舞','英雄联盟','扭秧歌','偷看美女','大摇大摆','回眸一笑','市场营销','大眼瞪小眼','自恋','处女座']
guessWord[2] = ['狗急跳墙','捧腹大笑','目不转睛','愁眉苦脸','左顾右盼','宫保鸡丁','升国旗','暗恋','臭袜子','趁火打劫']
flag='n'
for i in range(0,num):
start = time.time()
for k in range(0,wordNum):
print (('%d.%s')%(k+1,guessWord[i][k]))
flag = input('请答题,答对请输入y,跳过请输入任意键')
end = time.time()
sec = end-start
if (110&=sec&=120):
print ('还有10秒钟')
if (sec&=120):
print ('时间到!游戏结束')
if (flag=='y'):
correct[i]=correct[i]+1
str_temp=('第%d组答对数目:%d') % (i+1,correct[i])
print (str_temp)
其实词语可以做成从独立的文件中读入的方式,这样方便更新和管理,下面就介绍一种用“字典”的方式来获得“谁是卧底”的卧底词。
谁是卧底也是深受很多人喜欢的游戏,起码要三人以上才能玩,大致分为几个阶段:1.分配平民词语和卧底词语---&2.玩家依次发言---&3.根据发言投票认为谁是卧底---&4.得到票数最多的玩家出局---&5.出局玩家刚好是卧底则平民胜利,如果出局玩家是平民则被冤死并继续第2步,当剩下的平民只有1个时卧底胜利。
特殊情况是,出现两名或以上的玩家票数相同,则相同票数的玩家重新发言,然后全体针对这几个玩家投票。
程序设计思想:输入玩家数num,玩家编号为0~num-1,然后定义三个含有num个元素的列表:词语列表,计算玩家票数的列表,死亡玩家的列表。列表下标从0~num-1,随机产生该区间的数x,代表x号玩家是卧底,然后分配卧底词和平民词。注意,提示几号玩家是卧底或冤死的时候,要将打印信息时候的下标加1,比如下标数0代表的其实是1号玩家。在生活中,没多少人会习惯说自己是“第0个人”这种说法吧,除了程序员- -;
在每轮游戏中,依次进行发言,投票,票数最多的玩家出局(出现相同票数则重新发言),出局玩家归入死亡玩家列表。然后开始下一轮。
那么,如果有num位玩家,则最多有多少轮游戏结束?因为进行到只有2位玩家游戏就结束了,所以答案是num-2轮!也就是说上述流程要循环num-2次。
编程思想定了就可以敲代码了,程序代码如下:
#!/usr/local/bin/python3
import random
from spyword import spyword
num=int(input('请输入玩家数(至少为3)\n'))
spy=random.randint(0,num-1)
#随机产生词语 定义词语列表 计算玩家票数的列表 统计死亡玩家的列表
list_rand=spyword.popitem()
#给三个列表赋值
for i in range(0,num):
word.append('a')
cnt.append(0)
dead.append(num+2)
#给玩家词语 其中print是调试用的,sanmeVote是出现相同票数的标志,spyWin是卧底胜利的判决条件
for i in range(0,num):
if (i==spy):
word[i]=str(list_rand[1])
word[i]=str(list_rand[0])
print (word[i])
sameVote=0
for x in range(0,num-1):
for k in range(0,num):
if ((k not in dead) & (sameVote==0)):
print ('%d号玩家发言时间'%(k+1))
print ('发言环节结束')
#将各位玩家的票数置0
for j in range(0,num):
if (j not in dead):
for j in range(0,num):
if (j not in dead):
vote2p=int(input('请%d号玩家投票'%(j+1)))-1
cnt[vote2p]=cnt[vote2p]+1
sameVote=0
for y in range(0,num):
if((cnt[y]==max(cnt)) & (y!=cnt.index(max(cnt)))):
print ('不止一位玩家得到最高票数,请这些玩家重新发言')
sameVote=1
if (sameVote==0):
dead[x]=cnt.index(max(cnt))
if (dead[x]==spy):
print ('卧底得到最多票数,游戏结束')
print ('%d号玩家被冤死!'%(dead[x]+1))
if(spyWin==0):
print ('只剩两名玩家,卧底胜利!')有一行代码是from spyword import spyword这里spyword是我自己定义的卧底词字典,运行时把这个文件放在python的工作目录下,就可以让python程序调用该字典了。要查看python工作目录,你需要运行python后输入
&&& import os
&&& os.getcwd()
当然你也可以更改python工作目录。
python是一门简洁高效,通俗易懂的高阶动态编程语言;很多人也称之为“胶水语言”,在接到大项目时往往用python写好主体框架,然后在一些特定模块再用java/js/C++之类的语言实现特定需求。掌握python并不难,通过这篇博客讲到的三个小游戏,希望您能发现python的乐趣,快速找到python编程的窍门。
本文已收录于以下专栏:
相关文章推荐
在这篇博客里,我们为游戏添加最后一个功能:GameOver画面的绘制。
  在当我方飞机的三条命全部挂掉之后,程序会进入结束程序,我们的设计时当程序结束时显示用户的目前得分以及历史最高分,仅此而已。...
最近开始学习Python语言,发现Python有一个神奇的Pygame模块,在编写小游戏时显得非常方便,于是参照教学视频编写了一个微信打飞机的小游戏,网上有很多相关的博客,但都不是很详细,大都是直接贴...
青蛙跳小游戏是一个看似简单的智力游戏,游戏任务是让左右两边的青蛙互换位置。鼠标点击青蛙,它会跳到离它最近的一块空置的石头上。下图是游戏界面:
        我在4399上也找到了这个小游戏,链接...
一、原题[原题链接]
武林中某知名杀手在一次任务中失败,然后逃窜到了人群中,当时那个社会并没有我们现在这么发达,满地都是文盲,而这些文盲甚至连一句完整的英文都说不出来,所以其实只要用心去发现,就会很...
高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的:
:qx     开始记录宏,并将结果存入寄存器x
q     退出记录模式
@x   &#1...
Emacs和Vim都是程序员专用编辑器,Emacs被称为神的编辑器,Vim则是编辑器之神。至于两者到底哪个更好用,网络上两大派系至今还争论不休。不过,相比之下,Emacs更加复杂,已经不能算是一个编辑...
在上一篇博文中,博主通过三个游戏程序讲述了python入门知识点击打开链接,现在再讲讲如何利用网页爬虫来写一个天气预报采集器,主要就是在中国天气网上爬取网页并过滤数据,得到需要的天气信息并打印出来。
...
他的最新文章
讲师:AI100
讲师:谢梁
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)HOT GAME 热门游戏 《大战国》 《军师天下》 《我叫MT》 《酒神·阴阳冕》
ABOUT LEGU 发展历程 在自身擅长的领域,不断的深耕细作
我们深信,变是常态,不变是非常态 历经多年发展,乐谷游戏始终坚持创造优质的网络互动娱乐产业品牌为愿景,倾心打 造拥有自主知识产权的高质量全新形态网络游戏为理想,通过多次主动革新,使企业跃上新的发展平台。
ABOUT LEGU 关于乐谷 我们专业、专注、专心
▲ 乐谷在线,团队成立于2008年,是华中地区一家知名的游戏旗舰企业,有多年游戏研发和运营经验。公司专注多平台一体化游戏产品研发,游戏产品涵盖ios、android、h5等多种平台。我们致力于创造优质的网络互动娱乐产业品牌,倾心打造拥有自主知识产权的高质量全新形态网络游戏精品。
乐谷游戏拥有多个专业专注的游戏行业精英团队,团队成员大多来源于国内知名的游戏企业和互联网企业,平均有着六年以上的游戏行业从业经验,平均年龄26岁。同时,团队坐拥武汉丰富的人才资源渠道,目前已形成工作上磨合成熟、专业专注,氛围上轻松自由、简单和谐的团队氛围。
ABOUT LEGU 乐谷文化 快乐游戏 快乐生活
快乐创造价值
执行引领先机
分享促进进步
专业才能卓越
LEGU NEWS 乐谷动态 保持活力,保证心态,努力奋斗,创造不凡
陶冶情操,亲近自然,乐谷团队云雾山拓展之旅启程。培养团队凝聚力,体现乐谷人不畏艰难、勇于奉献的团队精神,促进乐谷人之间的相互交流沟通能力。
乐谷游戏联合启道商学院,举办了为期二个月的精英培训班,发现自我,提升自我。学习,提升,沉淀。乐谷人在成长的道路上不断前进!
乐谷游戏每月一期的员工生日会又开始了,七月份过生日的小伙伴们,祝你们生日快乐,愿你们永远开心健康!}

我要回帖

更多关于 谁是卧底游戏在线玩 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信