Pygame的介绍

Pygame是一组专门为编写游戏设计的Python模块,增加了SDL库功能。可以使你在Python语言中轻松的创建全功能的游戏和多媒体程序。

Pygame是免费的,在GPL许可下发布,你可以创建开源,免费,免费软件,共享软件,和商业游戏。 Pygame已经存在很多时间了,许多优秀的程序员加入其中,把Pygame做得越来越好。

安装Pygame

首先通过win+R键打开运行窗口,输入cmd命令进入到控制台,然后输入 pip install pygame -i https://pypi.doubanio.com/simple命令安装pygame。

安装完成之后,输入python回车,进入python环境,然后输入import pygame检查是否安装成功。

如果出现:ImportError: No module named pygame 那就是没有安装成功,(●'◡'●)。

如果没有出现异常错误,那就说明pygame模块安装成功了。

导入与初始化

环境安装完成之后,我们就正式开始介绍关于pygame的使用,准备好了吗?

今天我们主要讲pygame导入与初始化、载入图像与声音、主循环等内容。

在pygame中,导入和初始化是一个非常简单的过程。有多简单呢?

首先,第一步导入pygame包,只有导入包之后才能使用其中的方法与属性。

import pygame

第二步初始化,通过init方法初始化pygame库,让计算机硬件做好准备。

pygame.init()

完成了初始化的工作之后,接下来我们尝试创建出来一个pygame的窗口。

创建一个Pygame窗口

Pygame最重要的部分是表面。我们可以把表面想象成一张白纸。你可以用表面做很多事情:画线、填充颜色、复制图像等。这个表面可以是任何尺寸的,我们设置的是800(宽)*600(高)的大小。试着运行这个程序,你会发现有一个黑黑的窗口一闪而过。

import pygame

pygame.init()screen= pygame.display.set_mode([800,600])

这是因为Pygame的作用就是为了创建游戏,所以需要与玩家不断互动, 需要有一个事件循环一直运行。 为了让事件驱动系统"看到"事件发生,它必须不断"寻找"事件,这种特殊的循环我们称为事件循环。因此我们需要采用while来执行这种循环。

import pygame

pygame.init()

screen= pygame.display.set_mode([1080,675])

while True:

pass

添加了while循环之后,黑窗口就能够一直存在了,但是会产生新的问题,那就是程序进入了死循环,无法关闭。

接着,我们要增加一个事件处理器,用来监听当用户点击退出按钮时发生的事件。

在pygame中我们将使用的模块是 pygame.event,使用pygame.event.get()方法可以从事件队列得到所有事件的一个列表。

获取到所有的事件之后,通过遍历的方式处理列表中的每一个事件,如果遇到QUIT退出事件,则调用sys.exit方法结束程序。

import sys

import pygame

pygame.init()

screen= pygame.display.set_mode([1080,675])

while True:

for event in pygame.event.get():

if event.type == pygame.QUIT:

sys.exit()

运行以上代码,你就会看到一个能正常工作的窗口啦~,通过右上角的叉叉就能够正常的关闭程序。

插入图像(pygame.image)

当程序正常运行之后,接下来我们想办法在窗口中插入一张图片, 在 Pygame 中,使用图像最简单的方法就是利用 image 函数, pygame.image模块有一个load()函数,可以帮我们加载图片。

import sys

import pygame

pygame.init()

screen = pygame.display.set_mode([1080,675])

image_filename = './Source/diss.png'

image = pygame.image.load(image_filename)

while True:

for event in pygame.event.get():

if event.type == pygame.QUIT:

sys.exit()

运行代码之后,pygame的窗口并没有出现图片这是因为图片加载完成后,我们需要将像素从一个地方复制到另一个地方。像素复制在编程中有一个特殊的名字,叫做块移(blitting)。

它可以帮助我们将一个图像从一个地方“块移”(就是复制啦)到另一个地方。移到哪里呢?我们需要设定一个起始位置,即: x 轴(水平方向)、y 轴(垂直方向)。 在 Pygame 中, 这两个数是从从窗口左上角的 [0, 0] 坐标开始的。

所以我们需要加入以下代码:screen.blit(image, [0, 0]).

除此之外,对于 Pygame 窗口中显示的所有内容来讲,如果内容发现变化之后就需要进行flip,否则修改的内容并不能更新到窗口。

# 导入模块

import sys

import pygame

# 初始化

pygame.init()

# 设置窗口

screen = pygame.display.set_mode([1080,675])

# 图片路径

image_filename = './Source/diss.png'

# 加载图片

image = pygame.image.load(image_filename)

# 移动图片

screen.blit(image, [0, 0])

# 更新窗口内容

pygame.display.flip()

# 循环监听事件

while True:

for event in pygame.event.get():

if event.type == pygame.QUIT:

sys.exit()

运行以上代码,有一个可爱的小姐姐在等你~。

是不是有点意犹未尽的赶脚?那就敬请期待下一次的内容吧~(ps:需要素材资源关注微信公众号:编程小咖)

