() 二 驾驶飞船 下面来让玩家能够左右移动飞船: 1 相应按键 每当用户按键时,都将在Pygame中注册一个事件。...检测pygame.KEYUP事件,以便玩家松开右箭头键时我们能够知道这一点;然后,我们将结合使用KEYDOWN和KEYUP事件,以及一个名为moving_right的标志来实现持续移动。...函数check_events()检测相关的事件,如按键和松开,并使用辅助函数check_keydown_events()和check_keyup_events() 来处理这些事件。...sys.exit() elif event.type == pygame.KEYDOWN : check_keydown_events(event,ai_settings...,screen,ship,bullets) #check_keydown_events(event,ship) elif event.type == pygame.KEYUP
只有有按键按下或者鼠标点击都会发生事件,这个事件会存储在队列中等待处理 键盘事件 键盘事件包括KEYUP和KEYDOWN,KEYUP表示松开键盘按键,KEYDOWN表示按下键盘按键,Escape是默认的退出键...() pygame.quit() 这段代码实现了一个外星人可以在窗口中不断的移动反弹 我们可以增加一个键盘事件处理器,当按下上方向键或者下方向键时外星人可以上下移动,也就是说需要检测KEYDOWN事件并且检测按键是上方向键还是下方向键...() 再次重新启动程序,使用上下方向键操作 但是这里还要一个问题,就是当持续按住下方向键时,外星人只会往下移动一次,我们期望的是当连续按下时,外星人可以连续移动,在Pygame中按键一直按下会生成多个...是告诉pygane在开始按键重复之前等待多长事件,interval是告诉pygame以多块的速度重复,也就是说重复的各个KEYDOWN事件之间要间隔多长时间,单位都是毫秒 Pygame Event 处理...QUIT KEYDOWN KEYUP MOUSEMOTION MOUSEBUTTONUP MOUSEBUTTONGDOWN pygame还给键盘中的按键做了命名,这些都在pygame.locals中,
pygame.KEYDOWN: 2 if event.key == pygame.K_RIGHT: #向右移动飞船 3 ship.rect.centerx += 1 我们在函数check_events...我们将让游 戏检测pygame.KEYUP事件,以便玩家松开右箭头键时我们能够知道这一点;然后,我们将结合使 用KEYDOWN和KEYUP事件,以及一个名为moving_right的标志来实现持续移动。...= True 2 elif event.type == pygame.KEYUP: if event.key == pygame.K_RIGHT: ship.moving_right = False...= True elif event.key == pygame.K_LEFT: ship.moving_left = True elif event.type == pygame.KEYUP:...= False 如果因玩家按下K_LEFT键而触发了KEYDOWN事件,我们就将moving_left设置为True;如果因 玩家松开K_LEFT而触发了KEYUP事件,我们就将moving_left
elif event.type == pygame.KEYDOWN: #键盘按下事件 check_keydown_events(event, ship) elif...event.type == pygame.KEYUP: #键盘松开事件 check_keyup_events(event, ship) def update_screen...练习题: 1.火箭上下左右移动 ? 2.创建一个程序,显示一个空屏幕。在事件循环中,每当检测到 pygame.KEYDOWN 事件时都打印属性event.key。...() #屏幕刷新显示出来 if pygame.event.poll().type == pygame.KEYUP: #键盘松开...sys.exit() elif event.type == pygame.KEYDOWN: #键盘按下事件 check_keydown_events(event
被激活或者隐藏 gain, state KEYDOWN 键盘被按下...unicode, key, mod KEYUP 键盘被放开 key, mod MOUSEMOTION...被激活或者隐藏 gain, state 11 KEYDOWN 键盘被按下...unicode, key, mod 12 KEYUP 键盘被放开 key, mod 13 MOUSEMOTION...elif event.key == K_DOWN: 61 move_y = 10 62 elif event.type == KEYUP
() sys.exit() 3.键盘事件 键盘事件包括最典型的keyup 和 keydown 当按键按下的时候响应KEYDOWN事件,按键弹起的时候响应KEYDOWN...通常可以设置一个事件变量,然后根据keyup或者keydown给它赋不同的值。...) elif event.type == KEYDOWN: key_flag = True elif event.type == KEYUP:...elif event.type == KEYDOWN: 32 key_flag = True 33 elif event.type == KEYUP: 34...().利用这个函数可以读取鼠标的相对移动。
控制小飞机移动 当用户按键时,都会在pygame中注册一个事件,任何一个事件都是通过pygame.event.get()获取的,因此可以在函数体内,为每个按键都注册一个KEYDOWN事件。...# 小飞机往又移动 plane.rect.centerx += 1 现在按一下小飞机移动一个像素,一般的游戏都是通过按下不送则一直移动,Pygame中的pygame.KEYUP...可以检测用户是否松开按键 现在结合KEYDOWN和KEYUP来完成一个持续移动 控制小飞机持续移动 来定义一个标志位,来判断用户是否按下按键,默认为Flase一旦检测到用户按下俺家则为True,小飞机就可以持续移动...== pygame.KEYDOWN: check_keydown_events(event, plane) elif event.type == pygame.KEYUP...elif event.type == pygame.KEYUP: check_keyup_events(event, plane) def update_screen(screen
12.6.6 重构 check_events() 随着游戏开发的进行,函数check_events()将越来越长,我们将其部分代码放在两个函数中: 一个处理KEYDOWN事件,另一个处理KEYUP事件...: game_functions.py def check_keydown_events(event, ship): """响应按键""" if event.key == pygame.K_RIGHT...(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: check_keydown_events...(event, ship) elif event.type == pygame.KEYUP: check_keyup_events(event, ship) 我们创建了两个新函数:check_keydown_events...函数 check_events()检测相关的事件,如按键和松开,并使用辅助函数check_keydown_events()和 check_keyup_events()来处理这些事件。
上一个程序,会一直运行下去,直到你关闭窗口而产生了一个QUIT事件,Pygame会接受用户的各种操作(比如按键盘,移动鼠标等)产生事件。...下表是一个 常用事件集: 事件 产生途径 参数 QUIT 用户按下关闭按钮 none ATIVEEVENT Pygame被激活或者隐藏 gain, state KEYDOWN 键盘被按下 unicode..., key, mod KEYUP 键盘被放开 key, mod MOUSEMOTION 鼠标移动 pos, rel, buttons MOUSEBUTTONDOWN 鼠标按下 pos, button MOUSEBUTTONUP...处理键盘事件 键盘和游戏手柄的事件比较类似,为KEYDOWN和KEYUP,下面有一个例子来演示使用方向键移动一些东西。...== QUIT: exit() if event.type == KEYDOWN: #开始检测,是否按键下面的很直观就是表现移动值
安装pygame并创建能左右移动的飞船 安装pygame 本人电脑是windows 10、python3.6,pygame下载地址:传送门 请自行下载对应python版本的pygame 运行以下命令...响应按键 因为在pygame中,每次按键都被注册为KEYDOWN事件,在check_events()中,我们通过event.type检测到KEYDOWN事件后还需进一步判断是哪个按键。...= pygame.KEYUP: if event.key = pygame.K_RIGHT: ship.moving_right = False 最后在alien_invasion中调用update...重构 这里我们主要讲check_events()函数进行重构,将其中部分代码分成两部分,一部分处理KEYDOWN事件,一部分处理KEYUP事件。...() elif event.type == pygame.KEYDOWN: check_keydown_events(event,ship) elif event.type == pygame.KEYUP
安装pygame并创建能左右移动的飞船 安装pygame 本人电脑是windows 10、python3.6,pygame下载地址:传送门 请自行下载对应python版本的pygame 运行以下命令...响应按键 因为在pygame中,每次按键都被注册为KEYDOWN事件,在check_events()中,我们通过event.type检测到KEYDOWN事件后还需进一步判断是哪个按键。...= True elif event.type == pygame.KEYUP: if event.key = pygame.K_RIGHT: ...重构 这里我们主要讲check_events()函数进行重构,将其中部分代码分成两部分,一部分处理KEYDOWN事件,一部分处理KEYUP事件。 ...: check_keydown_events(event,ship) elif event.type == pygame.KEYUP: check_keyup_events
5.多重继承使用不当会导致重复调用(也叫钻石继承、菱形继承)的问题,请分析以下代码在实际编程中有可能导致什么问题?...多继承容易导致重复调用问题,上例中实例化D类后A被前后进入了两次。 >>> d = D() 进入D... 进入B... 进入A... 离开A... 离开B... 进入C... 进入A......这次写了一个外星人飞船游戏,上下左右键控制移动,空格键发射炮弹,后续还会继续改进。 ?...(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN...== pygame.KEYUP: check_keyup_events(event, ship) def update_screen(ai_settings, screen
# 小飞机往又移动 plane.rect.centerx += 1 现在按一下小飞机移动一个像素,一般的游戏都是通过按下不送则一直移动,Pygame中的pygame.KEYUP...可以检测用户是否松开按键 现在结合KEYDOWN和KEYUP来完成一个持续移动 控制小飞机持续移动 来定义一个标志位,来判断用户是否按下按键,默认为Flase一旦检测到用户按下俺家则为True,小飞机就可以持续移动...check_keydown_events(event, plane) elif event.type == pygame.KEYUP: check_keyup_events...elif event.type == pygame.KEYUP: check_keyup_events(event, plane) def update_screen(screen...elif event.type == pygame.KEYUP: check_keyup_events(event, plane) elif event.type
玩家可以使用箭头键左右移动飞船 ,还可使用空格键进行射击 。游戏开始时 ,一群外星人出现在天空中 ,他们在屏幕中向下移动 。玩家的任务是射杀这些外星人 。...();事件键pygame.K_RIGHT pygame.K_LEFT pygame.K_SPACE 事件类型pygame.KEYDOWN pygame.KEYUP import pygame import...sys from bullet import Bullet def check_keydown_events(event,ship,game_settings,screen,bullets):...: sys.exit() elif event.type == pygame.KEYDOWN: check_keydown_events(...event,ship,game_settings,screen,bullets) elif event.type == pygame.KEYUP: check_keyup_events
除此基本参数外,还可以自己设置壁球移动的速度和距离。...(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT:...== pygame.KEYUP: speed = 2 在壁球运动过程中,要注意壁球与边界的关系,可以自己在纸上画一画它们的对应坐标,从而更改壁球移动的方向,以防止壁球出界。...(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT:...== pygame.KEYUP: speed = 2 while True: for event in pygame.event.get():
elif event.type == pygame.KEYDOWN: check_keydown_events(event, ai_settings, screen, ship,...bullets) elif event.type == pygame.KEYUP: check_keyup_events(event, ship)...四 重置游戏,将按钮切换到非活动状态以及隐藏光标 前面编写的代码只处理了玩家第一次单击Play按钮的情况,而没有处理游戏结束的情况,因为没有重置导致游戏结束的条件。...elif event.type == pygame.KEYDOWN: check_keydown_events(event, ai_settings, screen, ship,...bullets) elif event.type == pygame.KEYUP: check_keyup_events(event, ship)
pygame键盘事件操作 ✕ 什么是事件呢?按下键盘某个按键,鼠标移动,包括点击关闭按钮都可以算是事件操作。 ?...我们来说下键盘操作 elif event.type == pygame.KEYDOWN : if event.key == pygame.K_UP: y -= 1 在事件中判断类型是否是...pygame.KEYDOWN 判断键位是否是我们需要的那个键位 执行对应的操作 但是上面这中操作有个问题就是,我们每次按下这个键之后只能执行一次操作; 我们要移动对象的时候想要按下后连续移动,...按下和释放键盘按钮时,事件队列获取pygame.KEYDOWN和pygame.KEYUP事件。两个事件都有一个键属性,它是表示键盘上每个键的整数ID。...pygame.KEYDOWN。该属性text包含输入。 有许多键盘常量,它们用于表示键盘上的键。
注意 如果在循环内部创建这样的编组,游戏运行时将创建数千个子弹编组,导致游戏慢得像 蜗牛。如果游戏停滞不前,请仔细查看主while循环中发生的情况。...我们无需修改check_keyup_events(),因为玩家松开空格键时什么都不会发生。我们 还需修改update_screen(),确保在调用flip()前在屏幕上重绘每颗子弹。...(): --snip-- elif event.type == pygame.KEYDOWN: check_keydown_events(event, ai_settings, screen, ship...如果此时运行alien_invasion.py,将能够左右移动飞船,并发射任意数量的子弹。子弹在屏 幕上向上穿行,抵达屏幕顶部后消失,如图12-3所示。...;如何在屏幕上绘制图像, 以及如何让玩家控制游戏元素的移动;如何创建自动移动的元素,如在屏幕中向上飞驰的子弹, 以及如何删除不再需要的对象;如何定期重构项目的代码,为后续开发提供便利。
in (QUIT,KEYDOWN):#当有按键按下去和点关闭 #event.type和QUIT,KEYDOWN都是代表一个数字,这里表示这个数字在这个元组的范围里 sys.exit()#这个进程,系统就会退出...() Pygame--圆形与移动矩形绘制 aaline(...)...]) #其他绘制也同理 pygame.display.update() 图形移动 #要使用必先导入 import pygame #导入pygame中的所有常量 from pygame.locals...() Pygame--PyGame事件 [image.png] [image.png] 常见事件类型 QUIT none KEYDOWN unicode, key, mod KEYUP key...[image.png] [image.png] #QUIT,KEYDOWN,KEYUP,MOUSEBUTTONDOWN,MOUSEBUTTONUP #实时事件循环 # for event in pygame.event.get
领取专属 10元无门槛券
手把手带您无忧上云