博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Pygame模块使用Python构建游戏框架
阅读量:2528 次
发布时间:2019-05-11

本文共 6845 字,大约阅读时间需要 22 分钟。

在 ,我解释了如何使用Python创建简单的基于文本的骰子游戏。 这次,我将演示如何使用Python模块Pygame创建图形游戏。 要获得一个实际上可以执行任何操作的游戏,将花费几篇文章,但是到本系列结束时,您将对如何查找和学习新的Python模块以及如何从头开始构建应用程序有更好的了解。

在开始之前,您必须安装 。

安装新的Python模块

有几种安装Python模块的方法,但最常见的两种是:

  • 从发行版的软件存储库中
  • 使用Python包管理器pip

两种方法都能很好地工作,并且每种方法都有其自身的优点。 如果您在Linux或BSD上进行开发,则利用发行版的软件存储库可确保自动及时更新。

但是,使用Python的内置包管理器可以控制何时更新模块。 另外,它也不是特定于操作系统的,这意味着即使您不在通常的开发机器上,也可以使用它。 pip的另一个优点是它允许本地安装模块,如果您对所使用的计算机没有管理权限,则这很有用。

使用点

如果您的系统上同时安装了Python和Python3,则要使用的命令可能是pip3 ,这与Python 2.x的pip命令有所不同。 如果不确定,请先尝试pip3

pip命令的工作原理与大多数Linux软件包管理器一样。 您可以搜索与Python模块search ,然后用安装它们install 。 如果您无权在使用的计算机上安装软件,则可以使用--user选项将模块安装到主目录中。

$ pip3 search pygame     
[ ...
]
Pygame
( 1.9.3
)                 - Python Game Development
sge-pygame
(
1.5
)               - A
2 -D game engine
for Python
pygame_camera
( 0.1.1
)          - A Camera lib
for PyGame
pygame_cffi
( 0.2.1
)            - A cffi-based SDL wrapper that copies the pygame API.
[ ...
]
$ pip3 install Pygame --
user

Pygame是一个Python模块,这意味着它只是可以在Python程序中使用的一组库。 换句话说,它不是您启动的程序,例如或 。

Pygame入门

电子游戏需要设置; 它发生的世界。 在Python中,有两种不同的方法来创建设置:

  • 设置背景色
  • 设置背景图片

您的背景只是图像或颜色。 您的视频游戏角色无法与背景中的事物互动,因此不要在其中放置任何过分重要的事物。 只是装扮而已。

设置您的Pygame脚本

要启动新的Pygame项目,请在计算机上创建一个文件夹。 您所有的游戏文件都进入该目录。 至关重要的是,将运行游戏所需的所有文件都保存在项目文件夹中。

Create a project directory

Python脚本以文件类型,名称和要使用的许可证开头。 使用开源许可证,以便您的朋友可以改善您的游戏并与您分享他们的更改:

#!/usr/bin/env python3      
# by Seth Kenlon
## GPLv3
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see
.

然后,您告诉Python您要使用哪些模块。 其中一些模块是通用的Python库,当然,您希望包括刚刚安装的Pygame。

import pygame       
# load pygame keywords
import
sys    
# let  python use your file system
import
os      
# help python identify your OS

由于您将大量处理此脚本文件,因此有助于在文件中创建部分,以便您知道将内容放置在何处。 您可以使用块注释来执行此操作,这些注释仅在查看源代码时才可见。 在代码中创建三个块。

''' Objects '''      
# put Python classes and functions here
''' Setup '''
# put run-once code here
''' Main Loop '''
# put game loop here

接下来,设置游戏的窗口大小。 请记住,并非每个人的计算机屏幕都很大,因此最好使用适合大多数人的计算机的屏幕尺寸。

有一种方法可以像许多现代视频游戏一样切换全屏模式,但是由于您刚入门,因此请保持简单并设置一个大小。

''' Setup '''      
worldx
=
960
worldy
=
720

Pygame引擎需要一些基本设置,然后才能在脚本中使用它。 您必须设置帧频,启动其内部时钟并启动( init )Pygame。

fps        
=
40  
# frame rate
ani  
=
4  
# animation cycles
clock
= pygame.
time .
Clock
(
)
pygame.
init
(
)

现在您可以设置背景。

设定背景

在继续之前,请打开图形应用程序并为您的游戏世界创建背景。 将其另存为stage.png目录中名为images的文件夹内的stage.png

您可以使用几个免费的图形应用程序。

  • 是专业级别的涂料仿真器,可用于创建精美的图像。 如果您对创建视频游戏美术非常感兴趣,甚至可以购买一系列在线 。
  • 是基本的,易于学习的油漆应用程序。
  • 是矢量图形应用程序。 用它来绘制形状,线条,样条曲线和贝塞尔曲线。

