pygame游戏编程入门控制角色移动,编程入门先学什么,
pygame游戏编程入门控制角色移动,编程入门先学什么,
在上一节中我们知道了事件,以及如何捕捉键盘事件进行响应,本届我们结合第一节何上一节的内容,做一个用键盘控制角色移动的功能,代码如下:
#!/usr/bin/env python#指定图像文件名称background_image_filename = './img/Underwater.png'mouse_image_filename = './img/octopus.png'#导入pygame库import pygame#导入一些常用的函数和常量from pygame.locals import *#向sys模块借一个exit函数用来退出程序from sys import exit#初始化pygame,为使用硬件做准备pygame.init() #创建了一个窗口screen = pygame.display.set_mode((960, 720), 0, 32)#设置窗口标题pygame.display.set_caption("海底世界")#加载并转换图像background = pygame.image.load(background_image_filename).convert()kcursor = pygame.image.load(mouse_image_filename).convert_alpha()#游戏主循环x, y = 0, 0move_x, move_y = 0, 0while True: for event in pygame.event.get(): if event.type == QUIT: exit() if event.type == KEYDOWN: #键盘有按下? if event.key == K_LEFT: #按下的是左方向键的话,把x坐标减一 move_x = -1 elif event.key == K_RIGHT: #右方向键则加一 move_x = 1 elif event.key == K_UP: #类似了 move_y = -1 elif event.key == K_DOWN: move_y = 1 elif event.type == KEYUP: #如果用户放开了键盘,图就不要动了 move_x = 0 move_y = 0 #计算出新的坐标 x+= move_x y+= move_y screen.fill((0,0,0)) screen.blit(background, (0,0)) screen.blit(kcursor, (x,y)) #在新的位置上画图 pygame.display.update()
当我们运行这个程序的时候,按下方向键就可以把章鱼移动,但是等等!为什么我只能按一下动一下啊……
因为KEYDOWN事件只有在你按下键的那一刻才发生一次,也就是for循环需要有事件发生才会再次执行,你可以试试在按下方向键不松开的时候不停的移动鼠标,这时候章鱼就会一直移动了。
啊??这么麻烦,怎么修改呢?
因为当你按下按键的时候变量值已经进行了修改,所以只需要把计算新坐标后面的代码缩进调整一下,放在跟for循环并列的位置,这样事件发生只会修改坐标的变化数据,不断更新坐标的任务就在while循环里执行了。
修改后的代码;
#!/usr/bin/env python#指定图像文件名称background_image_filename = './img/Underwater.png'mouse_image_filename = './img/octopus.png'#导入pygame库import pygame#导入一些常用的函数和常量from pygame.locals import *#向sys模块借一个exit函数用来退出程序from sys import exit#初始化pygame,为使用硬件做准备pygame.init() #创建了一个窗口screen = pygame.display.set_mode((960, 720), 0, 32)#设置窗口标题pygame.display.set_caption("海底世界")#加载并转换图像background = pygame.image.load(background_image_filename).convert()kcursor = pygame.image.load(mouse_image_filename).convert_alpha()#游戏主循环x, y = 0, 0move_x, move_y = 0, 0while True: for event in pygame.event.get(): if event.type == QUIT: exit() if event.type == KEYDOWN: #键盘有按下? if event.key == K_LEFT: #按下的是左方向键的话,把x坐标减一 move_x = -1 elif event.key == K_RIGHT: #右方向键则加一 move_x = 1 elif event.key == K_UP: #类似了 move_y = -1 elif event.key == K_DOWN: move_y = 1 elif event.type == KEYUP: #如果用户放开了键盘,图就不要动了 move_x = 0 move_y = 0 #计算出新的坐标 x+= move_x y+= move_y screen.fill((0,0,0)) screen.blit(background, (0,0)) screen.blit(kcursor, (x,y)) #在新的位置上画图 pygame.display.update()
本站内容未经许可,禁止任何网站及个人进行转载。
相关内容
- 一种简单而智能的方法:Python也能进行面部识别,智能
- 你知道Python有内置数据库吗?Python内置库SQlite3使用指南
- Python中有趣的Ellipsis对象,
- 通过VSCode RTOS插件使用Python为物联网系统编写程序,
- 5分钟内搭建你的第一个Python聊天机器人,
- Ubuntu18.04安装Python3.6.8,,Ubuntu18.0
- 如何使用Python构建简单的UI?,构建是什么
- 如果连这10个Python缩写都不知道,那你一定是Python新手
- python opencv加水印 去水印,ps去掉水印不影响原图,收到
- 对比Excel,怎么用Python获取指定月最后一天的日期,
评论关闭