上一节的基础上,结合高中物理中的匀加速直线运动位移公式 ,就能做出类似超级玛丽的弹跳效果。

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

最新文章

  1. ibatis输入多个参数
  2. 一次Redis的使用Bug记录(exec)
  3. .NET MEF入门级例子
  4. 如何在两个activity之间传递bitmap
  5. Java for LeetCode 235 Lowest Common Ancestor of a Binary Search Tree
  6. Shell编程基础教程1--Shell简介
  7. poj 2987 最大权闭合图
  8. atitit.二进制数据无损转字符串网络传输
  9. 笔记:PHP查询mysql数据后中文字符乱码
  10. RandomAccessFile、FileChannel、MappedByteBuffer读写文件
  11. [iOS微博项目 - 1.4] - 各种item NavigationBar &amp; NavigationItem &amp; BarButtonItem || TabBar &amp; TabBarItem
  12. SQL server 时间日期函数、类型转换
  13. [转] boost库的Singleton的实现以及static成员的初始化问题
  14. vue.js 组件之间传递数据
  15. Ceph luminous 安装配置
  16. FMDB的简单实用
  17. solr查询工作原理深入内幕
  18. hive SQL查询结果添加行号
  19. oracle_18c新建用户用normal登陆失败
  20. WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping for &#39;jquery&#39;. Please add a ScriptResourceMapping named jquery(case-sensitive).

热门文章

  1. Tychonov Theorem
  2. MVC5干货篇,目录和路由
  3. C# 文件拖放到此程序的操作
  4. ionic2中使用moment.js
  5. mariadb-主主
  6. Loadbalancer
  7. phpmyadmin详细的图文使用教程
  8. 071 SparkStreaming与SparkSQL集成
  9. 051 Kafka的安装
  10. sql查询count 单独字段不同值