14天学习训练营导师课程:
李宁《Python Pygame游戏开发入门与实战》
李宁《计算机视觉OpenCV Python项目实战》1
李宁《计算机视觉OpenCV Python项目实战》2
李宁《计算机视觉OpenCV Python项目实战》3
“我有一个梦想,那就是有生之年做出一款属于自己的游戏。”
不知道屏幕前的你是否曾经有和我一样的想法,总觉得市面上的游戏不完全符合你的胃口,想要自己开发出一款属于自己的独有的游戏。
此时,如果你正好学了Python,那么你的机会来了,python也是可以做游戏的!本篇文章将介绍Python一个非常有趣又功能强大库,它所拥有的模块几乎包含了2D游戏常用功能的实现,让你用Python也能开发出一款小型的2d游戏,它的名字就是—— pygame。
Pygame是一个专门用来开发游戏的 Python 模块,主要为开发、设计 2D 电子游戏而生,具有免费、开源,支持多种操作系统,具有良好的跨平台性等优点。
Pygame它提供了诸多操作模块,比如图像模块(image)、声音模块(mixer)、输入/输出(鼠标、键盘、显示屏)模块等。简单来说,如果你使用pygame,理论上可以开发设计市面上所有的2d类型游戏(仅仅是理论上)。
但是,实际上,我学习pygame并不是说要用它来开发一款完美的游戏,pygame太过于底层,许多功能都要自己来封装实现。也许你用pygame开发一款超级玛丽时间,别人都能学会C#用unity开发和平精英了(夸张)。
那么既然如此,为什么还要来学它?
Pygame适合小型2d游戏开发,比如于飞机大战、贪吃蛇、扫雷等,游戏越大,开发越困难。所以,学习pygame你可以复刻一款小时候玩的经典游戏,比如超级玛丽,魂斗罗之类的,然后更改一些游戏角色及内容,哄哄家里的弟弟妹妹(就是装X呗)。
更重要的一点,我希望你能够通过学习pygame深入理解python面向对象的思想,python面向对象是这门语言的精髓之一。掌握python面向对象的思想,也是你成功跨过python基础的标志之一,对于你后面选择的学习方向(web开发,自动化,爬虫等等)的入门非常有帮助。有了python面向对象的牢固基础,学习python高级的东西你会觉得也就那么回事,有一法破万法的效果。
当然,值得一提的是如果你真的对游戏开发感兴趣,又有python基础,那么通过pygame你可以初步了解关于游戏开发的一些基础知识,等到用pygame开发一两个小游戏,再来思考一下自己适不适合游戏开发,毕竟游戏开发的精髓都是相通的,那些高级游戏引擎只是把一些基础功能封装好了让你用,pygame只是需要你用自己的手去打造自己的工具箱。
在讲解具体代码之前,还是要科普一些pygame里游戏的基础知识。
你印象中的2d游戏由哪些成分构成?首先要有一个窗口,它规定游戏画面占你的屏幕的尺寸大小,也可以设计游戏名字,背景等等。其次就是各种场景,一个游戏可以看做是由许多个场景组成的,比如超级玛丽的开始菜单场景,第一关,第二关等等。场景要有内容,比如背景,主角,敌人,子弹,物品(如超级玛丽的砖块等等)。
在后面就是主角与敌人或者其它对象的各种交互动作,如白色玛丽会发射子弹,踩到敌人压扁对方等等。最后则是贯穿场景的各种音效,声音等等。
本篇文章不打算太深入pygame,旨在增加你对python的理解,以及吸引你对pygame游戏开发的一点点兴趣,或者你之前学过pygame但忘记了,希望本篇文章可以帮到你。如果你想要系统学习pygame,建议先看B站免费教程,然后自己通过官网深入学pygame。
废话不多说,我将通过自己初学时学的一个例子来让你实现pygame的初步入门。
pip install pygame
一直都是通过pycharm安装python第三方库,简直不要太爽.
什么是游戏最小系统(不知道有没有这个名词)?可以理解为游戏能够运行不报错的最小代码。
# 导入库
import pygame
# 初始化操作,游戏开始之前,运行该代码进行初始化
pygame.init()
# 创建游戏窗口,注意设置了window这个变量
window = pygame.display.set_mode((600,400))
# 设置游戏标题
pygame.display.set_caption('游戏最小系统')
# 给窗口设置背景颜色
window.fill((255,255,255))
运行上面代码你会发现左上角出现一个窗口,然后一闪即过,这是正常的。这里就要思考python代码的运行,通过执行上述代码,你创建了一个黑色窗口,但是当代码执行完会发生什么,当然是python自动退出了。所以你要使用一定的方法不让代码结束运行,这就要添加“死循环”了,这很好理解,while true 会一遍又一遍的运行里面的代码而不退出。
# 保持游戏运行状态(游戏循环)
while True:
# 检测事件发生,先把事件全部拿过来,再看发生的是哪一件事。
for event in pygame.event.get():
# 检测关闭按钮被点击的事件
if event.type == pygame.QUIT:
# 如果按下屏幕里的X号就会退出
exit()
看到循环里面添加的for循环及if语句吗?它们有什么作用。由于循环会一直执行,里面的代码会一遍又一遍进行检测,所以在里面就可以有很多操作了。这就是之前提到的主角与敌人或其它物品的交互部分,代码会一直检测发生了什么事情,并作出反应,也包括开发游戏常说的碰撞检测。
所以结合上面,最小系统就出来了,它只是一个黑屏,但是它是游戏的基础框架。
import pygame
# 初始化操作
pygame.init()
# 创建游戏窗口
window = pygame.display.set_mode((600,400))
# 设置游戏标题
pygame.display.set_caption('游戏最小系统')
# 设置背景颜色
window.fill((255,255,255))
# ========游戏开始页面静态效果==========
# 保持游戏运行状态(游戏循环)
while True:
# ===========游戏帧的刷新===========
# 检测事件
for event in pygame.event.get():
# 检测关闭按钮被点击的事件
if event.type == pygame.QUIT:
# 退出
exit()