如何用Python和Pygame模块构建一个游戏框架

技术如何用Python和Pygame模块构建一个游戏框架如何用Python和Pygame模块构建一个游戏框架,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。通

如何用Python和Pygame模块搭建一个游戏框架,相信很多没有经验的人对此无能为力。因此,本文总结了出现问题的原因和解决方法,希望大家可以通过这篇文章来解决这个问题。

通过创建一个简单的骰子游戏来探索Python。现在是时候从头开始制作你自己的游戏了。

这次,我将展示如何使用Python模块Pygame创建一个图形游戏。需要几篇文章才能得到一个确实有所作为的游戏,但是到本系列的最后,您将更好地了解如何找到和学习新的Python模块,以及如何基于它们构建应用程序。

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

安装新的 Python 模块

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

从你发行的软件库中。

使用Python的包管理器pip

这两种方法都很有效,而且各有各的优点。如果你是在Linux或者BSD上开发,你可以使用你的发行版的软件仓库来自动及时的更新。

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

使用 pip

如果您的系统上安装了Python和Python3,那么您想要使用的命令可能是pip3,用于区分Python 2.x的pip命令.如果你不确定,先试试pip3。

Pip命令的工作方式有点像大多数Linux包管理器。您可以使用搜索来搜索Python模块,然后使用安装来安装它们。如果您没有用于安装软件的计算机的管理权限,可以使用- user选项将模块仅安装到您的主目录中。

$ pip 3 searchcpygame[.】Pygame(1 . 9 . 3)-pyongame developmentsge-Pygame(1.5)-A2-dgameenginefor ythonpegame _ camera(0 . 1 . 1)-acameriborpygame _ cffi(0 . 2 . 1)-acffi-base sdlwrapperthatcopiesteepygamepi。[.]$ pip 3 installpygame-用户pygame是一个Python模块,这意味着它只是一组可以在您的Python程序中使用的库。换句话说,它不是一个你可以像IDLE或Ninja-IDE那样启动的程序。

00-1010一款电子游戏需要一个背景设定:故事发生的地方。在Python中,有两种不同的方法来创建您的故事背景:

设置背景颜色。

设置背景图片。

你的背景只是一张图片或者一种颜色。你的电子游戏角色不能在后台和东西互动,所以不要在后台放太重要的东西。这只是装饰。

00-1010要启动新的Pygame项目,首先在计算机上创建一个文件夹。游戏的所有文件都放在这个目录下。将运行游戏所需的所有文件保存在项目文件夹中是极其重要的。

>

如何用Python和Pygame模块构建一个游戏框架

一个 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 <http://www.gnu.org/licenses/>.

然后,你告诉 Python 你想使用的模块。一些模块是常见的 Python 库,当然,你想包括一个你刚刚安装的 Pygame 模块。

import pygame  # 加载 pygame 关键字import sys     # 让 python 使用你的文件系统import os      # 帮助 python 识别你的操作系统

由于你将用这个脚本文件做很多工作,在文件中分成段落是有帮助的,以便你知道在哪里放代码。你可以使用块注释来做这些,这些注释仅在看你的源文件代码时是可见的。在你的代码中创建三个块。

'''Objects''' # 在这里放置 Python 类和函数 '''Setup''' # 在这里放置一次性的运行代码 '''Main Loop''' # 在这里放置游戏的循环代码指令

接下来,为你的游戏设置窗口大小。注意,不是每一个人都有大计算机屏幕,所以,***使用一个适合大多数人的计算机的屏幕大小。

这里有一个方法来切换全屏模式,很多现代电子游戏都会这样做,但是,由于你刚刚开始,简单起见仅设置一个大小即可。

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

在脚本中使用 Pygame 引擎前,你需要一些基本的设置。你必须设置帧频,启动它的内部时钟,然后开始 (init)Pygame 。

fps   = 40  # 帧频ani   = 4   # 动画循环clock = pygame.time.Clock()pygame.init()

现在你可以设置你的背景。

设置背景

在你继续前,打开一个图形应用程序,为你的游戏世界创建一个背景。在你的工程目录中的 images 文件夹内部保存它为 stage.png

这里有一些你可以使用的自由图形应用程序。

  • Krita 是一个专业级绘图素材模拟器,它可以被用于创建漂亮的图片。如果你对创建电子游戏艺术作品非常感兴趣,你甚至可以购买一系列的游戏艺术作品教程。

  • Pinta 是一个基本的,易于学习的绘图应用程序。

  • Inkscape 是一个矢量图形应用程序。使用它来绘制形状、线、样条曲线和贝塞尔曲线。

你的图像不必很复杂,你可以以后回去更改它。一旦有了它,在你文件的 Setup 部分添加这些代码:

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])

