前言
本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将会逐步更新。
若有想学习的内容可以在评论区留言,根据大家的要求持续更新。点赞过十万就算化成灰我也更新下一篇。(肯定不到,也会更的。)
有问题也可以在评论区留言,也可以私聊我加我好友共同交流一起进步~
我的其它教程
教程点击进去将会有目录
《看聊天记录都学不会C语言?太菜了吧(1)我在大佬群里问基础问题没人理?——学习建议
《大学生C语言作业、习题100例白话详解》
目录
《看聊天记录都学不会Python到游戏实战?太菜了吧》python 写游戏好简单啊,我用键盘可以随意控制角色了【python 游戏实战 04】—— 键盘控制角色移动
《看聊天记录都学不会Python到游戏实战?太菜了吧》游戏角色开始动起来了,真帅!【python 游戏实战 03】—— 角色移动
《看聊天记录都学不会Python到游戏实战?太菜了吧》这是我第一次使用代码创建出一个窗口【python 游戏实战 02】—— 创建游戏场景
《看聊天记录都学不会Python到游戏实战?太菜了吧》这是我第一次使用代码创建出一个窗口【python 游戏实战 01】—— 创建窗口
《看聊天记录都学不会Python到游戏实战?太菜了吧》(12)python 的列表我从没想过会那么好用—— 列表
《看聊天记录都学不会Python到游戏实战?太菜了吧》(11)python里面while到底有多少知识点—— break continue
《看聊天记录都学不会Python到游戏实战?太菜了吧》(10)无底洞的循环—— 循环初窥
《看聊天记录都学不会Python到游戏实战?太菜了吧》(9)集万家之长不死 python—— 导包
《看聊天记录都学不会Python到游戏实战?太菜了吧》(8)我们开始做一个数字小游戏吧—— 数字游戏开始做 导包
《看聊天记录都学不会Python到游戏实战?太菜了吧》(7)我用函数写了个特洛伊木马—— 自定义函数
《看聊天记录都学不会Python到游戏实战?太菜了吧》(6)不会这个知识点代码越写越难—— and or 逻辑运算
《看聊天记录都学不会Python到游戏实战?太菜了吧》(5)用前朝的剑斩今朝的官——if…else
《看聊天记录都学不会Python到游戏实战?太菜了吧》(4)小白不知道这个知识点将会错漏百出——if 与 层级
《看聊天记录都学不会Python到游戏实战?太菜了吧》(3)都说123是字符不是数字——输入与类型
《看聊天记录都学不会Python到游戏实战?太菜了吧》(2)在python中加号竟然如此善变——变量与运算
《看聊天记录都学不会Python到游戏实战?太菜了吧》(1)装载Python神器!亮剑!——helloworld
作者简介
作者名:1_bit
简介:CSDN博客专家,2020年博客之星TOP5,蓝桥签约作者。15-16年曾在网上直播,带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息,迷茫的你会找到答案。
博客地址:https://i1bit.blog.csdn.net
🐰小C:小媛,上一节创建了一个黑框框开不开心?
👸小媛:开…不,不开心,才创建一个黑框框我能有啥开心的。
🐰小C:话不能这样说,毕竟你已经开始可以创建一个黑框框了。
👸小媛:不不不,不做完游戏我不开心。
🐰小C:行,那这一节就让你创建一个场景吧。
👸小媛:赶紧的,我觉得你是在想水字数才说那么多的话。
🐰小C:毕竟学习这种枯燥的技术要给大家营造一种轻松的氛围嘛。
👸小媛:赶紧吧,我等着了。
🐰小C:首先我们把上一节的等待给加一下。在游戏中,等待其实是有一个主循环,一直对游戏中发生的事情进行监听。
👸小媛:所以我们就是需要在下面价格循环哟?
🐰小C:是的,我们在下面添加一个 while 循环,这个 while 循环内一直对游戏的事件进行监听,这样我们就知道用户做了什么事情,例如用户按下了什么键。
👸小媛:明白,请继续。
🐰小C:我们在循环中需要一直获取游戏中发生的事件,这个时候可以使用一个一个方法 pygame.event.get()
。pygame 中使用 event 属性调用 get 方法可以获取一个列表,这个列表的内容为这个游戏中所发生的事件集。我们通过一个 for 循环对这个列表进行遍历,此时根据当前列表已经遍历出来的元素做判断,若是用户点击了窗口的右上角叉叉进行退出,我们就给一个退出响应即可。
👸小媛:那怎么做呢?
🐰小C:你看下面的代码。
import pygamepygame.init()
screen=pygame.display.set_mode((600,800))
pygame.display.set_caption("这是一个飞机游戏")
icon=pygame.image.load(r'E:\2dsrc\src\img\hero1.png')
pygame.display.set_icon(icon)
#游戏主循环
while True:#事件遍历for event in pygame.event.get():if event.type==pygame.QUIT:exit()
👸小媛:你意思是说主循环我们直接使用 True 作为条件就好了,然后在主循环内有一个 for 循环用来遍历 pygame 游戏中的事件?那 for 循环中的代码是什么意思呢?
🐰小C:里面其实就是用 if 判断已经遍历到的元素 event 的类型,也就是判断 type 属性是否等于 pygame 中的 QUIT 退出。pygame 中的 QUIT 就表示一个退出的意思,如果是这个事件点击到了有关退出的按钮,那么就执行 exit()。exit() 可退出整个程序。
👸小媛:唔,我懂了,我运行出来了。但是是一个黑屏幕我想加一个游戏场景怎么办?
🐰小C:很简单,我们使用 screen 对象调用 blit 方法 screen.blit()
。在这个方法中第一个传入的是图片参数,第二个传入的是要从哪里开始绘制的坐标。
👸小媛: 那图片怎么获得呢?
🐰小C:直接使用 pygame.image.load()
就可以了,就跟你之前用来设置图片获取的图片一样,但是要注意,我们需要把图片绘制放到主循环中,因为为了保持有动画效果每一帧都需要进行绘制新的内容,就跟你那个画在书上的小人动画一样,代码如下。
import pygamepygame.init()
screen=pygame.display.set_mode((600,800))
pygame.display.set_caption("这是一个飞机游戏")
icon=pygame.image.load(r'E:\2dsrc\src\img\hero1.png')
bg=pygame.image.load(r'E:\2dsrc\src\img\bg.png')
pygame.display.set_icon(icon)
#游戏主循环
while True:#事件遍历for event in pygame.event.get():if event.type==pygame.QUIT:exit()screen.blit(bg,(0,0))
👸小媛:那个 0,0 意思就是表示在左上角开始从头绘制是吧?
🐰小C:是的,其实哪一个代码少了一个很关键的内容你知道是啥吗?
👸小媛:我。。。忘记了。
🐰小C:少了一个屏幕更新,我们应该在每次循环的时候都应该刷新屏幕,因为我们每次都需要绘制一些游戏元素到这个窗口中。
import pygamepygame.init()
screen=pygame.display.set_mode((600,800))
pygame.display.set_caption("这是一个飞机游戏")
icon=pygame.image.load(r'E:\2dsrc\src\img\hero1.png')
bg=pygame.image.load(r'E:\2dsrc\src\img\bg.png')
pygame.display.set_icon(icon)
#游戏主循环
while True:#事件遍历for event in pygame.event.get():if event.type==pygame.QUIT:exit()screen.blit(bg,(0,0))pygame.display.update()
👸小媛:我点了右上角后确实退出了,贼棒。