python运行游戏是否需要pygame_用Python和Pygame写游戏-从入门到放弃(1)相关推荐

  1. python游戏开发框架_用Python和Pygame写游戏-从入门到精通(实战二:恶搞俄罗斯方块1)...

    游戏是为了什么而存在的?Bingo,是为了娱乐~ 在这个最高主题之前,技术啥的什么都无所谓! 前一段时间,有位姓刘的网友用Pygame写了个俄罗斯方块,在用py2exe打包的时候遇到一些问题,和我交流 ...

  2. python用户界面游戏_用Python和Pygame写游戏-从入门到精通(实战二:恶搞俄罗斯方块2)...

    我们接着来做这个整死人不偿命的俄罗斯方块. 代码组织和名词约定 上一次我们稍微整理了一下游戏运行的框架,这里需要整理一下python代码的框架,一个典型的pygame脚本结构如下: 其中,lib为py ...

  3. python教程是用什么博客写的-用Python和Pygame写游戏-从入门到精通(目录)

    目光博客一开始,就有一个将pygame好好介绍一遍的宏伟计划,历时四个月,在各位朋友的关怀鞭策下,如今(2011/8/26)理论学习的部分似乎已经都完成了,在次列一个目录,方便查询.介绍还不是很全,下 ...

  4. 用Python和Pygame写游戏-从入门到精通(1)

    From: http://eyehere.net/2011/python-pygame-novice-professional-1/ 博客刚开,打算做一个Pygame的系列,翻译自Will McGug ...

  5. 用Python和Pygame写游戏-从入门到精通

    博客刚开,打算做一个Pygame的系列,翻译自Will McGugan的<Beginning Game Development with Python and Pygame –From Novi ...

  6. mac python运行按哪个键_#mac python如何使用教程#怎么在mac终端运行python程序

    mac如何投屏手机 1.首先,解iPhone,然后用手指从下往上,打开控心,在其中就可以找到AirPlay了屏幕镜像. 2.接来下就来教大家如何使用AirPlay吧,首先将手机和电脑连接在同一WiFi ...

  7. python运行脚本被杀死_从python异常中杀死Bash脚本

    我有一个在其中调用Python的shell脚本. #! /bin/bash shopt -s extglob echo"====test====" ~/.conda/envs/my ...

  8. python 控制qq_最必要的最小建议集:写给刚入门编程(python)的同学

    写给谁 刚准备入手学习python编程的大学生或者研究生. 你为什么学python 当你做实验(生物信息学,地理信息学,计量经济学,心理学,运筹学,图像处理,语音处理,信号处理,嵌入式,linux等) ...

  9. pygame写游戏,常用代码记录

    2019独角兽企业重金招聘Python工程师标准>>> pygame 写起游戏来还是挺不错的,不过我也没用过别的什么东西写,所以也没什么发言权. 些游戏我是从这篇文章开始入门的13岁 ...

  10. 如何用Pygame写游戏(四)

    本文转自:http://eyehere.net/2011/python-pygame-novice-professional-4/ 不过5月上旬,气温居然就到了33℃,这日子真是不让人活了-- 另外今 ...

最新文章

  1. 理解Python的迭代器(转)
  2. 后端系统开发之异常情况处理
  3. Python--第4次平时作业
  4. HTML+CSS+JS实现 ❤️3D方块弹跳动画特效❤️
  5. python必备基础代码-python基础知识和练习代码
  6. 北理工的石锅饭依然美味
  7. linux ftp win nt,Java中apache包中FTPClient读取win NT上的FTP服务器文件失败
  8. 关于用MATLAB求解定积分方程的问题
  9. MySQL函数、存储过程
  10. 微信开发之微信公众平台基本配置--服务器token验证(Java实现)
  11. FreeSWITCH channel variables(信道变量)
  12. 【Python】PyCharm热加载,调试时,修改运行时代码无需重新启动程序即可更新所做的修改
  13. iOS开发 设置状态栏字体颜色
  14. [架构之路-160]-《软考-系统分析师》-10-系统分析-7-数据与数据流程分析、需求规格说明书
  15. 直方图均衡化和直方图匹配
  16. H3C单臂路由的配置
  17. 数字领航 科技赋能 | 优锘科技与新华三强强联手加速智慧医院可视化进程!ThingJS
  18. 知乎、百度会被ChatGPT取代吗?百度文心一言胜算如何
  19. JS---如何避免用户在请求时“猛击”
  20. Verilog语法-模块module[Day2学习笔记]

热门文章

  1. 以太坊开发入门,如何搭建一个区块链DApp投票系统
  2. DIY JavaAPI CHM文档
  3. Linux cpu 占用率高问题查询
  4. Unity工程3D和2D开发模式切换
  5. 第二阶段冲刺 NO.2
  6. 结构体数组(C++)
  7. Windows7无法访问(远程登录)Windows 2003共享问题解决
  8. Java高级面试题解析(二):百度Java面试题前200页(精选)
  9. C++学习(三)(C语言部分)之 基本数据类型
  10. 转:gcc编译C++程序