树莓派pico教程,树莓派sd卡格式化教程

大多数人都玩过《太空侵略者》,对某些人来说,这是他们玩的第一款电脑游戏。

这种“太空侵略者”游戏模式需要相当多不同的编码技术才能完成。从历史上看,人们经常在需要学习新的编码语言时编写《太空入侵者》游戏。这通过练习相应语言的语法和特征为学习者提供了良好的练习。本教程分为两部分。

首先,构建一个基本的Invader 游戏,包括外星人、激光、防御基地和分数。本教程首次出现在The MagPi #74 中。单击此处免费下载该杂志的数字版本。第二部分(MagPi #75)添加了游戏的所有其他部分,使其成为20 世纪70 年代街机和体育馆中出现的游戏。开始在Raspberry Pi 上编写Space Invaders 如果您已阅读本系列的前几集,您已经知道如何设置基本的Pygame Zero 程序,并且可以立即开始编程。游戏的各种元素都需要一些图形。您可以自己设计图形或从GitHub 获取图形。 Pygame Zero 的默认屏幕尺寸是800 宽x 600 高,对于这个游戏来说这是一个很好的尺寸,所以不需要定义WIDTH 或HEIGHT。

从玩家开始:首先开始设计玩家的飞船。如果您想调用图形player.png,请通过在代码开头附近编写player=Actor(\”player\”, (400,550)) 来创建一个玩家actor。要实现比简单的黑色窗口更有趣的东西,请向draw() 函数添加背景。如果您先绘制它,则其他所有内容都会绘制在它上面。使用blit() 函数通过编写screen.blit(\’background\’, (0,0)) 来绘制。假设正在调用背景图像background.png。接下来,添加player.draw()来绘制玩家。

在玩家游戏中,玩家类需要响应按键操作,因此检查Pygame Zero 键盘对象以查看当前是否按下了特定按键。创建一个新函数来处理这些输入。要调用checkKeys() 函数,您必须从update() 函数中调用它。在checkKeys() 函数中,编写ifkeyboard.left: then ifplayer.x 40:player.x -=5。您必须在checkKeys() 函数中将玩家角色对象声明为全局对象。接下来,创建类似的代码来处理右箭头键。图1.py 显示了它们是如何组合在一起的。

外星人概念以任何格式创建批量外星人。将外星人排成3 行,每行6 个人。我们有一个名为Alien.png 的图像,并为列表中存储的每个外星人创建一个Actor,因此我们可以轻松地迭代列表并执行操作。创建外星人Actor 时,需要使用一些数学方法来设置初始X 和Y 坐标。建议定义一个函数initAliens() 来配置外星人。要设置其他元素,请定义一个可以调用所有setter 函数的函数init()。

设计算法要找到外星人并将其创建为演员,请声明一个列表- Aliens=[] – 并使用for range(18) 创建一个循环。 在此循环中,我们需要创建每个参与者并确定它们。 x 和y 坐标开始。要在循环中执行此操作,请编写: Aliens.append(Actor(\”alien1\”, (210 + (a%6) * 80,100 + (int (a/6) * 64))) )。这看起来可能有点困难,但你可以将其分解为“x 是210 除以6 乘以80”。这将为您提供从210 开始的x 坐标,每个坐标之间的间距为80。 y 的计算方式类似,使用普通除法使其成为整数,然后乘以64。

抛开《相信最奇怪的事物》标题的混乱不谈,让我向您介绍一下外星状态。正如上一篇文章中所解释的,可以向参与者添加数据,并且状态变量现在在创建外星人后添加到该外星人中。稍后我们将看到如何使用它。现在在屏幕上展示您的孩子并准备好采取行动。创建一个名为drawAlien() 的简单函数,并通过编写range(len(aliens)): Aliens[a].draw() 循环遍历外星人列表并绘制外星人。在draw()函数中调用drawAlien()函数。

外星人来了!创建一个函数并在update() 函数中调用它来跟踪外星人发生了什么。调用updateAliens()。由于我们不想每次更新周期运行时都移动外星人,因此我们保留一个名为moveCounter 的计数器,并在每次update () 时递增它。然后当计数器达到一定值时移动计数器(moveDelay)。归零。如果计数器为零,则调用updateAliens()。 updateAliens()函数计算它需要在x和y方向上移动多少才能在屏幕上来回移动并在到达边缘时向下移动。

外星人更新创建一个从0 到40 的计数器循环来确定外星人将移动的位置。 0 到9 移动外星人,10 向下移动,11 到29 向右移动。 30 号向下移动,31 号向左移动。查看figure2.py,了解如何使用updateAliens() 函数执行此操作以及它如何适合update() 函数。请注意如何使用Pygame Zero 函数animate() 来使其顺利运行。您可以在图像之间添加开关来移动脚。

