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