python pygame实现方向键控制小球


Posted in Python onMay 17, 2019

最后一个项目用到了pygame,  实现方向键控制小球,对于模块不熟悉的我还是查询了一些资料介绍。

import sys
import pygame
from pygame.locals import *
 
def control_ball(event):
 speed = [x,y] =[0,0]# 设置相对位移
 speed_offset = 1 #小球的速度
 
# 如果事件的类型是 键盘输入,就根据方向键来求出速度的方向(默认是从左往右为1,从上往下为1)
 if event.type == KEYDOWN:
 if event.key == pygame.K_LEFT:
  speed[0] -= speed_offset
  print event.key
 
 if event.key == pygame.K_RIGHT:
  speed[0] = speed_offset
  print event.key
 
 if event.key == pygame.K_UP:
  speed[1] -= speed_offset
  print event.key
 
 
 if event.key == pygame.K_DOWN:
  speed[1] = speed_offset
  print event.key
#如果没有方向键的输入,则速度为0,小球不动
 if event.type in (pygame.K_UP, pygame.K_LEFT, pygame.K_RIGHT, pygame.K_DOWN):
 speed = [0,0]
 
 
 return speed
 
 
#主函数
def play_ball():
 pygame.init()#初始化
 window_size = Rect(0,0,800,640)#设置窗口的大小
 
 screen = pygame.display.set_mode(window_size.size)#设置窗口模式
 pygame.display.set_caption('hello')#设置窗口标题
 ball_image = pygame.image.load('ball.bmp')#载入小球图片
 back_image = pygame.image.load('ball1.bmp')#载入背景图片
 ball_rect = ball_image.get_rect()# 获取小球图片所在的区域
 
 while True:
#退出事件的处理
 for event in pygame.event.get():
  if event.type == QUIT:
  sys.exit()
  
 control_speed = control_ball(event)#获取到小球的方向
 ball_rect = ball_rect.move(control_speed).clamp(window_size)#小球按照方向移动,并且不会移出窗口。
 
 screen.blit(back_image,(0,0))#设置窗口背景,位于(0,0)处,窗口左上角。
 screen.blit(ball_image, ball_rect)#把小球绘制到背景surface上。

 pygame.display.flip()#更新窗口内容
 
 
if __name__ == '__main__':
 play_ball()

pygame模块的第一件事就是初始化其模块,pygame.init()。

python pygame实现方向键控制小球

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现连接mongodb的方法
May 08 Python
Python的Django框架中消息通知的计数器实现教程
Jun 13 Python
TensorFlow实现Batch Normalization
Mar 08 Python
python 遍历目录(包括子目录)下所有文件的实例
Jul 11 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
python实现多层感知器MLP(基于双月数据集)
Jan 18 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 Python
在pycharm下设置自己的个性模版方法
Jul 15 Python
详解Python用三种方式统计词频的方法
Jul 29 Python
python模拟斗地主发牌
Apr 22 Python
Python3 如何开启自带http服务
May 18 Python
Python中文分词库jieba(结巴分词)详细使用介绍
Apr 07 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
May 16 #Python
Python实现Linux监控的方法
May 16 #Python
计算机二级python学习教程(3) python语言基本数据类型
May 16 #Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
May 16 #Python
Python实现的文轩网爬虫完整示例
May 16 #Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 #Python
计算机二级python学习教程(1) 教大家如何学习python
May 16 #Python
You might like
php实现的XML操作(读取)封装类完整实例
2017/02/23 PHP
php实现的生成排列算法示例
2019/07/25 PHP
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
JSON 对象未定义错误的解决方法
2016/09/29 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
JSON对象转化为字符串详解
2017/08/11 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
js中的闭包实例展示
2018/11/01 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
记一次用ts+vuecli4重构项目的实现
2020/05/21 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
keras实现多种分类网络的方式
2020/06/11 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
一款css实现的鼠标经过按钮的特效
2014/09/11 HTML / CSS
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
满月酒主持词
2014/03/27 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
药品业务员岗位职责
2014/04/17 职场文书
音乐节策划方案
2014/06/09 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
Redis Cluster 字段模糊匹配及删除
2021/05/27 Redis
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers