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连接MySQL数据库实例分析
May 12 Python
详解python并发获取snmp信息及性能测试
Mar 27 Python
python计算auc指标实例
Jul 13 Python
Python3.4编程实现简单抓取爬虫功能示例
Sep 14 Python
Python排序搜索基本算法之堆排序实例详解
Dec 08 Python
Python实现发送与接收邮件的方法详解
Mar 28 Python
python队列queue模块详解
Apr 27 Python
python实现一组典型数据格式转换
Dec 15 Python
对python for 文件指定行读写操作详解
Dec 29 Python
基于sklearn实现Bagging算法(python)
Jul 11 Python
Python *args和**kwargs用法实例解析
Mar 02 Python
pandas提升计算效率的一些方法汇总
May 30 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的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
php读取der格式证书乱码解决方法
2015/06/22 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
javascript DOM编程实例(智播客学习)
2009/11/23 Javascript
一个原生的用户等级的进度条
2010/07/03 Javascript
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
2017/01/21 Javascript
javascript实现下雨效果
2017/03/27 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
判断网页编码的方法python版
2016/08/12 Python
python实现感知器算法(批处理)
2019/01/18 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
Django框架反向解析操作详解
2019/11/28 Python
python实现简单坦克大战
2020/03/27 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
2020/04/13 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
工商企业管理应届生求职信
2013/11/03 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
党的群众路线教育实践活动整改方案
2014/10/28 职场文书
幼儿园见习报告
2014/10/30 职场文书
计划生育诚信协议书
2014/11/02 职场文书
趣味运动会广播稿
2015/08/19 职场文书
详解Python中__new__方法的作用
2022/03/31 Python