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模拟登录百度贴吧(百度贴吧登录)实例
Dec 18 Python
详细解析Python当中的数据类型和变量
Apr 25 Python
详解Python中的静态方法与类成员方法
Feb 28 Python
Python遍历pandas数据方法总结
Feb 09 Python
基于Python中numpy数组的合并实例讲解
Apr 04 Python
python基于物品协同过滤算法实现代码
May 31 Python
python实现ID3决策树算法
Aug 29 Python
python3.7简单的爬虫实例详解
Jul 08 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
Jul 15 Python
一行Python代码过滤标点符号等特殊字符
Aug 12 Python
python实现扫雷小游戏
Apr 24 Python
python3列表删除大量重复元素remove()方法的问题详解
Jan 04 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
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
php计算数组不为空元素个数的方法
2014/01/27 PHP
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
2017/12/13 PHP
css transform 3D幻灯片特效实现步骤解读
2013/03/27 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
用JS实现图片轮播效果代码(一)
2016/06/26 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
Python列表计数及插入实例
2014/12/17 Python
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
python模块之re正则表达式详解
2017/02/03 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
python机器学习案例教程——K最近邻算法的实现
2017/12/28 Python
Flask解决跨域的问题示例代码
2018/02/12 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
生育关怀行动实施方案
2014/03/26 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
业务员岗位职责
2015/02/03 职场文书
幼儿园校车安全责任书
2015/05/08 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis