当前位置: 首页 > 科技观察

如何将玩家

时间:2023-03-16 10:27:33 科技观察

添加到您的Python游戏中这是关于使用Python从头开始??构建游戏的系列文章的第三部分。在本系列的第一篇文章中,我解释了如何使用Python创建一个简单的基于文本的骰子游戏。在第二部分中,我向您展示了如何从头开始构建游戏,从创建游戏环境开始。但是每个游戏都需要一个玩家,每个玩家都需要一个可玩的角色,这就是我们将在本系列的第三部分接下来要做的事情。在Pygame中,玩家控制的图标或头像称为精灵。如果您现在没有任何可用于玩家精灵的图像,您可以使用Krita或Inkscape自己创建一些。如果您对自己的艺术技巧没有信心,也可以在OpenClipArt.org或OpenGameArt.org上搜索一些现成的图像。如果你没有像上一篇文章中提到的那样单独创建一个images文件夹,那么你需要在你的Python项目目录下创建它。将所有你想在游戏中使用的图片放入images文件夹。为了使您的游戏真正令人兴奋,您应该为您的英雄使用动画妖精图像。这意味着你需要绘制更多的材料,而且它们有很大的不同。最常见的动画是行走循环,它使您的妖精看起来像是在一系列图像中行走。步行循环的最快和最粗略的版本需要四张图像。注意:本文中的代码示例与静态和动态玩家精灵兼容。将你的玩家精灵命名为hero.png。如果您要创建动画妖精,则需要在名称后附加一个数字,从hero1.png开始。创建Python类在Python中,当您创建要在屏幕上显示的对象时,您就创建了一个类。在Python脚本的顶部附近,添加以下代码以创建播放器。在下面的代码示例中,前三行已经在您正在处理的Python脚本中:importpygameimportsysimportos#HereisthenewcodeclassPlayer(pygame.sprite.Sprite):'''Spawnaplayer'''def__init__(self):pygame.sprite.Sprite.__init__(self)self.images=[]img=pygame.image.load(os.path.join('images','hero.png')).convert()self.images.append(img)self.image=self.images[0]self.rect=self.image.get_rect()如果您的可玩角色有行走周期,将相应的图像保存在图像文件夹中为hero1.png到hero4.png单独的文件。使用循环告诉Python遍历每个文件。'''Object'''classPlayer(pygame.sprite.Sprite):'''Createaplayer'''def__init__(self):pygame.sprite.Sprite.__init__(self)self.images=[]fori在范围(1,5)内:img=pygame.image.load(os.path.join('images','hero'+str(i)+'.png')).convert()self.images.append(img)self.image=self.images[0]self.rect=self.image.get_rect()将玩家带入游戏世界现在您已经创建了一个Player类,您需要使用它在您的游戏中生成世界玩家地精。如果你不调用Player类,它永远不会工作,并且不会有玩家(在游戏世界中)。您可以通过立即运行游戏来验证这一点。游戏将如上一篇文章末尾所示运行,并产生明确的结果:一个空的游戏世界。为了将玩家精灵带入您的游戏世界,您必须通过调用Player类生成一个精灵并将其添加到Pygame的精灵组中。在下面的代码示例中,前三行是现有代码,您需要在其后添加代码:world=pygame.display.set_mode([worldx,worldy])backdrop=pygame.image.load(os.path.join('images','stage.png')).convert()backdropbox=screen.get_rect()#下面是新的代码player=Player()#生成播放器player.rect.x=0#移动x坐标播放器。rect.y=0#移动y坐标player_list=pygame.sprite.Group()player_list.add(player)尝试开始你的游戏看看发生了什么。高能警告:它不会像你预期的那样工作,当你开始你的项目时,玩家精灵没有出现。事实上它确实如此,但只有一毫秒。你如何修复只出现一毫秒的东西?您可能还记得上一篇文章,您需要向主循环添加一些内容。为了让播放器存在超过一毫秒,您需要告诉Python在每个循环中绘制它。将循环底部的语句更改为以下内容:world.blit(backdrop,backdropbox)player_list.draw(screen)#drawtheplayerpygame.display.flip()clock.tick(fps)现在开始你的游戏和你的播放器出现了!设置alpha通道根据您创建玩家精灵的方式,它周围可能会有一个色块。您看到的是alpha通道应占据的空间。它应该是一种不可见的“颜色”,但Python还不知道让它不可见。那么,您看到的是地精周围的边界区域(或现代游戏术语中的“命中框”)内的空间。您可以通过设置alpha通道和RGB值告诉Python使哪种颜色不可见。如果您不知道使用alpha通道的图像的RGB值,您可以使用Krita或Inkscape打开它并使用像#00ff00(几乎是“绿屏绿”)这样的独特颜色来填充图像周围的空白空间。记下颜色的相应十六进制值(此处为#00ff00,绿屏绿色)并将其用作Python脚本中的alpha通道。使用alpha通道需要在精灵生成代码中添加以下两行。像***这样的代码已经存在于你的脚本中,你只需要再添加两行:img=pygame.image.load(os.path.join('images','hero'+str(i)+'.png')).convert()img.convert_alpha()#优化alphaimg.set_colorkey(ALPHA)#设置alphaPython不知道使用哪种颜色作为alpha通道,除非你告诉它。在你代码的设置相关区域,添加一些颜色定义。在你设置的相关区域的任意位置添加如下变量定义:ALPHA=(0,255,0)在上面的示例代码中,使用了0,255,0,代表RGB中与#00ff00中的值相同的值用十六进制表示都是一样的。您可以通过GIMP、Krita或Inkscape等优秀的图形应用程序获得所有这些颜色值。或者,您可以使用良好的系统级颜色选择器(例如KColorChooser)来检测颜色。如果您的图形应用程序使用其他值渲染精灵背景,您可以根据需要调整ALPHA变量的值。***无论您设置多少alpha,它都将“不可见”。RGB颜色值是非常严格的,所以如果你需要设置alpha为000,但是你想在你的图像中使用000的黑色线条,你只需要将图像中的线条颜色设置为111即可。这样,(图像中的黑线)非常接近黑色,除了计算机外,没有人能分辨出差异。运行您的游戏以查看结果。在本系列的第四篇文章中,我将向您展示如何为您的妖精制作动画。多么激动人心!