pygame游戏 如何使游戏全屏运行

云计算&大数据
WEB开发设计
如何安装pygame并创建一个用于在Python中开发游戏的模板3
库是用于Python编程语言的开源模块,专门用于帮助您制作游戏和其他多媒体应用程序。 建立在高度可移植的 (Simple DirectMedia Layer)开发库之上,pygame可以跨越许多平台和操作系统运行。
通过使用pygame模块,您可以控制游戏的逻辑和图形,而不用担心使用视频和音频所需的后端复杂性。
本教程将首先将pygame安装到您的Python编程环境中,然后引导您创建一个使用pygame和Python 3开发游戏的模板。
为了能够使用本教程,请确保您的或已经安装了Python 3和编程环境。
您还应该熟悉以下Python编程概念:
随着编程环境的设置和熟悉你可以开始使用pygame了。
安装pygame
我们先来激活我们的Python 3编程环境: . my_env/bin/activate
有了这个激活,你可以安装pygame与pip: pip install pygame
运行此命令后,您应该看到类似于以下内容的输出: OutputCollecting pygame
Using cached pygame-1.9.3-cp35-cp35m-manylinux1_x86_64.whl
Installing collected packages: pygame
Successfully installed pygame-1.9.3
如果您已经将pygame安装到具有视频和音频的系统中,您可以通过运行以下命令来验证您的安装,该命令将运行一个模拟游戏,展示pygame可以对图形和声音进行处理: python -m pygame.examples.aliens
如果您不想打开示例,或者如果您没有AV作为设置的一部分,还可以进入Python交互式控制台,以确保您可以导入pygame模块。 首先,键入python命令来启动控制台: python
然后在控制台中可以导入模块: import pygame
如果按照命令按ENTER键后没有收到错误,您将知道pygame已成功安装。 您可以使用quit()命令退出Python交互式控制台。
如果您在命令行中安装有问题,可以查看pygame的 。
在后面的步骤中,我们将假设使用监视器显示图形用户界面,作为本教程的一部分,以验证我们的代码。
导入pygame
要熟悉pygame,让我们创建一个名为our_game.py的文件,我们可以使用nano文本编辑器创建,例如: nano our_game.py
当在pygame中开始一个项目时,您将从import 的import语句开始,您可以在文件的顶部添加它:
our_game.py import pygame
我们还可以选择在第一行下方添加另一个import语句,以将pygame的一些常量和函数添加到文件的空间中:
our_game.py import pygame
from pygame.locals import *
将pygame导入到我们的程序文件中,我们可以使用它来创建一个游戏模板。
初始化pygame
从这里,我们将使用init()函数init() pygame的功能,这是“initialize”的缩写。
our_game.py import pygame
from pygame.locals import *
pygame.init()
init()函数将自动启动所有需要初始化的pygame模块。
您还可以单独初始化每个pygame的模块,如: pygame.font.init()
如果你想要的话, init()函数将返回一个 。 这个元组将显示成功和不成功的初始化。 我们可以为一般的init()调用和特定模块的初始化(这将显示这些模块是否可用)来做到这一点: i = pygame.init()
f = pygame.font.init()
如果我们运行上面的代码,我们将收到类似于以下内容的输出: Output(6, 0)
在这种情况下, i 返回元组(6, 0) 6,0 (6, 0) ,这表明有6个成功的pygame初始化和0个失败。
f变量返回None ,表示该模块在此特定环境中不可用。
设置显示表面
从这里,我们需要设置我们的游戏显示面。 我们将使用pygame.display.set_mode()来初始化一个窗口或屏幕进行显示,并将其传递给一个变量。 在函数中,我们将传递一个参数,用于显示分辨率,它是一个代表元组中宽度和高度的数字。 我们将这个函数添加到我们的程序中:
our_game.py import pygame
from pygame.locals import *
pygame.init()
game_display = pygame.display.set_mode((800, 600))
我们将元组(800, 600)作为参数传递给set_mode()函数,代表宽度(800像素)和高度(600像素)的分辨率。 请注意,元组包含在函数的括号中,因此上面的函数中有双括号。
您可能会经常使用进行游戏的分辨率,因此您可能需要将这些数字分配给变量,而不是一次又一次地使用数字。 当您需要修改程序时,这可以使您更容易,因为您只需要修改传递给变量的内容即可。
我们将使用变量display_width作为游戏显示的宽度,并使用display_height作为高度,并将这些变量传递给set_mode()函数:
our_game.py import pygame
from pygame.locals import *
pygame.init()
display_width = 800
display_height = 600
game_display = pygame.display.set_mode((display_width, display_height))
在这一点上,游戏显示表面的宽度和高度设置了分辨率。
接下来,我们需要使用两个可用函数之一来更新游戏界面的显示。
动画通常随着时间的推移不同帧之间的变化。 在考虑动画时,您可能会想到一本 ,因为它们包含一系列从一页到下一页逐渐变化的图像。 当页面的内容似乎运动时,这些页面可以快速翻转时给出运动的模拟。 在电脑游戏中,使用框架而不是页面。
由于翻转页面或框架的概念,可用于更新游戏表面显示的功能之一称为flip() ,并且可以像我们这样在我们的文件中调用: pygame.display.flip()
flip()函数将整个显示面更新到屏幕。
更频繁地,使用update()函数而不是flip()函数,因为它将仅更新屏幕的部分,而不是整个区域,从而节省内存。
我们将update()函数添加到our_game.py文件的底部:
our_game.py import pygame
from pygame.locals import *
pygame.init()
display_width = 800
display_height = 600
game_display = pygame.display.set_mode((display_width, display_height))
pygame.display.update()
此时,您可以运行程序没有任何错误,但显示面只会打开并快速关闭。
创建游戏循环
随着pygame导入和初始化,显示集,游戏面被更新,我们可以开始在我们的主游戏循环中工作。
我们将创建一个将运行游戏的 。 循环将调用值True ,这意味着循环将永远循环,除非它被中断。
在我们程序的这个主游戏循环中,我们将构造一个来遍历事件队列中的用户事件,这将由pygame.event.get()函数调用。
在这一点上,我们在for循环中没有任何内容,但是我们可以添加一个print()语句来显示代码行为正如我们期望的那样。 我们将把迭代中的事件作为print(event)传递到语句中。
我们将这两个循环和print()语句添加到我们的程序文件中:
our_game.py import pygame
from pygame.locals import *
pygame.init()
display_width = 800
display_height = 600
game_display = pygame.display.set_mode((display_width, display_height))
pygame.display.update()
while True:
for event in pygame.event.get():
print(event)
为了确保我们的代码正常工作,我们来运行程序: python our_game.py
当我们运行文件时,会弹出一个800x600的窗口。 要测试事件,您可以将鼠标悬停在窗口上,单击窗口中的内容,然后按键盘上的键。 这些事件将打印到您的控制台窗口。
您收到的输出将如下所示: Output&Event(4-MouseMotion {'rel': (616, 355), 'buttons': (0, 0, 0), 'pos': (616, 355)})&
&Event(5-MouseButtonDown {'button': 1, 'pos': (616, 355)})&
&Event(6-MouseButtonUp {'button': 1, 'pos': (616, 355)})&
&Event(2-KeyDown {'scancode': 3, 'key': 102, 'unicode': 'f', 'mod': 0})&
&Event(3-KeyUp {'scancode': 3, 'key': 102, 'mod': 0})&
此输出显示正在发生的用户事件。 这些事件是什么将控制游戏,因为它们是由用户生成的。 每当你运行pygame.event.get()函数,你的代码将会占用这些事件。
通过在终端窗口中按CTRL + C来停止程序运行。
此时,您可以删除或 print()语句,因为我们不需要具有所有此终端输出。
从这里,我们可以通过学习如何退出游戏来完成我们的模板。
要退出pygame程序,我们可以先关闭相关的模块,然后像往常一样退出Python。
pygame.quit()函数将初始化所有pygame模块,Python quit()函数将退出程序。
由于用户可以控制游戏功能和事件,所以当用户通过点击游戏窗口上方的“X”请求程序关闭时,我们也应该知道pygame.QUIT被发送到事件队列。
让我们开始使用事件处理for循环中的来控制程序的流程:
our_game.py import pygame
from pygame.locals import *
pygame.init()
display_width = 800
display_height = 600
game_display = pygame.display.set_mode((display_width, display_height))
pygame.display.update()
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
在上面的代码中,我们说如果用户要求程序关闭,程序应该用pygame.quit()来pygame.quit() pygame模块,并用quit()退出程序。
因为我们已经导入了pygame.locals我们可以在这些前面event.type和QUIT (而不是pygame. )。
虽然用户可能知道点击游戏窗口上角的“X”,但我们可能希望有其他用户事件触发该请求以退出该程序。 我们可以使用KEYDOWN事件类型和一个或多个键来执行此操作。
KEYDOWN事件意味着用户正在按下键盘上的一个键。 为了我们的目的,假设Q键(如“退出”)或ESC键可以退出程序。 我们在for循环中添加代码:
our_game.py import pygame
from pygame.locals import *
pygame.init()
display_width = 800
display_height = 600
game_display = pygame.display.set_mode((display_width, display_height))
pygame.display.update()
while True:
for event in pygame.event.get():
if event.type == QUIT or (
event.type == KEYDOWN and (
event.key == K_ESCAPE or
event.key == K_q
pygame.quit()
我们已经添加了 ,以便如果用户单击游戏窗口右上角的“X”,或者用户按下一个键,就是退出键或Q键(注意这不区分大小写)。
在这一点上,如果您使用python our_game.py命令运行程序,则可以测试运行的游戏功能,然后通过退出窗口退出“X”图标,或者按Q或ESC键。
代码改进和后续步骤
尽管上述程序功能齐全,但我们可以做些改进代码的事情。
对于初学者,我们可以将while循环中的替换为 : def event_handler():
for event in pygame.event.get():
if event.type == QUIT or (
event.type == KEYDOWN and (
event.key == K_ESCAPE or
event.key == K_q
pygame.quit()
这将使得while循环更加细腻,特别是当我们为游戏添加更多功能时。
另外,为了开始使游戏更加精美,我们可以在窗口的标题栏中添加一个标题(当前读取的是pygame window )。 我们可以用以下行来做: pygame.display.set_caption('Our Game')
我们可以将上面的字符串'Our Game'设置为我们想要称为游戏的任何内容。
此外,我们可以将pygame.display.update()函数移动到主游戏循环中。
现在,我们的完整代码如下所示:
our_game.py import pygame
from pygame.locals import *
pygame.init()
display_width = 800
display_height = 600
game_display = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption('Our Game')
def event_handler():
for event in pygame.event.get():
if event.type == QUIT or (
event.type == KEYDOWN and (
event.key == K_ESCAPE or
event.key == K_q
pygame.quit()
while True:
event_handler()
pygame.display.update()
您还可以考虑使用上述代码的不同方法,包括在进入游戏退出之前使用退出循环。
从这里,您将继续学习如何通过绘图和精灵显示图像,动画图像和控制帧率等。 您可以通过阅读官方的来继续了解pygame游戏 。
本教程让您将开源模块pygame安装到您的Python 3编程环境中,以及如何开始通过设置可用于控制Python游戏主循环的模板来开发游戏开发。
要做其他使用Python模块的编程项目,您可以学习“
”,或者“
文章分类 10
<是一个运维教程站,开始于2012年5月。这里提供如何简单的学习引导Linux/Windows系统管理员的目标。我们一直在努力提供简单易学高质量的文章。
(C)2017 Howtoing运维教程 京ICP备号-1用Python和Pygame写游戏-从入门到精通(9) | 目光博客
Theme | Powered by如果你觉得本站对你有帮助,欢迎向本站赞助 :P
游戏开发 最近更新
17:47:57, +9254
17:40:02, +11934
01:18:10, +11383
23:11:52, +8618
23:07:25, +8716
14:38:54, +9082
23:27:29, +9154
22:44:55, +8408
23:09:29, +9607
江西唐门计算机系统有限公司
南方数码云南分公司
云南恒翌科技有限公司
携程-Ctrip
某创业公司
广州君实信息科技有限公司
你可能感兴趣的标签(爱在冬季)
(留学周刊)
第三方登录:}

我要回帖

更多关于 pygame开发大型游戏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信