本文的视频版本:西瓜视频B 站

猫姐提醒点击文章中的图片可以放大,看的更清楚哦!

# 0. 前言

hello,小伙伴们!我是带你们一起写游戏的猫姐。
今天我们接着做小朋友吃蘑菇的小游戏!
上一集我们实现了小方块的自由移动,但是自由的有点过头了,小方块会跑到窗口外面去,今天我们就来解决这个 bug,顺便把游戏窗口的背景也换成图片,做完后效果是这样的。
小方块显示

# 1. 方块的边界处理

如果我们不想让方块跑到窗口外面去,只需要控制方块能活动的范围!加几个 if 判断就完事了!我们可以这样做,在 Player 类的 move函数 中,当方块移到最左边时,x 坐标会小于 0,此时我们让方块 x 坐标等于 0;即当方块左顶点的 x 坐标 self.rect.left 小于 0 时,就让方块的 self.rect.left=0
同理,当方块跑到最右边时,x 坐标大于窗口的宽度,我们上面设置了窗口大小为 600,所以 x 最大值不能超过 600。即当方块右顶点的 x 坐标 self.rect.right>WIDTH 时,就让方块的 self.rect.right = WIDTH
我们运行程序,看下效果。
小方块显示
当方块移到最左边时,方块就不会再移动了;当方块移到最右边时,方块也不会再移动了。
同理,方块上下移动,也是一样的道理。

边界处理的代码如下:

def move(self):
    key_pressed = pygame.key.get_pressed()
    if key_pressed[K_UP]:
        self.rect.move_ip(0, -10)
    if key_pressed[K_DOWN]:
        self.rect.move_ip(0, 10)
    if key_pressed[K_LEFT]:
        self.rect.move_ip(-10, 0)
    if key_pressed[K_RIGHT]:
        self.rect.move_ip(10, 0)
    # 判断边界
    if self.rect.left < 0:
        self.rect.left = 0
    if self.rect.right > WIDTH:
        self.rect.right = WIDTH
    if self.rect.top < 0:
        self.rect.top = 0
    if self.rect.bottom > HEIGHT:
        self.rect.bottom = HEIGHT

最后把程序运行起来,看下效果,当我们按键盘的上下左右键时,小方块就不会再出边界了,这就实现了我们想要的效果啦!
小方块显示
游戏做了这么久,还是黑乎乎的背景,是不是很没成就感?我们用 2行 代码,就可以把背景换成想要的图片
image 文件夹中,看下图片背景, 宽为600 像素, 高为800 像素。回到 part1-game 文件中,
通过 pygame.image.load 函数 ("./image/bg.png") 来加载图片,括号里面传入的是图片的路径,然后再赋值给 bg_image。

bg_image = pygaem.image.load("./image/bg.png")

while 循环里面,需要把图片绘制出来。把 screen.fill 这条代码注释掉,换成 screen.blit 函数 (bg_image, (0, 0)),括号里面传入的是 bg_image,和图片显示的位置。

screen.blit(bg_image, (0, 0))

运行看下效果,怎么样,是不是瞬间就感觉 这游戏快做完了?下一集我们给游戏加上背景音乐后就更有感觉了!
小方块显示

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

猫姐 QQ群

QQ群

猫姐 微信号

微信号

猫姐 微信支付

微信支付