申明:原创不易,未经许可,不得转载
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))
运行看下成果,怎么样,是不是霎时就感觉这游戏快做完了?下一集咱们给游戏加上背景音乐后就更有感觉了!