我们知道,每一种游戏都有3个部分(因为游戏是程序的一个子组): 输入流程输出 。如果你想用C++做一个游戏 控制台环境 (编写C源代码,然后在控制台上执行)很简单,你所要做的就是使用大量的scanf(或非规范化的Getch函数)函数和程序复杂的算法,然后是带有ASCII艺术的print tf(带有闪烁清除函数)函数!然而,当你厌倦了制作过时的、没有图形的、不连续的游戏时,现在是时候学习基于图形用户界面的游戏制作工具了。您可以直接进入Unity 游戏引擎 或是虚幻游戏引擎。然而,要克服的障碍太多了。用于3D碰撞的四元数,机械/传统动画兼容性,更大的内存/更快的CPU用于在高图形模式下进行模拟,等等!因此,游戏机环境和游戏引擎之间存在着两难境地。这种进退两难的局面能解决吗?

../../../../_images/introduction-PuyoPuyo.png
 1import sys, pygame
 2pygame.init()
 3
 4size = width, height = 220, 140
 5speed = [2, 2]
 6black = 0, 0, 0
 7
 8screen = pygame.display.set_mode(size)
 9
10ball = pygame.image.load("introduction-PuyoPuyo.png")
11ballrect = ball.get_rect()
12
13while True:
14    for event in pygame.event.get():
15        if event.type == pygame.QUIT: sys.exit()
16
17    ballrect = ballrect.move(speed)
18    if ballrect.left < 0 or ballrect.right > width:
19        speed[0] = -speed[0]
20    if ballrect.top < 0 or ballrect.bottom > height:
21        speed[1] = -speed[1]
22
23    screen.fill(black)
24    screen.blit(ball, ballrect)
25    pygame.display.flip()

(C游戏机游戏示例-PuyoPuyo)

../../../../_images/introduction-TPS.png
 1import sys, pygame
 2pygame.init()
 3
 4size = width, height = 220, 140
 5speed = [2, 2]
 6black = 0, 0, 0
 7
 8screen = pygame.display.set_mode(size)
 9
10ball = pygame.image.load("introduction-TPS.png")
11ballrect = ball.get_rect()
12
13while True:
14    for event in pygame.event.get():
15        if event.type == pygame.QUIT: sys.exit()
16
17    ballrect = ballrect.move(speed)
18    if ballrect.left < 0 or ballrect.right > width:
19        speed[0] = -speed[0]
20    if ballrect.top < 0 or ballrect.bottom > height:
21        speed[1] = -speed[1]
22
23    screen.fill(black)
24    screen.blit(ball, ballrect)
25    pygame.display.flip()

(统一引擎游戏示例-TPS)

是。PYGAME可以解决这个问题。PYGAME是 ** Python ** 这使您能够做出一个 game 。PYGAME拥有控制台环境的优势。例如,单个pyGame项目几乎等同于单个源代码,因此我们只能专注于编写源代码。(在同一目录中有一些声音文件或一些图像文件)。因为PYGAME不是一个工具,而是一个库,所以单一的命令“IMPORT PYGAME”使得当前的源代码可以使用PYGAME的所有东西。也就是说,PYGAME很容易访问。PYGAME也有游戏引擎的优势。例如,PYGAME为用户提供了输入功能(检查键盘、鼠标甚至文件的每一种可能的状态)和输出功能(绘制几何图形、填充某些颜色或设置显示)。也就是说,如果程序是基于PYGAME的,用户就可以在图形用户界面环境下运行程序。因为PyGame是基于Python的,所以可以有选择地执行PyGame项目中的函数,甚至可以几乎同时执行。也就是说,PyGame是事件驱动的。

../../../../_images/introduction-Battleship.png
 1import sys, pygame
 2pygame.init()
 3
 4size = width, height = 220, 140
 5speed = [2, 2]
 6black = 0, 0, 0
 7
 8screen = pygame.display.set_mode(size)
 9
10ball = pygame.image.load("introduction-Battleship.png")
11ballrect = ball.get_rect()
12
13while True:
14    for event in pygame.event.get():
15        if event.type == pygame.QUIT: sys.exit()
16
17    ballrect = ballrect.move(speed)
18    if ballrect.left < 0 or ballrect.right > width:
19        speed[0] = -speed[0]
20    if ballrect.top < 0 or ballrect.bottom > height:
21        speed[1] = -speed[1]
22
23    screen.fill(black)
24    screen.blit(ball, ballrect)
25    pygame.display.flip()

(PYGAME-战舰的例子)

因此,PYGAME既有游戏机环境(低级游戏制作人的例子)的优点,也有游戏引擎(高级游戏制作人的例子)的优点。PYGAME很好 交集 从控制台环境到游戏引擎。这就足够使用PyGame了。没有必要掌握它(如果你的梦想是一个人开发高级游戏引擎,现在就开始学习那个游戏引擎!),但至少,尝试一下PyGame。(如果你对任何类型的独特程序感兴趣,包括游戏制作程序,或者如果你想在除控制台环境之外的高级环境中编写任何游戏)




Edit on GitHub