如何创建一个空的Pygame窗口?


Pygame

Pygame是一个用于开发游戏和多媒体应用程序的Python库。它提供处理用户输入、图形、声音和其他多媒体相关任务的功能。

Pygame构建在SDL (Simple DirectMedia Layer)库之上,提供对音频、键盘、鼠标、操纵杆和图形硬件的低级访问。Pygame为SDL提供了一个高级接口,使Python开发人员更容易使用。

使用Pygame,开发人员可以创建2D游戏、街机风格的游戏、教育游戏、模拟和其他多媒体应用程序。Pygame提供了一套用于处理图形、音频、输入和其他游戏相关任务的模块。它还包括用于处理图像和声音文件以及构建游戏菜单和界面的工具。

Pygame是开源的,并在LGPL (Lesser General Public License)或GPL (General Public License)下提供。可以使用pip(Python包管理器)安装它,也可以直接从Pygame网站下载。

安装Pygame

要安装Pygame,您可以按照以下步骤操作:

  • 步骤1 - 确保您的系统上已安装Python。Pygame适用于Python 3.5及更高版本。您可以从官方网站下载Python(https://www.pythonlang.cn/downloads/)。

  • 步骤1 - 打开终端/命令提示符窗口。

  • 步骤2 - 使用pip安装Pygame,输入以下命令并按Enter键:

pip install pygame
  • 步骤3 - 等待安装完成。根据您的网络速度,这可能需要几分钟。

  • 步骤4 - 在代码中导入pygame进行测试。如果您没有看到任何错误消息,则表示Pygame已成功安装在您的系统上。

注意 - 根据您的操作系统,您可能需要安装其他库或软件包才能使Pygame正常工作。有关系统特定要求的更多信息,请查看Pygame文档。

Pygame窗口

语法

用户可以按照以下语法创建一个空的Pygame窗口。

import pygame
pygame.init()
size = (800, 600)  # Width, Height
screen = pygame.display.set_mode(size)
pygame.display.set_caption("My Pygame Window")

要创建一个空的Pygame窗口,您可以按照以下步骤操作:

  • 导入pygame后,通过调用pygame.init()函数对其进行初始化。此函数初始化所有Pygame模块,应在任何其他Pygame函数之前调用。

  • 通过创建一个包含宽度和高度(以像素为单位)的元组来设置窗口的大小。

  • 通过调用pygame.display.set_mode()函数创建Pygame窗口,并将大小元组作为参数传入。此函数将创建一个具有指定大小的新Pygame窗口。

  • 通过调用pygame.display.set_caption()函数设置窗口的标题。此函数将窗口的标题设置为指定的字符串。

  • 游戏循环:最后,您需要设置一个游戏循环来保持窗口打开。

  • 游戏循环应包含以下代码。此循环无限运行,直到用户单击关闭按钮或按Alt+F4关闭窗口。

运行此代码后,您应该会看到一个标题为“我的Pygame窗口”的空Pygame窗口。

示例1

此程序创建一个Pygame窗口,并包含一个主游戏循环,该循环使用Pygame的内置绘图函数处理事件、绘制圆形、矩形和线条,并更新窗口。您可以修改pygame.draw.circle()、pygame.draw.rect()pygame.draw.line()函数的参数来更改形状的位置、大小、颜色和粗细。

import pygame
pygame.init()

window_size = (800, 600)
window = pygame.display.set_mode(window_size)
pygame.display.set_caption("My Pygame Window")

running = True
while running:
   # Handle events
   for event in pygame.event.get():
      if event.type == pygame.QUIT:
         running = False
    
   # Draw shapes
   window.fill((255, 255, 255))
   pygame.draw.circle(window, (255, 0, 0), (150, 200), 50)
   pygame.draw.rect(window, (0, 200, 0), (100, 300, 300, 200))
   pygame.draw.line(window, (0, 0, 100), (100, 100), (700, 500), 5)
    
   pygame.display.flip()
pygame.quit()

输出

示例2

此程序创建一个Pygame窗口,并添加一个按钮,该按钮具有白色矩形形状、黑色文本标签和悬停效果,当鼠标光标位于按钮区域上方时,会更改按钮颜色。该程序还处理鼠标事件,以检测何时单击按钮并将消息打印到控制台。您可以修改button_rect、button_fontbutton_text对象的属性来更改按钮的位置、大小、颜色、字体和标签。此外,它还显示一个时钟,显示自程序启动以来经过的秒数。

该程序还使用Pygame的Clock对象将帧速率限制为60 FPS。您可以通过更改clock_fontclock_text_rect对象的属性来修改时钟文本的字体大小、颜色和位置。

import pygame
pygame.init()

window_size = (800, 600)
window = pygame.display.set_mode(window_size)
pygame.display.set_caption("My Pygame Window")

# Define button properties
button_color = (255, 255, 255)
button_hover_color = (200, 200, 200)
button_rect = pygame.Rect(300, 250, 200, 100)
button_font = pygame.font.SysFont(None, 36)
button_text = button_font.render("Click me!", True, (0, 0, 0))
button_text_rect = button_text.get_rect(center=button_rect.center)

# Initialize Pygame clock
clock = pygame.time.Clock()

running = True
while running:
   # Limit the frame rate to 60 FPS
   clock.tick(60)
    
   # Handle events
   for event in pygame.event.get():
      if event.type == pygame.QUIT:
         running = False
        
      # Handle mouse events
      if event.type == pygame.MOUSEBUTTONDOWN:
         mouse_pos = pygame.mouse.get_pos()
         if button_rect.collidepoint(mouse_pos):
            print("Button clicked!")
        
      if event.type == pygame.MOUSEMOTION:
         mouse_pos = pygame.mouse.get_pos()
         if button_rect.collidepoint(mouse_pos):
            button_color = button_hover_color
         else:
            button_color = (255, 255, 255)
    
   # Draw button and clock
   window.fill((128, 128, 128))
   pygame.draw.rect(window, button_color, button_rect)
   window.blit(button_text, button_text_rect)
   current_time = pygame.time.get_ticks()
   clock_text = button_font.render(f"Time: {current_time/1000:.2f} s", True, (255, 255, 255))
   clock_text_rect = clock_text.get_rect(topright=(780, 10))
   window.blit(clock_text, clock_text_rect)
    
   pygame.display.flip()
pygame.quit()

输出

结论

在本教程中,我们学习了Pygame,如何安装Pygame以及如何使用代码创建空的Pygame窗口。我们在示例2中学习了如何绘制形状,

还在示例3中学习了如何添加按钮和时钟。

更新于:2023年5月11日

6000+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告