首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Pygame 第3课】 游戏中的事件

上次课讲了游戏最根本的框架,说到在每次循环中会接收玩家的操作。这是游戏中很重要的一个环节--事件响应。 玩家的操作会触发程序中的事件,常见的事件包括:关闭程序、按下键盘、移动鼠标、按下鼠标等等。...今天我们挑其中一个来举例说明:“鼠标按下”事件(MOUSEBUTTONDOWN)。...pygame.event.get()会接收所有程序中的事件。当判断这个事件是一个关闭程序(QUIT)的事件时,就将程序关闭。 现在,我们要增加一个事件响应:当玩家点击了鼠标之后,就换一张背景图。...在for循环中新增一段if语句: if event.type == pygame.MOUSEBUTTONDOWN: #接收到鼠标按下事件后更换背景 background = pygame.image.load...不过点击了一次之后,背景就不会再变了。而实际上,在你每次点击的时候,程序都会去读取一遍bg2.jpg,这是没有必要。

1.3K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ❤️ 如何在 Pygame 中移动你的游戏角色 ❤️

    您可以使用 pygame 创建不同类型的游戏,包括街机游戏、平台游戏等等。 使用的图像: 你可以控制玩家的移动。...() 输出: 玩家也可以连续移动。...('玩家移动') # 初始化时钟 时钟用于跟踪和控制游戏的帧速率 clock = pygame.time.Clock() # 添加玩家精灵 image = pygame.image.load(r'haiyong.png...例如,如果我们想在玩家改变移动方向时翻转精灵,那么我们可以使用下面的代码 window.blit(pygame.transform.flip(image, False, True), (x,y)) flip...时钟用于跟踪和控制游戏的帧速率 clock = pygame.time.Clock() # 创建一个变量来检查运动方向 # 每当玩家改变方向时,我们就会改变它的值 direction = True

    2.4K21

    Python小游戏--外星人大战(一)

    下面对这款游戏的细节做下简单的概述: 你要了解的: 本游戏使用的是Pygame模块,对于某些API(比如名称设置--"pygame.display.set_caption('我是游戏名')")的调用不会进行分享...游戏的主人翁:飞船、子弹、外星人 最基本的三个类:ship、bullet、alien(考虑各个类的属性和方法,对类进行合适的封装)还有一个必不可少的类:alien_invasion(控制游戏的运行) 玩法:玩家按下键盘上的左右按钮控制飞船的左右移动...,通过按下空格发射子弹,击杀外星人,随着玩家分数和等级的提高,外星人和飞船的速度会越来越快,若飞船移动到了屏幕底端或和飞船相撞,则玩家损失一次机会,玩家总共有三次机会,在这三次机会全部用完时,玩家的所有数据会被清空...:各类(外星人、子弹、子弹移动方向)等的基本属性的设置 ship.py:飞船移动、重绘等的设置 游戏思路分析: 现在的需求很简单:玩家按下左右键控制飞船在屏幕限定范围水平内移动,按下空格键发射子弹击杀外星人...要求:(游戏开始后) 点击Play按钮开始游戏,按下键盘上的Q键退出游戏 外星人按照S形从屏幕上方开始向底部运动,且随着用户得分和等级的提高运动速度越来越快 飞船一次发射的子弹控制在10个以内,且只能在屏幕范围内进行移动

    97930

    手把手教你用Python改造一款外星人入侵小游戏

    (书中说是飞船)左右移动并射击僵尸 2.僵尸群固定3排,固定数量,固定间距生成,不会随着关卡升级而变化 3.玩家有3条生命,左上角代表剩余生命,被僵尸群碰到或尸群到达屏幕底部则生命-1 4.玩家每次射击都要按一下射击键...醒目亮眼的UI界面 通过精心设计的登录封面,游戏取名星际前线,并达到如下效果: 此登录界面支持鼠标点击开始游戏按钮即开始游戏,鼠标点击或按下键盘s键可进入/退出积分商城,鼠标点击联系我们可以看到作者信息...怪物移动速度与关卡有关,关卡越高,前进速度越快,但设置了一个速度上限。 怪物以一定概率在一个身位内瞬移移动,可以闪避飞船的子弹。...BOSS嘛,不抗揍怎么当老大? 我在游戏中设置了丰富的地图,每10关切换一个场景。 BOSS的安排遵循每5关一小boss,每10关一大BOSS的规律,让玩家尽情体验激战。...右上角是钻石,顾名思义,是属于氪金大佬和少数精英玩家的稀缺资源。 鼠标移动到对应商品上会显示半透明的简介,名称,价格,类别和功能。

    82930

    如何用 Python 打飞机 ?

    先送上一波效果图(被压缩的时间略短) 效果图 游戏简介 :在游戏《外星人入侵》中 ,玩家控制着一艘最初出现在屏幕底部中央的飞船 。玩家可以使用箭头键左右移动飞船 ,还可使用空格键进行射击 。...游戏开始时 ,一群外星人出现在天空中 ,他们在屏幕中向下移动 。玩家的任务是射杀这些外星人 。玩家将所有外星人都消灭干净后 ,将出现一群新的外星人 ,他们移动的速度更快 。...当项目中有许多类具有相同的基本属性时 ,可以考虑将这些基本属性抽象为一个父类 ,子类通过继承父类而拥有父类中的数据和方法 ,这会提高代码的可读性 ,也省去很多重复的代码 。...bullet import Bullet def check_keydown_events(event,ship,game_settings,screen,bullets): """ 按下键盘事件...bullets.remove(bullet) # 注释掉,调试用,耗时 # print(len(bullets)) settings.py配置文件 将常量变量继承在配置文件中 ,当需要修改常量提高游戏体验时

    2.2K61

    手把手教你使用Python开发飞机大战小游戏,4万字超详细讲解!

    控制小飞机 通过修改小飞机的坐标来完成移动,在用户按下方向键的时候小飞机的坐标进行有规律的变化 控制小飞机移动 当用户按键时,都会在pygame中注册一个事件,任何一个事件都是通过pygame.event.get...现在将check_events函数改写,通过检测按下键位,来对小飞机进行移动 ?...现在按一下小飞机移动一个像素,一般的游戏都是通过按下不送则一直移动,Pygame中的pygame.KEYUP可以检测用户是否松开按键现在结合KEYDOWN和KEYUP来完成一个持续移动 控制小飞机持续移动...效果图 完成射击功能 通过玩家按下空格来发射子弹(一小小小的矩形) 添加子弹的设置 在settings.py中的__init__方法中添加以下数据 ?...现在就增加难度,当飞船碰到飞机、飞船到达地面时就要搞点事情了,不过也不能不给小飞机机会

    2.7K50

    Python 升级之路( Lv12 ) Pygame游戏开发基础

    中常用的事件 事件参数产生途径QUITnone用户按下关闭按钮ACTIVEEVENTgain, state激活或者隐藏Pygame KEYDOWNunicode, key, mod按下键KEYUPkey..., mod放开键MOUSEMOTIONpos, rel, buttons鼠标移动MOUSEBUTTONUPpos, button放开鼠标键MOUSEBUTTONDOWNpos, button按下鼠标键JOYBUTTONUPjoy...unicode:代表了按下键对应的 Unicode 值 实操代码 import pygame pygame.init() pygame.display.set_caption("处理键盘事件")...() 效果展示 实现动画 由于人类眼睛的特殊生理结构,当所看画面的帧率高于 24 的时候,就会认为是连贯的, 此现象称之为视觉暂留 ....,一个用来播放背景音乐: pygame.mixer.Sound(filename) 该方法返回一个 Sound 对象,调用它的.play( )方法,即可播放较短的音频文件(比如玩家受到伤害、收集到金币等

    1.5K10

    Easy Games With Python and Pygame(三)- Pygame Event

    ---- 我正在参加掘金社区游戏创意投稿大赛个人赛,详情请看:游戏创意投稿大赛” 一、Pygame Event 事件既发生的某件事,在Pygame中事件有移动或者点击鼠标、按下按键、松开按键或者是经过一定的时间等...只有有按键按下或者鼠标点击都会发生事件,这个事件会存储在队列中等待处理 键盘事件 键盘事件包括KEYUP和KEYDOWN,KEYUP表示松开键盘按键,KEYDOWN表示按下键盘按键,Escape是默认的退出键...() pygame.quit() 这段代码实现了一个外星人可以在窗口中不断的移动反弹 我们可以增加一个键盘事件处理器,当按下上方向键或者下方向键时外星人可以上下移动,也就是说需要检测KEYDOWN事件并且检测按键是上方向键还是下方向键...() 再次重新启动程序,使用上下方向键操作 但是这里还要一个问题,就是当持续按住下方向键时,外星人只会往下移动一次,我们期望的是当连续按下时,外星人可以连续移动,在Pygame中按键一直按下会生成多个...() 首先判断鼠标按键是否按下,只有鼠标按键按下时拖动鼠标外星人的位置才会随着鼠标移动。

    1.5K10

    童年游戏大回顾:飞机大战

    游戏机制: 飞机移动: 玩家通过键盘或触摸屏控制飞机的移动,可以是上下左右四个方向的移动。 发射子弹: 玩家可以按下特定的键或触摸屏幕来发射子弹,子弹向上飞行,与敌机碰撞时,敌机被击中。...敌机生成: 敌机会不断地从屏幕上方生成,并向下飞行,玩家需要及时躲避或击落敌机。 碰撞检测: 游戏需要实现碰撞检测机制,当玩家飞机与敌机或敌机的子弹发生碰撞时,游戏结束。...定义玩家飞机的初始位置和速度: 初始化玩家飞机的初始位置为窗口中间的水平位置,纵坐标为窗口底部。设置玩家飞机的移动速度。 定义敌机类: 创建了一个名为Enemy的类来表示敌机。...事件处理部分检测玩家的键盘输入,并根据按键移动玩家飞机或发射子弹。 敌机和子弹的移动和绘制是在游戏循环中进行的。 在循环中检查子弹是否击中敌机,如果击中,则销毁敌机和子弹,并生成新的敌机。...退出游戏: 当用户点击窗口关闭按钮时,退出游戏并关闭Pygame。 以上就是飞机大战游戏的基本逻辑。玩家可以通过上下左右键控制飞机移动,按空格键发射子弹。当子弹击中敌机时,敌机将被销毁并重新生成。

    47342

    Python 项目实践一(外星人入侵小游戏)第三篇

    驾驶飞船 下面来让玩家能够左右移动飞船: 1 相应按键 每当用户按键时,都将在Pygame中注册一个事件。...#向右移动飞船  ship.rect.centerx += 1 2 允许不断移动 玩家按住右箭头键不放时,我们希望飞船不断地向右移动,直到玩家松开为止。...飞船不动时,标志moving_right将为False。玩家按下右箭头键时,我们将这个标志设置为True;而玩家松开时,我们将这个标志重新设置为False。...我们将编写玩家按空格键时发射子弹(小矩形)的代码。子弹将在屏幕中向上穿行,抵达屏幕上边缘后消失。...我们无需修改check_keyup_events(),因为玩家松开空格键时什么都不会发生。我们还需修改update_screen(),确保在调用flip()前在屏幕上重绘每颗子弹。

    2.7K90

    用 Python 实现打飞机,让子弹飞吧!

    简单的说就是按下方向键的时候(w,a,s,d)飞机向四周移动,但是不能移动离开屏幕。 此时我们就应该把我们的飞机形成一个类,类里面有控制飞机的方法。...首先我们规定,按下空格发射子弹。 这样我们的子弹就会跟随飞机出现。 下一步就是让子弹在屏幕上移动。 创建移动的方法。 player 的飞机就算基本绘制好了 绘制敌机 下一步就是绘制敌机。...我们先进行一个测试 if pygame.sprite.collide_rect(enemy, player):print'检测成功' 结果 检测成功 此时我们就可以完成,当玩家和敌机发生碰撞,游戏结束,...执行结果 当玩家被击中的时候,在显示一张 GameOver 图片提示 做到这里基本算是实现了飞机大战.但是还有很多细节处理。...细节处理 精细的碰撞检测 从图上看,当敌机看似还没有和我们接触时,但是已经 GameOver 了。

    1.8K31
    领券