pygame图片精灵

转向图片精灵

彩色矩形很好 - 它们是一个好的开始,并确保你的游戏基本工作,但迟早你会想要为你的精灵使用一个很酷的宇宙飞船图像或角色。这引出了第一个问题:在哪里获得游戏资源。

获取图片资源

当你需要为你的游戏添加图片资源时,你有3个选择:

自己制作
找一位美工为你制作
使用互联网上已有的图片资源
在本课中,将使用图像“p1_jump.png”:
在这里插入图片描述

管理游戏资源

首先,需要一个文件夹img来保存游戏资源,然后将图像放入其中。

要在游戏中使用此图像,需要让Pygame加载图片文件,这意味着需要程序知道文件的位置。根据使用的计算机类型,这可能会有所不同,希望能够在任何计算机上运行程序,因此需要导入一个名为os的Python库。

 import pygame
 import random
 import os

 # set up asset folders
 game_folder = os.path.dirname(__file__)

特殊的Python变量__file__指的是当前代码文件所在的文件夹,函数os.path.dirname会获得该文件夹的路径。例如

/Users/chris/Documents/gamedev/tutorials/1-3 sprite example.py

如果使用的是Windows,路径可能如下所示:

C:\Users\chris\Documents\python\game.py

不同的操作系统使用不同的方式来描述计算机上的位置。通过使用os.path命令,可以让计算机找出正确的路径。

 import pygame
 import random
 import os

 # set up asset folders
 game_folder = os.path.dirname(__file__)
 img_folder = os.path.join(game_folder, 'img')
 player_img = pygame.image.load(os.path.join(img_folder, 'p1_jump.png')).convert()

现在已经加载了图像,pygame.image.load()并且已经确保使用convert(),这将通过将图像转换为在屏幕上绘制更快的格式来加速Pygame的绘制。现在准备用精美的玩家图片形象替换精灵中的普通绿色方块:

class Player(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = player_img
        self.rect = self.image.get_rect()
        self.rect.center = (WIDTH / 2, HEIGHT / 2)

请注意,已经删除了命令self.image.fill(GREEN)- 不再需要填充纯色。

现在,如果你运行该程序,你应该看到一个漂亮的小卡通外星人在屏幕上运行。但是遇到了一个问题:
目前无法看到,因为背景目前是黑色的。
用screen.fill(BLUE)将背景改为蓝色。现在可以看到问题:
在这里插入图片描述
当您在计算机上有图像文件时,该文件始终是矩形像素网格。无论你绘制什么样的形状,仍然会有像素边框填充图像的“背景”。需要做的是告诉Pygame忽略不关心的图像中的像素。在此图像中,这些像素恰好是黑色,因此可以添加以下内容:

class Player(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = player_img
    self.image.set_colorkey(BLACK)
        self.rect = self.image.get_rect()
        self.rect.center = (WIDTH / 2, HEIGHT / 2)

set_colorkey()只是告诉Pygame,当绘制图像时,要忽略指定颜色的任何像素。现在图像看起来好多了:
在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值