所有基地都是我们的,现在我们必须建设防御基地。从角色构建基地时需要克服一些问题,例如仍然无法剪辑显示的角色。剪裁是一个术语,用于描述仅显示图像的一部分。如果你打算在受到外星激光袭击时缩小你的基地,那么此时你需要一种方法。我们现在要做的就是为角色添加一个函数,就像我们之前添加变量一样。

建造要塞创建三个要塞,每个要塞由三个角色组成。如果要显示整个图像(base1.png),请创建基本字符列表并使用代码(例如bases[0].draw())来显示每个字符。要向底座添加变量以显示所需的高度,我们还需要创建一个新函数,根据高度变量绘制底座。请参阅图3.py 以了解如何创建新函数并将其附加到每个字符。这意味着您可以使用bases[b].drawClipped() 从每个基本字符调用此函数,如drawBases() 函数所示。

我现在可以开始拍摄吗?添加一些激光使其成为射击游戏。你需要从玩家的飞船和外星人发射激光,并将它们全部保存在同一个列表中。当您创建一个角色并将其添加到列表lasers[]以创建一个新的激光时,您可以为该角色指定一个类型。在本例中,创建了0 型外星人激光和1 型玩家激光。我们还需要添加状态变量。激光像任何其他元素一样被创建和更新。图4.py(背面)显示了可用的功能。

激光器的工作原理如图4.py所示。您可以通过向checkKeys() 函数添加空格键检查来从播放器创建激光。使用名为Laser2.png 的蓝色激光图像。当新的激光添加到激光列表中时,当在draw()函数中调用drawLasers()函数时,它将被绘制在屏幕上。 updateLasers() 函数允许您迭代激光器列表并检查它们的类型。所以如果你是类型1(玩家),你可以在屏幕上移动激光,看看是否有效果。请注意,listCleanup() 函数是在底部调用的。稍后会详细介绍这一点。

我们先看一下碰撞过程中的checkPlayerLaserHit()。 要检测激光是否击中外星人,请循环遍历外星人列表并使用actor 函数- Collision Point ((lasers[l].x, Lasers[l].y)) – 确定是否发生碰撞。做过。 如果外星人受到攻击,这就是状态变量发挥作用的地方。 您不仅需要从列表中删除激光器和外星人,还需要将它们标记为准备删除。 原因是,如果在迭代列表时从列表中删除某些内容,则当到达列表末尾时,您将耗尽元素,并且会收到错误。 因此,应该将这些Actor设置为已删除状态并使用listCleanup()将其删除。

清理混乱listCleanup() 函数创建一个新的空列表,运行传递给它的列表,并仅将状态为0 的项目传输到新列表。返回这个新列表并用作继续的列表。由于该系统是为一种类型的激光器创建的,因此也可以轻松实现外来激光器类型。外星人激光的创建方式与玩家激光相同,但如果randint(0,5)==0: 更新外星人时,它们可以随机生成,而不是等待按下键盘。将类型设置为0 而不是1,并在updateLasers() 函数中将其移动到屏幕底部。

攻击基地到目前为止,还没有证实当激光击中其中一个防御基地时会发生什么。由于正在更改的是基本字符的高度,因此内置碰撞检测不会给出所需的结果,因此您需要创建另一个自定义函数来检查基本字符上的激光碰撞。新函数collideLaser() 检查基础高度和激光坐标,并将其与基础高度进行比较。接下来,在创建过程中将新函数附加到基本角色。新的collideLaser() 函数允许您检查玩家和外星激光,并在它们击中您时将其移除。对于外星激光,降低你击中的底座的高度。

激光控制您可能想要更改外星人发射的激光数量,但目前玩家的飞船每次update() 循环都会发射激光。如果按住空格键,激光将连续发射。这不仅对可怜的外星人有点不公平,而且还影响了游戏的速度。因此,应该对启动速度进行一些限制。您可以使用另一个内置的Pygame Zero 对象:时钟。如果将变量LaserActive 添加到玩家角色并在启动时将其设置为零,则可以在1 秒后通过调用Clock.schedule(makeLaserActive, 1.0) 来调用函数makeLaserActive()。

我被打了!我被打了!现在让我们了解一下当玩家的飞船被激光击中时会发生什么。为此,请创建多帧动画。制作5 个爆炸图像的列表,从普通的船舶图像开始,并将其粘贴到玩家角色上。您还需要导入Math模块,然后编写每个draw()循环:player.image=player.images[math.floor(player.status/6)]。当player.status为0时,这将显示正常的船舶图像。将其设置为1 可以在玩家的船只受到攻击时启动动画。在update() 函数中写入以下内容:if player.status 0:player.status +=1。随着状态值的增加,开始一个接一个地绘制一系列帧。