您的图形不必太复杂,您随时可以返回并在以后进行更改。 有了它后,请在文件的设置部分中添加以下代码:

world         
= pygame.
display .
set_mode
(
[ worldx
, worldy
]
)
backdrop
= pygame.
image .
load
(
os .
path .
join
(
'images'
,
'stage.png'
) .
convert
(
)
)
backdropbox
= world.
get_rect
(
)

如果您只是要用一种颜色填充游戏世界的背景,那么您需要做的就是:

world = pygame. display . set_mode ( [ worldx , worldy ] )

您还必须定义要使用的颜色。 在设置部分中,使用红色,绿色和蓝色(RGB)的值创建一些颜色定义。

''' Setup '''      
BLUE  
=
(
25
,
25
,
200
)
BLACK
=
(
23
,
23
,
23
)
WHITE
=
(
254
,
254
,
254
)

在这一点上,理论上您可以开始游戏。 问题是,它只会持续一毫秒。

为了证明这一点,请将文件另存为your-name_game.py (用您的真实姓名替换your-name姓名)。 然后启动您的游戏。

如果您使用的是IDLE,请从“运行”菜单中选择Run ModuleRun Module游戏。

如果使用的是Ninja,请单击左侧按钮栏中的Run file按钮。

Run file in Ninja.

您也可以直接从Unix终端或Windows命令提示符下运行Python脚本。

$ python3 ./your-name_game. py

如果您使用的是Windows,请使用以下命令:

py. exe your-name_game. py

无论您启动它是什么,都不要期望太高,因为您的游戏现在仅持续几毫秒。 您可以在下一部分中解决该问题。

循环播放

除非另有说明,否则Python脚本只能运行一次。 如今计算机非常快,因此您的Python脚本运行时间不到一秒钟。

要强制您的游戏保持开放和活跃状态的时间足以让某人看到它(更不用说玩游戏了),请使用while循环。 为了使游戏保持打开状态,您可以将变量设置为某个值,然后告诉while循环以保持循环,只要该变量保持不变即可。

这通常称为“主循环”,您可以将术语“ main用作变量。 将此添加到您的设置部分的任何位置:

main = True

在主循环中,使用Pygame关键字检测键盘上的按键是否已被按下或释放。 将此添加到您的主循环部分:

''' Main loop '''      
while main
==
True :
   
for event
in pygame.
event .
get
(
) :
       
if event.
type
== pygame.
QUIT :
            pygame.
quit
(
)
;
sys .
exit
(
)
            main
=
False
       
if event.
type
== pygame.
KEYDOWN :
           
if event.
key
==
ord
(
'q'
) :
                pygame.
quit
(
)
               
sys .
exit
(
)
                main
=
False

同样在您的主循环中,刷新您的世界背景。

如果您使用图像作为背景:

world. blit ( backdrop , backdropbox )

如果您使用背景颜色:

world. fill ( BLUE )

最后,告诉Pygame刷新屏幕上的所有内容并推进游戏的内部时钟。

    pygame.      
display .
flip
(
)
    clock.
tick
( fps
)

保存文件,然后再次运行以查看有史以来最无聊的游戏。

要退出游戏,请按键盘上的q

在本系列的中,我将向您展示如何添加到当前为空的游戏世界,因此,继续并创建一些要使用的图形!

翻译自:

转载地址:http://drbzd.baihongyu.com/

你可能感兴趣的文章
code vs 3376 符号三角形
查看>>
[CF193B] Xor(暴力,剪枝,异或)
查看>>
[CF825D] Suitable Replacement (贪心乱搞)
查看>>
大数据笔记(二十五)——Scala函数式编程
查看>>
win7 IIS7 运行vs2003 web 项目 无法识别的配置节“system.webServer” 解决
查看>>
jQuery源码分析_工具方法(学习笔记)
查看>>
有穷自动机的转换
查看>>
ncbi-blast 本地安装
查看>>
在android上使用 stand-alone toolchains移植 transmission
查看>>
小议IT公司的组织架构
查看>>
在Eclipse中编写jQuery代码时产生的错误(连载)
查看>>
java 中 this的使用
查看>>
多线程和蕃茄炒蛋
查看>>
SSH错误:packet_write_wait: Connection to 10.57.19.250 port 22: Broken pipe
查看>>
ACTION 关联表之间查询语句 SQL语句写法
查看>>
find命令
查看>>
Ambari——大数据平台的搭建利器之进阶篇
查看>>
模块内高内聚?模块间低耦合?MVC+EF演示给你看!
查看>>
ACM学习心得及书籍推荐
查看>>
springcloud
查看>>