如何利用python制作几个简单的游戏?(简单易上手版) 您所在的位置:网站首页 python做文字游戏 如何利用python制作几个简单的游戏?(简单易上手版)

如何利用python制作几个简单的游戏?(简单易上手版)

2023-03-19 10:14| 来源: 网络整理| 查看: 265

嗨害大家好鸭~我是小熊猫

好像有很多小伙伴对python制作游戏非常感兴趣~

那么我们今天就来从python游戏方面入手

利用python写“猜数字”,“猜词语”,“谁是卧底”

这三个游戏,

从而快速掌握python编程的入门知识,包括python语法/列表/元组/字典/流程控制/库函数等等。

那么我们直接开始——

有什么python相关报错解答自己不会的、或者源码资料/模块安装/女装大佬精通技巧 都可以来这里:(https://jq.qq.com/?_wv=1027&k=2Q3YTfym)或者+V:python10010问我

环境参数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学习交流裙:660193417### 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=1 while (num!=rand): if (num2.猜词语—>3.答对则正确数加1并回到2,要跳过或犯规了则直接回到2,超时了直接跳到3—>3.循环10次后或时间结束后统计答对的题数

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

代码量不大,如下所示:

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

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

代码量不大,如下所示:

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 (1102.玩家依次发言—>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 random from spyword import spyword num=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=0 spyWin=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后输入

importosos.getcwd()

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

python是一门简洁高效,通俗易懂的高阶动态编程语言;很多人也称之为“胶水语言”,

在接到大项目时往往用python写好主体框架,然后在一些特定模块再用java/js/C++之类的语言实现特定需求。

掌握python并不难,通过这篇博客讲到的三个小游戏,希望您能发现python的乐趣,快速找到python编程的窍门。

不知道上面的知识你了解多少呢?有不懂的欢迎来后台找我鸭~我是小熊猫,咱下篇文章再见啦



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有