pygame 笔记-2 模仿超级玛丽的弹跳
在上一节的基础上,结合高中物理中的匀加速直线运动位移公式
,就能做出类似超级玛丽的弹跳效果。
import pygame pygame.init() win = pygame.display.set_mode((200, 400)) # 画布窗口的大小
pygame.display.set_caption("first game") # 窗口标题 x, y = 85, 300 # 方块的起点
width, height = 30, 30 # 方块的宽,高
speed = 5 # 速度 run = True
isJump = False
t = 10 while run:
# 防止cpu占用过高
pygame.time.delay(10) for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False keys = pygame.key.get_pressed() # 方向箭头响应
if not (isJump):
if keys[pygame.K_LEFT] and x > 0:
x -= speed if keys[pygame.K_RIGHT] and x < win.get_size()[0] - width:
x += speed if keys[pygame.K_UP] and y > 0:
y -= speed if keys[pygame.K_DOWN] and y < win.get_size()[1] - height:
y += speed if keys[pygame.K_SPACE]:
isJump = True
else:
if t >= -10:
a = 1 # 前半段减速上跳
if t < 0:
a = -1 # 后半段加速下落
y -= 0.5 * a * (t ** 2) # 匀加速直线运动的位移公式 if y < 0:
y = 0 # 防止跳出边界
t -= 1
else:
isJump = False
t = 10 # 将每一帧的底色先填充成黑色
win.fill((0, 0, 0))
# 画方块
pygame.draw.rect(win, (255, 0, 0), (x, y, width, height))
# 更新画布
pygame.display.update() pygame.quit()
效果:

参考:
https://www.youtube.com/watch?v=2-DNswzCkqk
pygame 笔记-2 模仿超级玛丽的弹跳的更多相关文章
- pygame 笔记-10 摩擦力与屏幕环绕
多年前写过一篇 Flash/Flex学习笔记(25):摩擦力与屏幕环绕,可惜的当时上传的flash,服务器后来无人维护,现在flash链接都失效了.本篇用pygame重新实现了一个: 原理是类似,但要 ...
- 桦仔 笔记4-徐 模仿灾难发生时还原adventurework数据库 示例 stopat
1 --模仿灾难发生时还原adventurework数据库 示例 stopat 2 3 BACKUP DATABASE AdventureWorks 4 TO DISK= 'D:\MSSQL\Data ...
- pygame 笔记-9 图片旋转及边界反弹
h5或flash中,可以直接对矢量对象,比如line, rectange旋转,但是pygame中,仅支持对image旋转,本以为这个是很简单的事情,但是发现还是有很多小猫腻的,记录一下: 先看一个错误 ...
- pygame 笔记-8 背景音乐&子弹音效
游戏哪能没有音效?这节我们研究下如何加背景音乐,其实也很简单: # 加载背景音乐 pygame.mixer.music.load(music_base_path + "music.mp3&q ...
- pygame 笔记-7 生命值/血条处理
通常游戏中的角色都有所谓的生命值,而且头顶上会有一个血条显示.生命值无非就是一个属性而已,很容易在Player.py类中增加,头顶上的血条其实就是绘制二个矩形,叠加在一起. 以上节的Player.py ...
- pygame 笔记-6 碰撞检测
这一节学习碰撞检测,先看原理图: 2个矩形如果发生碰撞(即:图形有重叠区域),按上图的判断条件就能检测出来,如果是圆形,则稍微变通一下,用半径检测.如果是其它不规则图形,大多数游戏中,并不要求精确检测 ...
- pygame 笔记-5 模块化&加入敌人
上一节,已经用OOP方法,把几个类抽象出来了,但是都集中在一个.py文件中,代码显得很冗长,这一节复用模块化的思想,把这个大文件拆分成几个小文件: 先把主角Player单独放到一个文件player.p ...
- pygame 笔记-4 代码封装&发射子弹
继续之前的内容,随着游戏的内容越来越复杂,有必要把代码优化一下,可以参考OOP的做法,把人物类抽象出来,弄成一个单独的类,这们便于代码维护,同时我们给小人儿,加个发射子弹的功能,代码如下:(看上去略长 ...
- pygame 笔记-3 角色动画及背景的使用
上二节,已经知道如何控制基本的运动了,但是只有一个很单调的方块,不太美观,本节学习如何加载背景图,以及角色的动画. 素材准备:(原自github) 角色动画的原理:动画都是一帧帧渲染的,比如向左走的动 ...
随机推荐
- 【bzoj4817】[Sdoi2017]树点涂色&&bzoj3779-重组病毒
题解: 两道几乎差不多的题(所以说当年sdoi考了道原题) 都是将树上一段改为新颜色询问颜色数目 可以把改成新颜色这个操作看成access操作 然后通过线段树+dfs序来维护 另外换根了为什么还可以用 ...
- nginx proxy_pass指令’/’注意事项
1. proxy_pass配置说明 不带/ location /test/ { proxy_pass http://t6:8300; } 带/ location /test/ { proxy_pass ...
- groovy中的正则表达式操作符【groovy】
groovy中对于正则表达式的书写进行了简化,同时引入了新的操作符,使得正则表达式使用起来比较方便简单. 对于书写的改进: 比如 assert "\\d" == /\d/ 也就是在 ...
- Python_set集合部分功能介绍
set:无序集合,不能出现重复的元素 set的创建:s1=set() #访问速度快 #解决重复问题 x.add():添加一个新的元素,添加的重复的元素自动过滤掉 x.clear():清空集合 x.di ...
- LAMP编译安装部分
# yum install -y apr-devel apr-util-devel pcre-devel # wget http://mirror.bit.edu.cn/apache/httpd/ht ...
- HDU1814 Peaceful Commission 2-sat
原文链接http://www.cnblogs.com/zhouzhendong/p/8099115.html 题目传送门 - HDU1814 题面 Description 根据宪法,Byteland民 ...
- JavaMelody 项目性能监控和调优工具
转自 JavaMelody 可以实现对内存.CPU.线程.JDBC 连接数.HTTP 请求执行时间.SQL 执行时间(分析 Top SQL).方法执行时间(分析系统方法性能瓶颈)等等的监控. 配置方式 ...
- ORA-12154: TNS: 无法解析指定的连接标识符 问题
ORA-12154: TNS: 无法解析指定的连接标识符 问题:https://zhidao.baidu.com/question/397519550.html
- 008 RestFul API 拦截器
一:任务 1.任务 过滤器Filter 拦截器Interceptor 切片Aspect 二:过滤器 1.新建包 2.自定义过滤器程序 加了注解,这个过滤器在springboot中就起作用了 packa ...
- <%@include>和<jsp:include>有什么不同呢
<%@include>jsp指令先包含再处理,<jsp:include>jsp动作先处理再包含 1.执行时间上:< %@ include file=”relativeUR ...