python方向键控制角色_用python和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, 0
move_x, move_y = 0, 0
while 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, 0
move_x, move_y = 0, 0
while 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和pygame游戏编程入门-控制角色移动相关推荐
- python弹球游戏绑定鼠标事件_用python和pygame游戏编程入门-弹球[鼠标控制]
本节我们再将鼠标的事件引入到这个动画中,要做什么呢?就是在动画中,如果按下鼠标左键,小球会停止移动,如果松开左键,小球会移动到鼠标的位置,然后继续刚才的运动:如果按下鼠标左键不放,移动鼠标,小球就会跟 ...
- python怎么窗口显示文字_用python和pygame游戏编程入门-显示文字
上一节我们通过键盘可以控制角色移动,如果要让角色说话,那就要用到文字显示.Pygame可以直接调用系统字体,或者也可以使用TTF字体,TTF就是字体文件,可以从网上下载.为了使用字体,你得先创建一个F ...
- python画图的模块_用python和pygame游戏编程入门-画图模块
在设计一个游戏时,有些时候你可以不加载任何图片,只是绘制一些图形来制作一个游戏. pygame.draw这个模块的作用是在屏幕上绘制各种图形. 函数 作用 rect 绘制矩形 polygon 绘制多边 ...
- python游戏使用教程_PYTHON游戏编程入门_IT教程网
资源名称:PYTHON游戏编程入门 内容简介: Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,在游戏开发领域,Python也得到越来越广泛的应用,并由此受到重视. 本书教授用Py ...
- python游戏编程入门-python游戏编程入门
<Python游戏编程入门> 这些文章负责整理在这本书中的知识点.注意事项和课后习题的尝试实现. 并且对每一个章节给出的最终实例进行分析和注释. 初识pygame:pie游戏 pygame ...
- python游戏编程入门 免费-python游戏编程入门 python游戏编程入门课
python游戏编程入门 python游戏编程入门课 什么是python游戏编程入门?首先我们需要认识什么是Python Python既是一个软件工具包,也是一种语言.Python软件包包含了一个名为 ...
- Python,美国顶尖大学里最受欢迎的编程入门语言
摘要 截止到目前,Python 已经成为目前美国顶尖大学里最受欢迎的计算机编程入门语言.计算机排名前 10 的学校里,有 8 所学校(80%)使用 Python 作为编程入门语言.在计算机排名前 39 ...
- 《Python游戏编程入门》——1.2 初识Python
本节书摘来自异步社区<Python游戏编程入门>一书中的第1章,第1.2节,作者[美]Jonathan S. Harbour ,李强 译,更多章节内容可以访问云栖社区"异步社区& ...
- 青少年Python游戏编程入门(Beginning Game Programming for Teens with Python译文)
青少年Python游戏编程入门 Beginning Game Programming for Teens with Python Julian Meyer on January 22, 2013 ...
最新文章
- 与张小龙同行:微信小程序开发
- node.js博客GitHub搭建(hexo)
- Elasticsearch kibana一些基本概念
- 插件~Nuget中包与包的依赖关系
- opencv学习笔记(六)直方图比较图片相似度
- 顺时针小球圆周运动Java编程_如何使用CSS实现圆周运动小球的实例
- 夺命雷公狗---ECSHOP---01-解决报错问题
- android源码灭屏时蓝牙自动配对
- 51单片机之串口通信详解及代码示例
- z世代消费力白皮书_2019 Z世代消费力白皮书,洞悉2.6亿年轻人消费倾向
- 集体的智慧:为什么SaaS打败企业软件?
- UVM—virtual sequencer and virtual sequence详解
- python如何转换图形_python绘图 转
- win7 装显卡驱动后只显示桌面背景 - 解法办法一例
- 简要描述CSS 中的定位机制。
- 1小时1篇文学会用python进行AI修复!
- IOS 判断iPhone刘海屏
- android10管理权限,Android 权限管理
- 推箱子一关简易劣质版
- 学校校园学生寝室管理查寝打分系统 毕业设计毕设源码毕业论文开题报告参考(4)网站和学生功能
热门文章
- activiti页面展示流程图乱码_activiti 5.17 流程图中文乱码问题
- 12.MYSQL高级(二)
- 谢撩,人在斯坦福打SoTA
- MoCoV3:何恺明团队新作!解决Transformer自监督训练不稳定问题!
- Sigmoid函数与Softmax函数的区别与联系
- Java多线程系列(六):深入详解Synchronized同步锁的底层实现
- 论文浅尝 | 利用推理链进行视觉问题回答
- 论文浅尝 | Generative QA: Learning to Answer the Whole Question
- 零基础入门NLP - 新闻文本分类,正式赛第一名方案分享
- Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之与其它Fragment通信