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的Twisted框架的核心特性
May 25 Python
安装Python和pygame及相应的环境变量配置(图文教程)
Jun 04 Python
快速了解Python相对导入
Jan 12 Python
python爬取淘宝商品销量信息
Nov 16 Python
详解Python中is和==的区别
Mar 21 Python
python实现按首字母分类查找功能
Oct 31 Python
解决pycharm 安装numpy失败的问题
Dec 05 Python
python机器学习库xgboost的使用
Jan 20 Python
tf.concat中axis的含义与使用详解
Feb 07 Python
完美解决ARIMA模型中plot_acf画不出图的问题
Jun 04 Python
python:HDF和CSV存储优劣对比分析
Jun 08 Python
python 基于selectors库实现文件上传与下载
Dec 31 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
mysql5详细安装教程
2007/01/15 PHP
php中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
php简单实现快速排序的方法
2015/04/04 PHP
PHP图形操作之Jpgraph学习笔记
2015/12/25 PHP
JavaScript 学习 - 提高篇
2007/02/02 Javascript
jquery ready函数源代码研究
2009/12/06 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
jquery实现列表上下移动功能
2016/02/25 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
详解如何使用Python编写vim插件
2017/11/28 Python
Python延时操作实现方法示例
2018/08/14 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
python实现事件驱动
2018/11/21 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
软件配置管理有什么好处
2015/04/15 面试题
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
计算机求职信
2013/12/01 职场文书
单位消防安全责任书
2014/07/23 职场文书
煤矿安全协议书
2014/08/20 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python
Redis的字符串是如何实现的
2021/10/24 Redis