上一篇: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教程实例(四)小球弹跳(事件)相关推荐

  1. pygame教程实例(三)游戏事件

    上一篇:pygame教程实例(二)模拟三体 下一篇:pygame教程实例(四)小球弹跳(事件) 本教程使用python3 在pygame教程实例(一)小球弹跳中我们写了一个小球在重力的作用下反复弹跳. ...

  2. pygame教程实例(五)物理引擎pymunk

    上一篇:pygame教程实例(四)小球弹跳(事件) 下一篇:pygame教程实例(六)你从来没玩过的俄罗斯方块 本教程使用python3 在前几个教程中,我们模拟了小球和星球的运动. 但是,在游戏中我 ...

  3. pygame教程实例(八)不用3D引擎也可以写3D画面

    上一篇:pygame教程实例(七)python实现贪吃蛇自动寻路 目录:pygame游戏教程目录 效果图: 代码参考自:https://github.com/Apress/beg-python-gam ...

  4. 微信公众平台开发教程(四) 实例入门:机器人(附源码)

    微信公众平台开发教程(四) 实例入门:机器人(附源码) 上一篇文章,写了基本框架,可能很多人会觉得晕头转向,这里提供一个简单的例子来予以说明,希望能帮你解开谜团. 一.功能介绍 通过微信公众平台实现在 ...

  5. JS--popstate事件--使用/教程/实例

    原文网址:JS--popstate事件--使用/教程/实例_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍JavaScript的popstate事件的用法. 官网网址 WindowEventH ...

  6. mac python3.8上怎么安装pygame 第三方库_Python3.8安装Pygame Python3.8安装Pygame教程步骤详解...

    想了解Python3.8安装Pygame教程步骤详解的相关内容吗,孤傲小二~阿沐在本文为您仔细讲解Python3.8安装Pygame的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Pyth ...

  7. WPF入门教程系列四——Dispatcher介绍

    WPF入门教程系列四--Dispatcher介绍 一.Dispatcher介绍 微软在WPF引入了Dispatcher,那么这个Dispatcher的主要作用是什么呢? 不管是WinForm应用程序还 ...

  8. python小球弹弹弹_python实现小球弹跳效果

    本文实例为大家分享了python实现小球弹跳效果的具体代码,供大家参考,具体内容如下 import pygame, sys pygame.init() screenGameCaption = pyga ...

  9. Maya动画1:基础知识小球弹跳

    参考资料:小破站[同济动画]MAYA动画基础教程,老师讲的巨好! 目录 基础知识 小球弹跳动画 准备阶段 model 设置 基本关键帧 动画曲线 怎么看关键帧速度的快慢? 怎么通过调整关键帧来调整曲线 ...

最新文章

  1. 复杂的结构化存取(一)
  2. 上海大学matlab实验报告,实验中心
  3. CentOs下手动升级node版本
  4. 指针传递内表方式做smartforms
  5. 关于一些对location认识的误区(转)
  6. 黑科技轮胎:有能发电的,脑洞简直不要太大...
  7. 未发现android设备,Brother iPrintScan 应用程序上出现错误信息“未发现支持设备”(Android™ 智能手机)。...
  8. python为什么没有指针_Python 没有指针,如何解算法题?
  9. Spring Boot项目CentOS域名的绑定
  10. android手机apk动态替换桌面的logo和laber
  11. source insight 4 破解
  12. android wifi智能车,STM32智能WiFi视频小车全套资料(带安卓app与stm32源码等)
  13. python requests text content_对python requests的content和text方法的区别详解
  14. linux shell 获取系统当前时间 毫秒
  15. java使用python爬虫,如何使用 Python 爬虫爬取 Java 题库?
  16. ubuntu下怎样安装星际译王stardict和下载本地词典
  17. 《Python零基础快乐学习之旅》学习笔记9——字典(dict)
  18. dlna 服务器 性能,dlna 使用体验,供大家参考,欢迎交流
  19. 个人任务管理系统-数据库
  20. uniApp App端跳转到深色页面闪白记录及优化处理方法

热门文章

  1. STM32 最小系统电路简析
  2. 【Android】TypedArray——三个方法获取dimen返回值的类型
  3. CSS3多列布局 columns 弹性布局 flex
  4. 如何有效选毕业论文题目?
  5. 将波旁威士忌的整洁Mixins提升到新的水平
  6. 如何实现 Oracle 的自增序列,两步轻松搞定
  7. 编译iMX8安卓源代码笔记
  8. 抽奖程序(python)
  9. hyperledger fabric交易流程
  10. Discovering Relations among Named Entities from Large Corpora