pygame教程实例(四)小球弹跳(事件)
上一篇:pygame教程实例(三)游戏事件
下一篇:pygame教程实例(五)物理引擎pymunk
本教程使用python3
在pygame教程实例(一)小球弹跳中我们写了一个小球在重力的作用下反复弹跳。现在我们来重写它,使我们可以控制小球运动。
我们写两个版本,一个是控制小球左右运动。一个是取消重力,控制小球上下左右移动
一、框架
import pygame
from pygame.locals import *WINDOW_W, WINDOW_H = 640, 480
pygame.init()
screen = pygame.display.set_mode((WINDOW_W, WINDOW_H), pygame.DOUBLEBUF, 32)
pygame.display.set_caption("小球弹跳")
FPS = 60
g = 9.8 * 100
is_run = True # 是否运行
clock = pygame.time.Clock()x, y = WINDOW_W / 2, 10
vx, vy = 0, 0def my_event():global vx,vy,is_runfor event in pygame.event.get():if event.type == pygame.QUIT:exit()if is_run:vy += g * 1/FPSif __name__ == '__main__':while True:# 侦听事件my_event()# 是否暂停if not is_run:continue# 计算小球x += vx * 1 / FPSy += vy * 1 / FPSif y >= WINDOW_H - 10:vy = -vyif x >= WINDOW_W:x-=WINDOW_Wif x < 0:x+=WINDOW_W# 将背景图画上去screen.fill((0, 0, 0))pygame.draw.circle(screen, (255, 0, 0), (int(x), int(y)), 10)# 刷新画面pygame.display.update()time_passed = clock.tick(FPS)
在第28行,我们调用my_event()来侦听事件,现在我们开始写my_event()函数
二、控制左右运动
按下左键(或A键),小球速度向左增加(矢量计算)。右边也一样。
def my_event():global vx,vy,is_runfor event in pygame.event.get():if event.type == pygame.QUIT:# 接收到退出时间后退出程序exit()elif event.type == KEYDOWN:if event.key == K_ESCAPE:exit()if event.key in [K_LEFT, K_a] and vx > -200 and is_run:vx -= 5if event.key in [K_RIGHT, K_d] and vx < 200 and is_run:vx += 5elif event.type == MOUSEBUTTONDOWN:print('点击的位置是:',event.pos)is_run = not is_runif is_run:vy += g * 1/FPS
这样就可以通过左右键或AD键控制左右运动,每按一次左键,向左速度加5。每按一次右键,向右速度加5。点击屏幕则暂停。
三、控制上下左右运动
这次我们取消重力,控制小球上下左右移动,并且长按某方向键时一直向该方向移动,松开时则停止。
def my_event():global vx,vy,is_runfor event in pygame.event.get():if event.type == pygame.QUIT:exit()elif event.type == KEYDOWN:if event.key == K_ESCAPE:exit()if event.key in [K_LEFT, K_a] and is_run:vx = -90if event.key in [K_RIGHT, K_d] and is_run:vx = 90if event.key in [K_UP, K_w] and is_run:vy = -90if event.key in [K_DOWN, K_s] and is_run:vy = 90elif event.type == KEYUP:if event.key in [K_LEFT, K_a, K_RIGHT, K_d] and is_run:vx = 0if event.key in [K_UP, K_w, K_DOWN, K_s] and is_run:vy = 0elif event.type == MOUSEBUTTONDOWN:print('点击的位置是:',event.pos)is_run = not is_run
上一篇:pygame教程实例(三)游戏事件
下一篇:pygame教程实例(五)物理引擎pymunk
pygame教程实例(四)小球弹跳(事件)相关推荐
- pygame教程实例(三)游戏事件
上一篇:pygame教程实例(二)模拟三体 下一篇:pygame教程实例(四)小球弹跳(事件) 本教程使用python3 在pygame教程实例(一)小球弹跳中我们写了一个小球在重力的作用下反复弹跳. ...
- pygame教程实例(五)物理引擎pymunk
上一篇:pygame教程实例(四)小球弹跳(事件) 下一篇:pygame教程实例(六)你从来没玩过的俄罗斯方块 本教程使用python3 在前几个教程中,我们模拟了小球和星球的运动. 但是,在游戏中我 ...
- pygame教程实例(八)不用3D引擎也可以写3D画面
上一篇:pygame教程实例(七)python实现贪吃蛇自动寻路 目录:pygame游戏教程目录 效果图: 代码参考自:https://github.com/Apress/beg-python-gam ...
- 微信公众平台开发教程(四) 实例入门:机器人(附源码)
微信公众平台开发教程(四) 实例入门:机器人(附源码) 上一篇文章,写了基本框架,可能很多人会觉得晕头转向,这里提供一个简单的例子来予以说明,希望能帮你解开谜团. 一.功能介绍 通过微信公众平台实现在 ...
- JS--popstate事件--使用/教程/实例
原文网址:JS--popstate事件--使用/教程/实例_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍JavaScript的popstate事件的用法. 官网网址 WindowEventH ...
- mac python3.8上怎么安装pygame 第三方库_Python3.8安装Pygame Python3.8安装Pygame教程步骤详解...
想了解Python3.8安装Pygame教程步骤详解的相关内容吗,孤傲小二~阿沐在本文为您仔细讲解Python3.8安装Pygame的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Pyth ...
- WPF入门教程系列四——Dispatcher介绍
WPF入门教程系列四--Dispatcher介绍 一.Dispatcher介绍 微软在WPF引入了Dispatcher,那么这个Dispatcher的主要作用是什么呢? 不管是WinForm应用程序还 ...
- python小球弹弹弹_python实现小球弹跳效果
本文实例为大家分享了python实现小球弹跳效果的具体代码,供大家参考,具体内容如下 import pygame, sys pygame.init() screenGameCaption = pyga ...
- Maya动画1:基础知识小球弹跳
参考资料:小破站[同济动画]MAYA动画基础教程,老师讲的巨好! 目录 基础知识 小球弹跳动画 准备阶段 model 设置 基本关键帧 动画曲线 怎么看关键帧速度的快慢? 怎么通过调整关键帧来调整曲线 ...
最新文章
- 复杂的结构化存取(一)
- 上海大学matlab实验报告,实验中心
- CentOs下手动升级node版本
- 指针传递内表方式做smartforms
- 关于一些对location认识的误区(转)
- 黑科技轮胎:有能发电的,脑洞简直不要太大...
- 未发现android设备,Brother iPrintScan 应用程序上出现错误信息“未发现支持设备”(Android™ 智能手机)。...
- python为什么没有指针_Python 没有指针,如何解算法题?
- Spring Boot项目CentOS域名的绑定
- android手机apk动态替换桌面的logo和laber
- source insight 4 破解
- android wifi智能车,STM32智能WiFi视频小车全套资料(带安卓app与stm32源码等)
- python requests text content_对python requests的content和text方法的区别详解
- linux shell 获取系统当前时间 毫秒
- java使用python爬虫,如何使用 Python 爬虫爬取 Java 题库?
- ubuntu下怎样安装星际译王stardict和下载本地词典
- 《Python零基础快乐学习之旅》学习笔记9——字典(dict)
- dlna 服务器 性能,dlna 使用体验,供大家参考,欢迎交流
- 个人任务管理系统-数据库
- uniApp App端跳转到深色页面闪白记录及优化处理方法