请问下图是游戏出自什么游戏

出自游戏《炎の孕ませおっぱい乳同级生》

人物:海老原 舞 (えびはら まい) 

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜頭里或许有别人想知道的答案

 这是一篇由教程团队成员发表嘚文章一个12岁的python开发人员。你可以在和上找到他

  你可曾想过如何创建视频游戏吗?它不像你想象的那么复杂!

  在本教程中您将创建一个简单的游戏叫做兔子和獾,在这里作为英雄的兔子要保卫城堡反击进攻的獾群:O

  写这个游戏,你将使用Python不,我指的并鈈是一条大蛇!:]

  Python是一种计算机编程语言我们就本教程选择Python,Python是一种易于上手、有趣而且很容易学的语言

  如果你刚接触Python,开始の前先检出这本书 - 这将使你提升速度。

  然后回到这里准备开始—— 有一场小兔子和獾之间的战争即将发生。继续阅读将加入战争吧!

  如果你想在Windows电脑上尝试本教程你需要安装Python,记住要安装2.7.3版本而不是3.3.0!运行完安装程序后在开始菜单程序文件夹中会有IDLE,运行IDL

  如果操作正确的话,你将会看到类似输出:

  注意:如果你想退出Python提示窗(三个尖括号提示:>>>)你可以通过在提示窗里输入exit()或按Ctrl+D。

  一旦你在Python提示窗了测试Python是否正常工作的话输入print 1+1,然后按回车或换行它将输出2。你已经写了你的第一个Python程序

  现在你知道Python工莋正常,为使用Python写游戏你需要安装PyGame

  PyGame是一个使写游戏变简单的Python库,它提供如图像处理、声音回放等你可以很容易添加都游戏中的功能

  到下载你系统适合的PyGame,确认你下载的是一个Python2.7版本

  注意:从上面链接下载的PyGame安装文件不能与Apple的Mac上默认安装的Python一起工作,为使用PyGame伱需要从python.org上下载安装Python或者你可以通过安装Python和PyGame。

  要检验PyGame安装是否正确的话打开IDLE或通过终端运行Python,在Python提示符处输入import pygames如果回车后没有輸出的话你安装成功了。

  如果另一方面,输出了下附类似错误PyGame没有正确安装。

  如果你遇到类似的错误在论坛上发出来我将幫助你让它正常。

  从文件运行Python代码

  虽然你可以在Python提示符下运行短的Python代码但如果你工作在一个大的程序(比如游戏)里,你可能想要將你的代码保存到一个文件这样你就不必一遍又一遍地键入它了。

  有几种方法可以运行Python程序文件一种方法是使用一个纯文本编辑器,不如记事本(Windows)或TextEdit(Mac)打开一个新的文本文件,输入你的Python代码(像print 1 + 1)然后保存它为asXXX.py(XXX可以是任何描述性的文件名称)。

  使用Windows的话通过双击这個文件来运行它。在Mac上打开终端,输入python然后拖动你保存的文件到终端窗口并按Enter。

  另一种方法是键入代码类到IDLE也就是你在这个教程中需要做的方式。运行IDLE - 只需在终端输入IDLE 然后选择文,然后选择File\New Window会出现一个你可以输入代码的文本编辑器窗口。你可以通过File\Save保存你更妀的代码通过运行Run\Run Module(F5)运行代码。

  请注意运行菜单只在你已有一个文件在编辑器窗口打开时有效

  你几乎已经可以开始创建你的游戲了。但没有一些震撼的图像和声音效果的游戏又算什么呢我已经收集了游戏所需要的所的图形和声音效果并把它们压缩成了一个ZIP存档,你可以在下载

  下载文件后,在你的硬盘上创建一个游戏使用的文件夹将resources文件夹解压到这个文件夹中,这样你的游戏文件夹有了洺为resources的子文件夹各种资源在resources文件夹里面分组显示如下:

  兔子和獾的游戏你已经准备就绪。:]

 第一步:(编写简单的)Hello Bunny(嘿兔子)

  运行IDLE开发环境,向上一节提到的那样打开一个新的文本编辑窗。在编辑窗键入以下代码:

  把它保存到你的游戏目录下(即资源孓目录)并命名为itgame.py

  让我们逐段分析以上代码:

  1. 导入PyGame库。这一步让你在你的程序中使用来自库中的函数

  2. 初始化PyGame并设置显示窗口。

  3. 加载你想要给bunny使用的图片

  4. 循环执行以下缩进的代码。

  5. 在绘图前将屏幕填充成黑色。

  6. 将之前加载进来的bunny图片以100*100嘚大小显示在屏幕上

  8. 检查任何新事件如果有的话,否则转到退出命令退出程序。

  注意:根据PyGame的文档你不需要调用pygame.quit()因为解析器关闭时会自动调用它。然而至少在Mac OS上,这个游戏会在退出时挂起除非pygame.quite被调用

  如果现在运行这段代码(在Idle菜单栏点击 “Run\Run Module"),你应该鈳以看到一个如下所示的屏幕:

  耶兔子就显示在屏幕上了,并准备做动作!

  但是只有一只兔子显示在一个黑漆漆的屏幕上这個游戏看起来很吓人且很孤单。接下来要做的就是稍微美化一下咯

  我们首先给游戏场景添加背景图片,可以通过调用一组screen.blit()来完成背景添加

  在代码的#3 小节,载入角色图像之后添加下面的代码:

  这些代码载入图片然后赋给指定的变量然后把它们画到屏幕上。泹如果你检查草地的图片你会发现它没有覆盖整个640 x 480的屏幕,所以你必须平铺使草地的图片完全覆盖屏幕

  在#6小节的开始(把兔子画在屏幕上之前),添加以下代码到game.py:

  正如你所见首先把x坐标通过for循环递增,在这个循环中再把y坐标循环递增并且将草地画在使用循环苼成的x、y坐标上。紧接着的一组代码只是将城堡画在屏幕上

  你现在运行这个程序,你会看到像如下的结果:

  从现在开始变得恏看点了! :]

 第三步:让兔子动起来

  下面你需要添加一些真正的游戏元素,比如让兔子响应键盘的按键

  要做到这一点,你需偠实现好一个方法记录哪一个键在某一时刻被按下你可以简单的使用一个数组保存在游戏需要使用的键的按下状态。

  添加如下代码箌game.py的#2小节结束(在你设了屏幕高和宽度之后):

  这段代码是非常明了数组keys按WASD的顺序记录它们的状态。数组的每个元素对应一个键第一個是W,第二个是A等等

  playerpos变量定义程序开始绘制游戏角色的起始位置。因为这个游戏将移动游戏角色到不同的位置设置一个储存角色位置的变量,然后便可以简单地将角色绘制到这个位置

  现在你需要修改现有的代码来绘制角色,使用新的playerpos变量将# 6的程序:

  接下來,基于哪些按键被按下更新键数组PyGame通过添加event.key事件使检测按键很容易实现。

  哇!这里有很多行代码如果你把它按If语句拆分也不是佷复杂的。

  首先你要检测一是否有键被按下或释放然后你需要检测哪个键被按下或者释放,如果被按下或者释放的键是你要使用的鍵根据键值更新相应的键变量。

  最后你需要更新playerpos变量作为键按下的响应,这太简单了

  将下附代码添加到game.py的末尾(使用相同嘚缩进级,使用和for循环相同的缩进级)

  这段代码只是检查哪个键被按下然后添加或减去游戏角色的x或y位置(取决于按下的键)来移动游戲角色。

  运行这个游戏你会得到根以前一样的角色。试一下按WASD键哈哈,起效了!

  是的你的兔子现在可以随着你的按键移动,但用鼠标来旋转兔子朝向到你选择的方向岂不更酷所以它不是所有时间都朝向一个方向。使用三角函数来实现这很简单。

  看一丅下面的图解:

  上图中如果(5,3)是兔子的位置(2,4)是当前鼠标的位置你可以通过对两点间距离的不同应用atan2三角函数获得旋转角度(z)。當然一旦你知道旋转角,你可以轻松相应地旋转兔子:]

  如果你对这部分有点困惑,不要担心你依然可以继续。但这就是你应该在數学课上用功的原因!:]在游戏编程时你会一直使用这个东西

  现在你需要将这个原理应用到你的游戏上,为做到这一点你可以使用PyGameSurface.rotate(喥数)函数, 顺便说一下记住,Z值是弧度:[

  atan2函数在Python的math库总,所有先在#1结尾处增加:

  然后将#6最后一行(player.blit这行)替换成下面的代码:

  让我们梳理一下上面代码的基本流程。首先获取鼠标和游戏角色的位置然后你对两个位置应用atan2函数,之后你将atan2返回的弧度转化荿度数(将弧度乘以近似57.29或360/2π)。

  因为兔子会旋转它的位置也将会改变。所以现在计算兔子的新位置并把它显示在屏幕

  再次运行這个游戏。如果你只按了“WASD”键那么这个游戏应该和之前完全一样,但如果你移动你的鼠标兔子也会随之旋转酷!

 第五步:射击吧,兔子!

  现在你的兔子已经可以自由活动了是时候给它添加更多的动作了。让兔子可以用剑射击敌人怎么样它可不是只温顺的兔斯基!

  这一步稍微有点复杂,因为你必须记录所有射出的剑更新它们的位置、旋转并且在它们飞出屏幕后删除它们。

  首先在初始化小节(#2小节)的结束添加必要的变量:

  第一个变量记录玩家的射击精度,第二个变量记录所有的剑精度变量acc实际上是一个包含射击數量和命中獾 次数的列表。最后我们可以使用这些信息来计算精度的百分比

  接下来,在section #3的末尾加载弓箭图像:

  现在当玩家点击鼠标弓箭就要射出。在section #8的末尾加入以下代码作为新的事件句柄(event handler):

  这些代码检查是否有鼠标点击如果有它会读取鼠标位置,并根据玩家的旋转和指针的位置计算出弓箭的旋转这个旋转储存在arrows数组里。

  接下来你需要真正在屏幕上画出弓箭了在section #6.1之后插入以下玳码:

  运用基本的三角函数可以计算出vely和velx。10是弓箭的速度if语句检查弓箭是否飞出边界,如果是则删除该弓箭第二个for语句循环过arrows数組并画出相应旋转的弓箭。

  试试运行程序你应该有一只兔兔在你点击鼠标时发射弓箭了。(?☉? ⊙?)

 第六步:拿起武器!獾!

  好的你有了一个城堡和可以移动和射击的英雄。但少了什么东西呢?攻击城堡的敌人!

  在这个步骤中你将创建几只随机生成并跑向城堡的獾。随着游戏的进展会有越来越多的獾所以,让我们做一个列表看看需要做那些工作

  1、把坏家伙们添加到一个数组列表;

  2、烸帧每帧的更新这个数组并检查他们是否都出现在屏幕上;

  3、显示这些坏家伙。

  很容易是吧:]

  首先把下面这段代码添加箌section #2后面:

  上面这段代码设置了一个计时器(以及其他一些值)以便每过一段时间在游戏中增加一只新的獾。你每帧每帧的减少 badtimer直到0 嘫后就生成一个新的獾。

  现在把下面这段代码添加到section #3后面:

  上面代码的第一行类似于前面所有的图片加载代码第二行代码设置叻一个图片副本以便于这个坏家伙能更容易动起来。

  下一步你必须更新并且显示这个坏家伙。把下面代码添加到section #6.2之后

  仔细的看下这段代码:] 第一行检查badtimer是否为0,以badtimer至今为止已经运行的次数为基础创建一个新的獾并再次设置badtimer。第一个for循环更新獾的X坐标并检查昰否在屏幕上。如果不再屏幕上就删除掉第二个佛如循环绘制所有獾。

  为了在上述代码中使用随机函数我们必须引入 random 库:

  最後,在 while 语句后面添加下面一行代码用来让 badtimer 值减1:

  再次运行游戏来测试上述代码现在你将看到真正的游戏,你可以发射、移动、转向而且獾也尝试跑向你。

  但等等为什么不是獾炸毁这座城堡吗?马上搞定!

  在#6.3小节中每一个循环前的 index += 1 之前添加如下代码:

  这段代码非常简单如果獾的x坐标值小于64,则删除这家伙然后随机递减5到20点的城堡的生命值(在后面你可以显示生命值到屏幕仩)

  现在你构建并运行程序,你将看到一堆獾攻击城堡后消失虽然你不能看到但獾确实降低了城堡的生命值。

 第七步:獾与箭的碰撞

  现在獾可以攻击你的城堡但你的箭却对它们没有任何效果!兔子该如何保护自己的家园

  是时候让箭可以杀死獾,你才可以保护你的城堡赢得游戏!首先你必须循环检查每个坏蛋,在检查时以需要循环检查所有的箭是不是和獾碰撞了如果箭碰到了獾则删除箭和獾,并且递增命中值

  在#6.3.1小节后添加如下代码:

  这段代码里有一个值得注意的地方,if语句后是PyGame内建的检查两个矩形是否相交嘚函数其他语句只是按上面解释运行。

  如果你现在运行程序你会发现已经可以射击并杀死獾了。

 第八步:添加生命值和时钟显礻

  游戏现在进展良好有攻击者和守卫者。现在你还需要一种方式显示分数看看这些兔子干得怎么样。

  最简单的方式是添加一個HUD(平视显示器)显示当前城堡的健康状况也可以添加一个时钟显示城堡被保护了多久。

  首先添加时钟在#7小节前添加如下代码:

  上面代码简单的使用PyGame默认字体创建字体并设置尺寸为24。然后使用字体渲染时间到表面上之后广西被定位并绘制到屏幕上。

  下┅步添加生命条在绘制生命条之前你需要载入它的背景图。添加如下代码到#3小节结束:

  第一个是红色图用来铺满生命条第二个绿銫图显示当前生命值。

  现在添加如下代码到#6.4节(你上一步添加的)之后来将生命条画到屏幕上:

  上面的代码首先画出全红色的生命条然后根据城堡的剩余的生命绘制绿色生命条。

  现在你构建并运行程序你可以看到时钟和生命条。

  这是什么如果你玩得足够久,即使你的命令值降到了0游戏还是继续!不仅仅如此,你也还可以继续射击獾这应该行不通的,但现在就是这样你需要添加某种赢/输形式的场景让这个游戏值得玩。

  所以我们现在添加输赢条件和各自的画面你可以退出主游戏循环并进入输赢界面的循环。在输赢循环中你可以检查用户是输了还是赢了,并显示相应的界面

  下面是一个判断输赢的基本方法:

  如果超过了时间(90000毫秒戓90秒):

  如果城堡被摧毁了:

  计算准确度的方法。

  注:使用acc[0]*1.0 只是将acc[0]转换成float浮点类型如果你不这么转换,则除法操作将返回一個整数值比如1或2而不是1.5

  将下面的代码加到game.py末尾:

  这是截至目前最长的代码块,但不是最复杂的

  第一个if语句检查是否到時间,第二个检查城堡是否被摧毁第三个计算你的准确率。之后一个快速的if语句检查你是胜利还是失败了,并显示正确的图像

  當然,如果你想显示胜利与失败的屏幕图像那么这些图像必须先被加载。将下面的代码添加到# 3结束的地方:

  另一点更改#4处:

  running變量跟踪游戏是否结束,exitcode变量跟踪玩家是赢了还是输了

  再次运行游戏,现在你可以尝试胜利或死亡!酷!:]

 第10步: 免费的音乐和声音效果!

  这个游戏看起来相当棒可是有声音吗?是不是太安静了点呢增加一点点音效会让整个游戏的感觉变得更棒。

  PyGame 加载并播放聲音的方法非常简单首先你需要初始化混音器,代码如下:

  然后加载要播放的声音并设置音量大小:

  最上代码中大多数是简單加载音频文件和配置的音频音量,但要注意pygame.mixer.music.load这一行——这一行加载游戏的背景音乐下一行设置背景音乐一直重复。

  注意音频配置:] 现在,你所需要做的就是按需要播放各种声音效果像下面每段注释代码那样做:

  多次运行游戏,你会发现你现在有碰撞的背景音樂和射击的声音效果游戏让人感觉更逼真了!:]

  你应该为自己感到自豪:你刚刚创建完成一个有趣的游戏,里面充满了音乐音效,一個杀手兔子神风特攻队獾和更多东西。我告诉你你可以做到!:]

  你可以在下载最终的游戏源代码

  这时,在游戏中随意拓展你的创慥力!也许可以试着换成与你自己的绘画风格或添加不同的武器或不同类型的怪物到游戏中!

  在完成这个教程中你有问题或评论吗? 如果囿,请加入我们论坛的讨论中! 我很期待你的来信

我要回帖

更多关于 下图是游戏 的文章

 

随机推荐