文章目录
- 安装和示例
- 移动物体
- 优化
安装和示例
顾名思义,PyGame就是用来做游戏的Python库,提供了许多游戏开发功能,如图像处理、音频播放、事件处理、碰撞检测等等。从这个角度来说,pygame不仅是一个游戏库,同时也是一个包含了各种功能的综合库。
安装直接用pip
pip isntall pygame
安装成功后,可运行一下示例游戏
python3 -m pygame.examples.aliens
效果如下
移动物体
一个基本的pygame程序,首先就要对pygame初始化,并且指定游戏屏幕的尺寸,示例如下
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 360))
这时候不出意外的话,就会弹出一个黑色的窗口。接下来,实现最简单的游戏控制,通过ijkl键控制红色圆球四向移动,代码如下所示
player = pygame.Vector2(320, 180)
while True:
if pygame.QUIT in [e.type for e in pygame.event.get()]:
break
screen.fill("purple")
pygame.draw.circle(screen, "red", player, 40)
keys = pygame.key.get_pressed()
if keys[pygame.K_j]:
player.y -= 0.2
if keys[pygame.K_k]:
player.y += 0.2
if keys[pygame.K_h]:
player.x -= 0.2
if keys[pygame.K_l]:
player.x += 0.2
pygame.display.flip()
pygame.quit()
其中,player即为游戏者的位置,而死循环中,pygame.draw.circle则根据游戏者的位置不断创建红色圆球。通过pygame.key.get_pressed,可以获取在一个循环之内捕获到的所有按键,这些案件共同组成一个布尔字典,如果某个按键被按下,那么相应的值就是True,否则为False。接下来,四个互相独立的判断不断地更改player的位置。最后,通过pygame.display.flip()将所有变化反馈给屏幕。
优化
如果不对小球的位置加以限制,那么只要鼠标不断向上,小球就会超出屏幕边界,杳然无踪。为此,需要对小球的位置加以限制,比如,当小球抵达上方的边界时,让其从下边重新出现,为此需要判断小球的位置。
接下来,只需做一点改动,就可以达到如下效果
代码如下
import pygame
def moveRange(x, L, R):
if x < L: return R
if x > R: return L
return x
pygame.init()
screen = pygame.display.set_mode((640, 360))
player = pygame.Vector2(320, 180)
while True:
if pygame.QUIT in [e.type for e in pygame.event.get()]:
break
screen.fill("purple")
pygame.draw.circle(screen, "red", player, 40)
keys = pygame.key.get_pressed()
if keys[pygame.K_j]:
player.y -= 0.2
if keys[pygame.K_k]:
player.y += 0.2
if keys[pygame.K_h]:
player.x -= 0.2
if keys[pygame.K_l]:
player.x += 0.2
player.x = moveRange(player.x, -40, 680)
player.y = moveRange(player.y, -40, 400)
pygame.display.flip()
pygame.quit()