这系列的第一篇通过创建一个简单的骰子游戏来探究 Python。现在是来从零制作你自己的游戏的时间。

在我的这系列的第一篇文章 中, 我已经讲解如何使用 Python 创建一个简单的、基于文本的骰子游戏。这次,我将展示如何使用 Python 模块 Pygame 来创建一个图形化游戏。它将需要几篇文章才能来得到一个确实做成一些东西的游戏,但是到这系列的结尾,你将更好地理解如何查找和学习新的 Python 模块和如何从其基础上构建一个应用程序。

在开始前,你必须安装 Pygame

安装新的 Python 模块

有几种方法来安装 Python 模块,但是最通用的两个是:

从你的发行版的软件存储库

使用 Python 的软件包管理器pip

两个方法都工作的很好,并且每一个都有它自己的一套优势。如果你是在 Linux 或 BSD 上开发,可以利用你的发行版的软件存储库来自动和及时地更新。

然而,使用 Python 的内置软件包管理器可以给予你控制更新模块时间的能力。而且,它不是特定于操作系统的,这意味着,即使当你不是在你常用的开发机器上时,你也可以使用它。pip的其它的优势是允许本地安装模块,如果你没有正在使用的计算机的管理权限,这是有用的。

使用 pip

如果 Python 和 Python3 都安装在你的系统上,你想使用的命令很可能是pip3,它用来区分 Python 2.x 的pip的命令。如果你不确定,先尝试pip3。

pip命令有些像大多数 Linux 软件包管理器一样工作。你可以使用search搜索 Python 模块,然后使用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 程序中的库。换句话说,它不是一个像 IDLE 或 Ninja-IDE 一样可以让你启动的程序。

Pygame 新手入门

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

设置一种背景颜色

设置一张背景图片

你的背景仅是一张图片或一种颜色。你的电子游戏人物不能与在背景中的东西相互作用,因此,不要在后面放置一些太重要的东西。它仅仅是设置装饰。

设置你的 Pygame 脚本

要开始一个新的 Pygame 工程,先在计算机上创建一个文件夹。游戏的全部文件被放在这个目录中。在你的工程文件夹内部保持所需要的所有的文件来运行游戏是极其重要的。

一个 Python 脚本以文件类型、你的姓名,和你想使用的许可证开始。使用一个开放源码许可证,以便你的朋友可以改善你的游戏并与你一起分享他们的更改: 然后,你告诉 Python 你想使用的模块。一些模块是常见的 Python 库,当然,你想包括一个你刚刚安装的 Pygame 模块。

#!/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 # 加载 pygame 关键字

import sys # 让 python 使用你的文件系统

import os # 帮助 python 识别你的操作系统

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

'''

Objects

'''

# 在这里放置 Python 类和函数

'''

Setup

'''

# 在这里放置一次性的运行代码

'''

Main Loop

'''

# 在这里放置游戏的循环代码指令

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

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

'''

Setup

'''

worldx = 960

worldy = 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” 按钮。

你也可以直接从一个 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键。