初始化在教程结束时必须进行一些初始化似乎有点奇怪,但我们一直在添加和更改游戏元素的结构。这使您可以在添加和更改游戏元素的结构之前实际查看需要设置的所有数据。比赛开始。步骤04 创建一个名为init() 的函数,需要调用该函数来启动游戏。您还可以使用此功能重置所有内容并重新开始游戏。在包含我们讨论的所有初始化函数和变量之后,您最终应该得到类似于图5.py 的内容。

你可以马上做!完成第一部分需要一些收尾工作。 您可以在代码开头附近设置难度值,并将其用于各种元素以使游戏变得更加困难。如果外星人受到攻击,我们还需要在全局变量score上加上1000来添加分数,并在draw()函数中将其显示在屏幕的右上角。 当游戏结束时(玩家受到攻击或所有外星人都被摧毁),将显示相应的消息。 查看完整列表,了解各个部分如何组合在一起。完成这一切后,您就掌握了《太空入侵者》游戏的基础知识。 在本系列的下一部分中,我们将向游戏添加内容,包括关卡、生命、声音、奖励外星人、排行榜等等。

本节已完成。本游戏详细制作教程请参见MagPi杂志第75期。

本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/560094.html

(0)
上一篇 2024年5月25日
下一篇 2024年5月25日

相关推荐

  • 和平精英丧尸克星怎么获得?

    和平精英丧尸克星怎么获得? 和平精英上10颗星勋章的话,你要参加现实的丧尸活动,才可以获得这个勋章的 和平精英丧尸模式怎么下载? 其实是国际服,可以在浏览器的官网下载 和平精英怎么变成丧尸猎人? 你需要活到最后两个人才能变成和平精英里的丧尸,猎人 和平精英丧尸危机怎么玩? 和平精英丧尸危机是一种多人合作的生存射击游戏。玩家需要组队与其他玩家一起合作,击败一波…

    游戏快讯 1分钟前
  • 和平精英怎么刚枪? 和平精英怎么锁定城市刚枪?

    和平精英怎么刚枪? 和平精英刚枪的方法: 1.移动射击 2.掩体利用、左右探头 在掩体后重分利用左右探头的操作和第三人称的视野优势,可以借助于自己藏身的掩体或墙壁观察对手的走位。 3.提前枪。 和平精英怎么锁定城市刚枪? 点击左侧的模式选择区域。进入模式选择区域之后,在右下角战术选择的地方切换战术目标为“城区刚枪”。然后点击右下角确定即可。或者 步骤一,通过…

    游戏快讯 1小时前
  • 和平精英刚枪技巧口诀?

    和平精英刚枪技巧口诀? 你好,和平精英刚枪技巧口诀如下: 1. 瞄准稳定:在射击过程中,保持枪支的稳定是非常重要的。尽量减少手部的晃动,保持瞄准准心在目标上。 2. 控制后坐力:后坐力是影响枪支稳定的主要因素之一。通过适当的操作,尽量减少后坐力对瞄准的影响。 3. 弹道预判:了解不同枪械的子弹弹道特点,针对不同距离的目标进行预判,调整瞄准点。 4. 利用掩体…

    游戏快讯 2小时前
  • 和平精英怎么租号玩? 和平精英怎么用账号密码登其他号?

    和平精英怎么租号玩? 和平精英组号可以加入和平精英,做好群联系里面的管理员或群主,按每小时多少钱收费。 和平精英怎么用账号密码登其他号? 和平精英用账号密码登其他号的方法 1.想要登录别人的号,玩家只要获得别人的账号和密码,切换登录即可。 2.玩家进入游戏后找到右下方的齿轮状设置图标进入。 3.在页面的最下方可以找到退出登录按钮点击一下就可退出当前账号。 4…

    游戏快讯 4小时前
  • 和平精英怎么查看所有枪械皮肤?

    和平精英怎么查看所有枪械皮肤? 在商场武器里面找到枪就能看到全部皮肤 和平精英没有枪皮肤怎么办? 如果和平精英没有枪皮肤,可以通过不断的参加游戏和完成任务来获取金币和经验值,用它们来购买枪皮肤或者开箱子获得更多深受欢迎的枪皮肤。 此外,也可以参加游戏比赛或者活动,赢得排名奖励和赠品。总之,有许多方式可以获取更多的枪皮肤,即使刚开始没有也不必担心。在游戏中不断…

    游戏快讯 7小时前