Pygame实现游戏最小系统功能详解
作者:热爱科技的刘同学
前言
“我有一个梦想,那就是有生之年做出一款属于自己的游戏。”
不知道屏幕前的你是否曾经有和我一样的想法,总觉得市面上的游戏不完全符合你的胃口,想要自己开发出一款属于自己的独有的游戏。
此时,如果你正好学了Python,那么你的机会来了,python也是可以做游戏的!本篇文章将介绍Python一个非常有趣又功能强大库,它所拥有的模块几乎包含了2D游戏常用功能的实现,让你用Python也能开发出一款小型的2d游戏,它的名字就是—— pygame。
一、什么是pygame
Pygame是一个专门用来开发游戏的 Python 模块,主要为开发、设计 2D 电子游戏而生,具有免费、开源,支持多种操作系统,具有良好的跨平台性等优点。
Pygame它提供了诸多操作模块,比如图像模块(image)、声音模块(mixer)、输入/输出(鼠标、键盘、显示屏)模块等。简单来说,如果你使用pygame,理论上可以开发设计市面上所有的2d类型游戏(仅仅是理论上)。
但是,实际上,我学习pygame并不是说要用它来开发一款完美的游戏,pygame太过于底层,许多功能都要自己来封装实现。也许你用pygame开发一款超级玛丽时间,别人都能学会C#用unity开发和平精英了(夸张)。
那么既然如此,为什么还要来学它?
1.1 学习pygame的用处
Pygame适合小型2d游戏开发,比如于飞机大战、贪吃蛇、扫雷等,游戏越大,开发越困难。所以,学习pygame你可以复刻一款小时候玩的经典游戏,比如超级玛丽,魂斗罗之类的,然后更改一些游戏角色及内容,哄哄家里的弟弟妹妹(就是装X呗)。
更重要的一点,我希望你能够通过学习pygame深入理解python面向对象的思想,python面向对象是这门语言的精髓之一。掌握python面向对象的思想,也是你成功跨过python基础的标志之一,对于你后面选择的学习方向(web开发,自动化,爬虫等等)的入门非常有帮助。有了python面向对象的牢固基础,学习python高级的东西你会觉得也就那么回事,有一法破万法的效果。
当然,值得一提的是如果你真的对游戏开发感兴趣,又有python基础,那么通过pygame你可以初步了解关于游戏开发的一些基础知识,等到用pygame开发一两个小游戏,再来思考一下自己适不适合游戏开发,毕竟游戏开发的精髓都是相通的,那些高级游戏引擎只是把一些基础功能封装好了让你用,pygame只是需要你用自己的手去打造自己的工具箱。
1.2 pygame里的游戏世界
在讲解具体代码之前,还是要科普一些pygame里游戏的基础知识。
你印象中的2d游戏由哪些成分构成?首先要有一个窗口,它规定游戏画面占你的屏幕的尺寸大小,也可以设计游戏名字,背景等等。其次就是各种场景,一个游戏可以看做是由许多个场景组成的,比如超级玛丽的开始菜单场景,第一关,第二关等等。场景要有内容,比如背景,主角,敌人,子弹,物品(如超级玛丽的砖块等等)。
在后面就是主角与敌人或者其它对象的各种交互动作,如白色玛丽会发射子弹,踩到敌人压扁对方等等。最后则是贯穿场景的各种音效,声音等等。
二、pygame简单讲解
本篇文章不打算太深入pygame,旨在增加你对python的理解,以及吸引你对pygame游戏开发的一点点兴趣,或者你之前学过pygame但忘记了,希望本篇文章可以帮到你。如果你想要系统学习pygame,建议先看B站免费教程,然后自己通过官网深入学pygame。
废话不多说,我将通过自己初学时学的一个例子来让你实现pygame的初步入门。
2.1 安装pygame
pip install pygame
一直都是通过pycharm安装python第三方库,简直不要太爽.
2.2 游戏最小系统
什么是游戏最小系统(不知道有没有这个名词)?可以理解为游戏能够运行不报错的最小代码。
# 导入库 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()
到此这篇关于Pygame实现游戏最小系统功能详解的文章就介绍到这了,更多相关Pygame游戏系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!