你也必须定义颜色以使用。在你的 Setup 部分,使用红、绿、蓝 (RGB) 的值来创建一些颜色的定义。

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

至此,你理论上可以启动你的游戏了。问题是,它可能仅持续了一毫秒。

为证明这一点,保存你的文件为 your-name_game.py(用你真实的名称替换 your-name)。然后启动你的游戏。

如果你正在使用 IDLE,通过选择来自 “Run” 菜单的 “Run Module” 来运行你的游戏。

如果你正在使用 Ninja,在左侧按钮条中单击 “Run file” 按钮。

如何用Python和Pygame模块构建一个游戏框架

你也可以直接从一个 Unix 终端或一个 Windows 命令提示符中运行一个 Python 脚本。

$ python3 ./your-name_game.py

如果你正在使用 Windows,使用这命令:

py.exe your-name_game.py

启动它,不过不要期望很多,因为你的游戏现在仅仅持续几毫秒。你可以在下一部分中修复它。

循环

除非另有说明,一个 Python 脚本运行一次并仅一次。近来计算机的运行速度是非常快的,所以你的 Python 脚本运行时间会少于 1 秒钟。

为强制你的游戏来处于足够长的打开和活跃状态来让人看到它(更不要说玩它),使用一个 while 循环。为使你的游戏保存打开,你可以设置一个变量为一些值,然后告诉一个 while 循环只要变量保持未更改则一直保存循环。

这经常被称为一个“主循环”,你可以使用术语 main 作为你的变量。在你的 Setup 部分的任意位置添加代码:

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 键。

看完上述内容,你们掌握如何用Python和Pygame模块构建一个游戏框架的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/50254.html

(0)

相关推荐

  • springboot动态切换数据源不重启(springboot 项目中多个数据源切换)

    技术Springboot动态切换数据源怎么实现这篇文章主要介绍“Springboot动态切换数据源怎么实现”,在日常操作中,相信很多人在Springboot动态切换数据源怎么实现问题上存在疑惑,小编查阅了各式资料,整理出

    攻略 2021年12月16日
  • MHA在线切换脚本master_ip_online_change如何结合VIP

    技术MHA在线切换脚本master_ip_online_change如何结合VIP这篇文章主要介绍MHA在线切换脚本master_ip_online_change如何结合VIP,文中介绍的非常详细,具有一定的参考价值,感

    攻略 2021年11月23日
  • leetcode有效三角形个数(leetcode四个数之和图解)

    技术LeetCode如何解决三数之和问题这篇文章主要介绍LeetCode如何解决三数之和问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 题目描述给定一个整数数组nums,判断nums中是否存

    攻略 2021年12月15日
  • html中table行间距如何设置

    技术html中table行间距如何设置小编给大家分享一下html中table行间距如何设置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

    攻略 2021年11月12日
  • JavaScript中的原型和原型链是什么

    技术JavaScript中的原型和原型链是什么这篇文章主要介绍“JavaScript中的原型和原型链是什么”,在日常操作中,相信很多人在JavaScript中的原型和原型链是什么问题上存在疑惑,小编查阅了各式资料,整理出

    攻略 2021年11月28日
  • JavaWeb学生成绩管理系统功能有哪些

    技术JavaWeb学生成绩管理系统功能有哪些小编给大家分享一下JavaWeb学生成绩管理系统功能有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一

    攻略 2021年11月23日