pygame为游戏添加背景_为游戏添加背景使用Python和Pygame模块构建一个游戏框架相关推荐

  1. pygame为游戏添加背景_万能的Python和Pygame模块构建一个游戏框架

    通过创建一个简单的骰子游戏来探究 Python.现在是来从零制作你自己的游戏的时间. 在我的这系列的第一篇文章中, 我已经讲解如何使用 Python 创建一个简单的.基于文本的骰子游戏.这次,我将展示 ...

  2. python pygame模块怎么写游戏_使用 Python 和 Pygame 模块构建一个游戏框架

    这系列的第一篇通过创建一个简单的骰子游戏来探究 Python.现在是来从零制作你自己的游戏的时间. 在我的这系列的第一篇文章 中, 我已经讲解如何使用 Python 创建一个简单的.基于文本的骰子游戏 ...

  3. pip install pygame_使用 Python 和 Pygame 模块构建一个游戏框架!

    这系列的第一篇通过创建一个简单的骰子游戏来探究 Python.现在是来从零制作你自己的游戏的时间. 在我的这系列的第一篇文章 中, 我已经讲解如何使用 Python 创建一个简单的.基于文本的骰子游戏 ...

  4. 构建一个react项目_您想要了解更多有关React的内容吗? 让我们构建一个游戏,然后玩。...

    构建一个react项目 by Samer Buna 通过Samer Buna 您想要了解更多有关React的内容吗? 让我们构建一个游戏,然后玩. (Do you want to learn more ...

  5. Games104现代游戏引擎入门-lecture3如何构建一个游戏世界

    Games104现代游戏引擎入门-lecture3如何构建一个游戏世界 1 游戏世界的构成 2 无人机案例 3 游戏世界如何动起来 4 如何探索 5 如何管理GO 6 总结 7 Q&A 1 游 ...

  6. Games104 Lecture 3 如何构建一个游戏世界

    如何构建一个游戏世界 游戏世界组成 应该包含哪些东西 应该如何描述这些东西 应该如何被组织起来 怎样让游戏世界活起来 Tick 如何交互 怎样管理游戏对象 总结 游戏世界组成 构建游戏世界有三个核心问 ...

  7. 一个基于Python的tkinter模块实现的游戏活动日历模拟器

    一个基于Python的tkinter模块实现的游戏活动日历模拟器 1.Python环境准备 2.简单介绍 3.源代码 4.源代码及活动配置表下载 1.Python环境准备 运行该项目需要Python3 ...

  8. python游戏代码示例_练习项目20:使用python制作游戏(中)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 上一篇教程,我们通过实现一个敌机由上至下的循环过程,初步了解了pygame这个模块的使用. 接下来,我们进行第二阶段,真正的实现一个通过鼠标控制的小游戏. ...

  9. python利用pygame框架实现类似大鱼吃小鱼游戏 (松鼠吃松鼠) code from making games with python and pygame

    本源码来自于 <Python和Pygame游戏开发指南> # Squirrel Eat Squirrel (a 2D Katamari Damacy clone) # By Al Swei ...

最新文章

  1. syslog打印不带等级_socket发送syslog不能获得级别
  2. python __call__的作用,是可以将对象作为方法使用的关键 分析nn.Module源码
  3. PHP高并发的解决方案
  4. 2019牛客多校2 H Second Large Rectangle(悬线法)
  5. minEnclosingCircle函数
  6. Hello,SDK!数据采集黑客松大赛重磅开启,Mac投影仪任你拿!
  7. c#中调用Excel
  8. MySQL视图、事务与存储过程
  9. [渝粤教育] 广东-国家-开放大学 大学英语2
  10. python用什么来写模块-使用C语言编写Python模块-引子【转】
  11. Spring 创建代理类流程跟踪
  12. C#控制台应用程序执行结果一闪而过的解决方法
  13. 串口485接法图_rs485 与485通讯 接线方法?
  14. 计算机无法启动怎么重装系统,韩博士教你如何为系统崩溃无法开机的电脑重装系统...
  15. beetl模板使用场景_BeetlSQL3性能
  16. 我读过关于面试最好的一篇文章
  17. idea 运行jmeter源码_IDEA 编译 Jmeter 4.0 ( 二次开发_1 )
  18. K-mer频率分布图代码实现
  19. python f 格式字符串输出
  20. 05.17 佘山踏青“徒步爬山” 活动回顾

热门文章

  1. ACW 各种背包模型题 day36
  2. 推荐一把好椅子,程序员必买!
  3. 哈工大计算机学院李岳,哈尔滨工业大学
  4. 伟大的太空星球移民计划
  5. 摘录-SSMS18.0可应用的SQL系统及Windows系统
  6. C#编程:元素法求解定积分/定积分定义求解定积分
  7. 留档连载用………………
  8. dataguard之角色转换
  9. 2018京东项目经理实习生面试经验
  10. 解决数学题的编程思路