前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >游戏开发如此简单?我直接创建了一个游戏场景【python 游戏实战 02】

游戏开发如此简单?我直接创建了一个游戏场景【python 游戏实战 02】

作者头像
1_bit
发布2022-01-06 09:04:35
5920
发布2022-01-06 09:04:35
举报
文章被收录于专栏:我的知识小屋

前言

本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将会逐步更新。

若有想学习的内容可以在评论区留言,根据大家的要求持续更新。点赞过十万就算化成灰我也更新下一篇。(肯定不到,也会更的。)


作者简介

作者名: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:你看下面的代码。

代码语言:javascript
复制
import pygame

pygame.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() 就可以了,就跟你之前用来设置图片获取的图片一样,但是要注意,我们需要把图片绘制放到主循环中,因为为了保持有动画效果每一帧都需要进行绘制新的内容,就跟你那个画在书上的小人动画一样,代码如下。

代码语言:javascript
复制
import pygame

pygame.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:少了一个屏幕更新,我们应该在每次循环的时候都应该刷新屏幕,因为我们每次都需要绘制一些游戏元素到这个窗口中。

代码语言:javascript
复制
import pygame

pygame.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()

👸小媛:我点了右上角后确实退出了,贼棒。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/04/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 作者简介
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档