当前位置:首页 > 黑客技术 > 正文内容

怎么样可以 *** 游戏(用手机 *** 游戏流程)

访客3年前 (2022-03-23)黑客技术753

文档介绍

利用python写“猜数字”,“猜词语”,“谁是卧底”这三个游戏,从而快速掌握python编程的入门知识,包括python语法/列表/元组/字典/流程控制/库函数等等。

环境参数

linux平台,python3.4。需要在linux中把python3.4编译一下,这样编写python程序时保存为.py格式的文件并添加执行权限再终端运行即可(原理跟shell脚本相同),非常方便。

ps:贴出来的python程序代码在windows中也兼容,只不过运行方式不是命令行,而是要通过python软件。python软件可以上官网下载安装点击打开链接,在学习的时候,可以直接在python软件上面输入python语句即可打印结果,也就是说python无需编译即可运行,很多人也称之为“脚本”语言。

设计实现

猜数字

很多人在聚餐时都玩过猜数字游戏,由某人随机出一个指定范围内的数,然后其他人一个一个猜,猜的过程中区间不断缩小,直到猜中为止。

这里的猜数字游戏就是用程序来代替那个出数字的人,程序算法设计为:

1.输入数字区间--->2.系统产生区间内的随机数--->3.玩家输入自己猜的数字--->4.比较玩家猜的与答案的高低并提示--->5.未猜中则回到3,猜中则提示猜次数

代码很少,如下所示:

import random'''想要学习Python?Python学习交流群:973783996满足你的需求,资料都已经上传群文件,可以自行下载!'''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'))cnt=1while (num!=rand):    if (num<rand):        print('*_* Lower than the answer')    else:        print('T_T Higher than the answer')    num=int(input('###Guess the number###\n'))    cnt=cnt+1print('^_^ You get the answer with [%d] times'%cnt)

之一行是要让linux系统知道这是python3程序,random是产生随机数的库函数,要注意的是python对格式要求很严格,因为它不用通过{}而是通过缩进量判断流程。

通过这个可以掌握基本的语法和编写规则了,下面再试试有点难度的,用到词组和循环控制等知识。

猜词语

电视节目中的”你来比划我来猜“大家应该都看过,而且很多人也玩过,规则就是一个人看词语比划相应动作和说一些提示,另一个人看不到词语要通过比划的动作猜出来,猜的过程中主持人判断是否符合规则。

某一组玩家猜词语的算法设计为:

1.开始计时--->2.猜词语--->3.答对则正确数加1并回到2,要跳过或犯规了则直接回到2,超时了直接跳到3--->3.循环10次后或时间结束后统计答对的题数

有num组玩家就进行以上流程的num次循环,当然也要准备x组词语,因为每组玩家猜的词语是不同的。

代码量不大,如下所示:.

import timenum = int(input('有多少组玩家\n'))guessWord = []correct = []#定义列表,num+10是不想让guessWord下标不合法for i in range(0,num+10):    guessWord.append(0)    correct.append(0)wordNum=10guessWord[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 ('时间到!游戏结束')            break                 if (flag=='y'):            correct[i]=correct[i]+1            continue        else:            continue    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次。

编程思想定了就可以敲代码了,程序代码如下:

import randomfrom spyword import spywordnum=int(input('请输入玩家数(至少为3)\n'))#卧底玩家spy=random.randint(0,num-1)#随机产生词语 定义词语列表 计算玩家票数的列表 统计死亡玩家的列表list_rand=spyword.popitem()word=[]cnt=[]dead=[]#给三个列表赋值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])    else:        word[i]=str(list_rand[0])    print (word[i])sameVote=0spyWin=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):            cnt[j]=0    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 ('卧底得到最多票数,游戏结束')            spyWin=1            break        print ('%d号玩家被冤死!'%(dead[x]+1))#游戏结束if(spyWin==0):    print ('只剩两名玩家,卧底胜利!')

有一行代码是

from spyword import spyword

这里spyword是我自己定义的卧底词字典,运行时把这个文件放在python的工作目录下,就可以让python程序调用该字典了。要查看python工作目录,你需要运行python后输入

>>>importos>>>os.getcwd()

当然你也可以更改python工作目录。

python是一门简洁高效,通俗易懂的高阶动态编程语言;很多人也称之为“胶水语言”,在接到大项目时往往用python写好主体框架,然后在一些特定模块再用java/js/C++之类的语言实现特定需求。掌握python并不难,通过这篇博客讲到的三个小游戏,希望您能发现python的乐趣,快速找到python编程的窍门。

扫描二维码推送至手机访问。

版权声明:本文由黑客技术发布,如需转载请注明出处。

本文链接:https://w-123.com/58508.html

标签: 游戏

“怎么样可以 *** 游戏(用手机 *** 游戏流程)” 的相关文章

Microsoft Defender 导致 Windows 11 Build 22581 遇到视频播放问题

尽管未能赢得 AV-TEST 的最高防病毒(AV-Comparatives)等级评价,但 Microsoft Defender 仍是市面上最合适的产品之一。尴尬的是,在 Windows 11 Build 22581 编译版本中,许多人发现遇到了媒体播放问题。由 Reddit 网友的讨论可知,问题与系...

俄罗斯管道巨头 Transneft 遭攻击 79 GB数据泄露

俄乌冲突进入第 3 周,一些非常规行为者继续针对俄罗斯国家支持的企业发起攻击,进行一连串的黑客攻击和数据泄露。而由俄罗斯国家控制的石油管道巨头 Transneft 无疑成为了重点攻击对象。 本周四,泄密托管网站 Distributed Denial of Secrets 发布了一个 79GB 的电子...

CISA 与 FBI 在 Viasat 网络攻击后发出警告 美国卫星通讯亦面临安全威胁

因担心俄乌冲突引发的近期针对欧洲卫星网络发起的攻击可能很快蔓延到美国本土,政府机构已经向卫星通信网络运营商发出了“潜在威胁”预警。在美国网络安全与基础设施安全局(CISA)和联邦调查局(FBI)本周联合发布的一份公告中,其敦促卫星通讯(SATCOM)网络提供商和基础设施组织加强安全防御。若被入侵,或...

基于800个恶意 NPM 包的大规模供应链攻击

Hackernews 编译,转载请注明出处: 一个名为“RED-LILI”的攻击者发布了近800个恶意模块,与正在进行的针对 NPM 软件包库的大规模供应链攻击活动联系紧密。 以色列安全公司 Checkmarx 说: “通常,攻击者使用一个匿名的一次性 NPM 帐户发动攻击。”“这一次,攻击...

谷歌解释野外攻击为何增加 浏览器安全形势在稳中向好

上周,Chrome Security 团队的 Adrian Taylor,在一篇谷歌安全博客文章中解释了“为何在野外被利用的 CVE 漏洞似乎有所增加”。对于这种漏洞利用的可见性增长趋势,归咎于多个方面的因素。而谷歌旗下的 Project Zero 团队,也有对包括 WebKit、IE、Flash、...

开源模块维护者破坏代码,只为抗议乌克兰战争

Hackernews 编译,转载请注明出处: 一个广泛应用于 Windows、 Linux 和 Mac 环境的开源模块的维护者最近破坏了它的功能,以抗议乌克兰的战争,大众再次将注意力集中在与软件代码依赖相关的潜在的严重安全问题上。 Node-ipc 是一个用于进程间通信的 JavaScrip...

评论列表

美咩折木
2年前 (2022-07-10)

t[y]==max(cnt)) & (y!=cnt.index(max(cnt)))): print ('不止一位玩家得到最高票数,请这些玩家重新发言') sameVote=1 if (same

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。