📜  pygame简介

📅  最后修改于: 2022-05-13 01:55:40.476000             🧑  作者: Mango

pygame简介

游戏编程现在非常有价值,它也可以用于广告和教学工具。游戏开发包括数学、逻辑、物理、人工智能等等,它可以非常有趣。在Python中,游戏编程是在 pygame 中完成的,它是最好的模块之一。

安装 pygame:
Pygame 需要Python;如果您还没有它,您可以从Python.org 下载它。使用Python 3.6.1 或更高版本,因为它对新手更友好,而且运行速度更快。
安装 pygame 的最佳方法是使用 pip 工具( Python用来安装包)。请注意,这在最新版本中随Python一起提供。我们使用 –user 标志告诉它安装到主目录中,而不是全局安装。

python3 -m pip install -U pygame --user


要查看它是否有效,请运行包含的示例之一:

python3 -m pygame.examples.aliens


如果它有效,我们准备好了!
一旦你安装了 pygame,你就可以创建你的第一个 pygame 实例了。

Python3
# import the pygame module
import pygame
 
# import pygame.locals for easier
# access to key coordinates
from pygame.locals import *
 
# Define our square object and call super to
# give it all the properties and methods of pygame.sprite.Sprite
# Define the class for our square objects
class Square(pygame.sprite.Sprite):
    def __init__(self):
        super(Square, self).__init__()
         
        # Define the dimension of the surface
        # Here we are making squares of side 25px
        self.surf = pygame.Surface((25, 25))
         
        # Define the color of the surface using RGB color coding.
        self.surf.fill((0, 200, 255))
        self.rect = self.surf.get_rect()
 
# initialize pygame
pygame.init()
 
# Define the dimensions of screen object
screen = pygame.display.set_mode((800, 600))
 
# instantiate all square objects
square1 = Square()
square2 = Square()
square3 = Square()
square4 = Square()
 
# Variable to keep our game loop running
gameOn = True
 
# Our game loop
while gameOn:
    # for loop through the event queue
    for event in pygame.event.get():
         
        # Check for KEYDOWN event
        if event.type == KEYDOWN:
             
            # If the Backspace key has been pressed set
            # running to false to exit the main loop
            if event.key == K_BACKSPACE:
                gameOn = False
                 
        # Check for QUIT event
        elif event.type == QUIT:
            gameOn = False
 
    # Define where the squares will appear on the screen
    # Use blit to draw them on the screen surface
    screen.blit(square1.surf, (40, 40))
    screen.blit(square2.surf, (40, 530))
    screen.blit(square3.surf, (730, 40))
    screen.blit(square4.surf, (730, 530))
 
    # Update the display using flip
    pygame.display.flip()


Python3
class Square(pygame.sprite.Sprite):
 
    def __init__(self):
        super(Square, self).__init__()
        self.surf = pygame.Surface((25, 25))
        self.surf.fill((0, 200, 255))
        self.rect = self.surf.get_rect()


Python3
pygame.init()
 
screen = pygame.display.set_mode((800, 600))
 
square1 = Square()
square2 = Square()
square3 = Square()
square4 = Square()


Python3
while running:
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == K_BACKSPACE:
                running = False
        elif event.type == QUIT:
            running = False


Python3
screen.blit(square1.surf, (40, 40))
screen.blit(square2.surf, (40, 530))
screen.blit(square3.surf, (730, 40))
screen.blit(square4.surf, (730, 530))
 
pygame.display.flip()


上面的Python代码是一个简单的 pygame 脚本,用于绘制四个青色方块。

输出:

不用担心!在接下来的几篇文章中,我们将学习更多关于如何使对象移动、如何添加动画效果、按钮、音乐等等的知识,但现在让我们了解包含所有必要 pygame 元素的基本代码。

import pygame

from pygame.locals import *

在前几行中,我们导入了 pygame 和 pygame.locals,这是在Python中使用任何模块之前必须做的。

精灵、冲浪和矩形:

Sprite: Sprite 只是我们在屏幕上绘制的 2d 对象。我们可以通过扩展 sprite 类来使用它们。
冲浪:表面就像我们在上面画画的空白纸。我们的屏幕对象也是一个 Surface。他们也可以保存图像。
矩形我们在表面上定义的矩形区域。

Python3

class Square(pygame.sprite.Sprite):
 
    def __init__(self):
        super(Square, self).__init__()
        self.surf = pygame.Surface((25, 25))
        self.surf.fill((0, 200, 255))
        self.rect = self.surf.get_rect()

注意:我们使用的是 RGB 格式的颜色编码,我们可以通过给出 0-255 范围内的红色、蓝色和绿色颜色值来形成不同的颜色。 (0, 0, 0) 的元组是黑色,因为没有颜色,而 (255, 255, 255) 的元组是白色。
在我们的代码中,我们扩展了 sprite 类,以便我们可以使用surfsrects来绘制我们的正方形。我们制作了一个尺寸为 25x25px 的表面并填充了颜色:(0, 200, 255)

pygame.init() :

Python3

pygame.init()
 
screen = pygame.display.set_mode((800, 600))
 
square1 = Square()
square2 = Square()
square3 = Square()
square4 = Square()

上面的代码行使用命令 pygame.init() 初始化 pygame,这是使用 pygame 模块命令所必需的。之后,我们定义我们的屏幕对象及其以像素为单位的尺寸。然后在接下来的几行中,我们初始化我们的四个正方形。

游戏循环

Python3

while running:
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == K_BACKSPACE:
                running = False
        elif event.type == QUIT:
            running = False

游戏开发代码中最重要的部分是游戏循环。这个循环在后台持续运行,直到用户结束游戏或游戏结束。现在我们的游戏循环并不值得期待。它只跟踪两个基本事件。我们可以根据游戏状态、用户输入等等添加更多事件,但这里要记住的一点是游戏循环必须在某些条件之后结束,否则用户将永远卡在游戏循环中。

Blit and Flip –

Blit: Blit 关键字用于在另一个表面上绘制一个表面。简单来说,当我们绘制一个表面时,我们只是它粘贴到另一个表面上。
Flip:用于在绘制完所有内容后更新整个屏幕。请记住,翻转仅在绘制所有必要的表面后才起作用,否则,它不会更新任何内容。

Python3

screen.blit(square1.surf, (40, 40))
screen.blit(square2.surf, (40, 530))
screen.blit(square3.surf, (730, 40))
screen.blit(square4.surf, (730, 530))
 
pygame.display.flip()

在上面的代码行中,我们首先在屏幕上粘贴了四个方块,然后我们翻转使它们出现。