更多python相关的实战小项目以及学习资源,可关注微信公众号:noobcoders ,定期分享python学习笔记以及实战小项目,并附带详细的代码。
今天,给大家分享的是一个学习完python后的一个初级练习项目,飞机大战游戏,相信若干年前,很多人在微信上都有玩过。后面一段时间,我会将飞机大战游戏作为一个系列笔记,分期连续更新。首先放一张效果图
学习目标
a、强化面向对象编程的代码设计思路
b、学会使用pycharm进行小游戏开发
然后,本次推文飞机大战游戏(一)的学习目标主要是学会pygame模块的一些基本的方法,为后面做好准备。主要包括:
1、了解飞机大战游戏项目的坐标系
2、学会建立本次游戏项目的主窗口
3、学会本次项目中的图像绘制
实验前准备
在这次练习中,我们需要使用到pygame模块,python解释器还是python2.7版本的。由于官方只提供32位的pygame模块,如果你安装的python版本是32位的,那就可以直接安装官方提供的,如果我们需要安装64位的,就需要第三方库的pygame模块,具体链接是:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame
(长按,选择复制,在浏览器中打开)
详细安装方法的链接是:https://blog.csdn.net/xzgwz521/article/details/63684343
(长按,选择复制,在浏览器中打开)
动手演练
一、理解飞机大战游戏中的坐标系
* x 轴正半轴,水平向右
* y 轴负半轴,垂直向下
* 坐标原点位于左上角(0,0)
在游戏环境当中,所有的元素都是以矩形来确定位置的。而pygame 模块提供了一个类pygame.Rect 专门用于描述矩形区域,
pygame.Rect(x, y, width, height)
其中 x和y 描述的是矩形区域的起始坐标,width对应宽度,height对应高度。此外这个类还有一些其他方法,例如:size, left, center,top等一些实用方法,可以自己尝试一下 。
二、创建游戏主窗口
主要使用pygame库中的pygame.display模块,这个模块主要用于创建和管理窗口
方法 | 说明 |
pygame.display.set_mode() | 显示游戏窗口 |
pygame.display.update() | 更新屏幕显示内容 |
其中 set_mode 方法:
set_mode(resolution = (0, 0), flags = 0,depth = 0)
* resolution 通过元组形式指定屏幕的宽和高
* flags 指定屏幕的附加选项,例如是否全屏等,默认不需要传递
* depth 表示颜色的位数,默认自动匹配
提示 使用时必须定义一个变量来接收set_mode方法的返回结果
使用该方法创建飞机大战游戏主窗口:
# 创建游戏窗口
game_screen = pygame.display.set_mode((480, 700))
三、飞机大战游戏中的图像绘制
由于游戏的图像文件是保存在磁盘上的,所以使用时必须先加载到内存,因此要想在上面所创建的游戏主窗口中看到图像内容,需要按以下步骤来进行:
第1步:利用 pygame.image.load( ) 方法加载图像内容
第2步:利用 blit 方法将加载的图像放到指定位置
第3步:利用 pygame.display.update( ) 方法更新屏幕所显示的内容
接下来,利用以上步骤,我们来绘制飞机大战游戏背景图像和游戏角色hero图像,代码如下:
# 绘制游戏背景
background = pygame.image.load("./image/background.png")
game_screen.blit(background, (0, 0))
# 绘制hero图像到游戏窗口
hero = pygame.image.load("./image/me1.png")
game_screen.blit(hero, (200, 500))
pygame.display.update()
最终显示效果如下:
另外,飞机大战游戏所使用到的图像素材包百度云链接是:
https://pan.baidu.com/s/1hPA-jiiePjI7GCLHv5jw7g 图像素材需要放到所创建的工程下的目录当中
更多python相关的实战小项目以及学习资源,可关注微信公众号:noobcoders ,定期分享python学习笔记以及实战小项目,并附带详细的代码。