← 编程学习中心
📖

Preparation

8 个课程
1
如何学习编程
2
计算机基础
3
键盘初识与基准键位
4
字母与数字基础
5
Shift键魔法
6
编程符号专精
7
功能键与修饰键
8
键盘学习总结与进阶
📚

Basics

22 个课程
1
什么是编程?
2
Hello World - 你的第一个程序
3
变量基础概念 - 给信息贴标签
4
变量赋值和操作 - 变量的高级用法
5
数据类型基础 - 数字和字符串
6
基础运算符 - 数字运算王国
7
布尔类型与比较运算符 - 程序的判断基础
8
条件判断基础 - 让程序学会做决定
9
变量作用域 - 变量的生存范围
10
条件语句进阶 - 复杂判断与嵌套结构
11
逻辑运算符 - 简化复杂条件判断
12
循环语句 - 程序的重复机器
13
循环进阶 - break、continue与循环控制
14
嵌套循环与作用域
15
循环调试实战技巧
16
循环不变量 - 理解循环的数学规律
17
数组基础 - 数据的收纳盒
18
数组操作方法 - 添加、删除和管理
19
数组高级 - 探索数组的强大功能
20
引用概念 - 变量的不同行为
21
函数基础 - 解决重复代码的秘密武器
22
函数实践与应用 - 巩固基础,实战应用
🚀

Intermediate

11 个课程
1
从控制台到画布 - p5.js初体验
2
图形绘制工具箱 - 基础图形函数
3
让世界多彩 - 颜色系统详解
4
文字的艺术 - 文本绘制与样式
5
球体动起来 - 动画基础入门
6
球体的交互魔法 - 鼠标与条件判断
7
面向对象编程 - Class类与实例
8
球的家族 - 循环与数组应用
9
球的个性 - 函数封装与参数化
10
球的变身 - 形状模式与高级绘制
11
球的世界 - 综合创作项目
🎯

Advanced

6 个课程
1
对象类型
2
对象类型应用
3
自定义类型
4
函数进阶 - 箭头函数与高级编程技巧
5
内置方法 - 字符串与数组的魔法工具
6
Switch语句与字符串模板 - 更优雅的代码表达
← 编程学习中心
📖

Preparation

8 个课程
1
如何学习编程
2
计算机基础
3
键盘初识与基准键位
4
字母与数字基础
5
Shift键魔法
6
编程符号专精
7
功能键与修饰键
8
键盘学习总结与进阶
📚

Basics

22 个课程
1
什么是编程?
2
Hello World - 你的第一个程序
3
变量基础概念 - 给信息贴标签
4
变量赋值和操作 - 变量的高级用法
5
数据类型基础 - 数字和字符串
6
基础运算符 - 数字运算王国
7
布尔类型与比较运算符 - 程序的判断基础
8
条件判断基础 - 让程序学会做决定
9
变量作用域 - 变量的生存范围
10
条件语句进阶 - 复杂判断与嵌套结构
11
逻辑运算符 - 简化复杂条件判断
12
循环语句 - 程序的重复机器
13
循环进阶 - break、continue与循环控制
14
嵌套循环与作用域
15
循环调试实战技巧
16
循环不变量 - 理解循环的数学规律
17
数组基础 - 数据的收纳盒
18
数组操作方法 - 添加、删除和管理
19
数组高级 - 探索数组的强大功能
20
引用概念 - 变量的不同行为
21
函数基础 - 解决重复代码的秘密武器
22
函数实践与应用 - 巩固基础,实战应用
🚀

Intermediate

11 个课程
1
从控制台到画布 - p5.js初体验
2
图形绘制工具箱 - 基础图形函数
3
让世界多彩 - 颜色系统详解
4
文字的艺术 - 文本绘制与样式
5
球体动起来 - 动画基础入门
6
球体的交互魔法 - 鼠标与条件判断
7
面向对象编程 - Class类与实例
8
球的家族 - 循环与数组应用
9
球的个性 - 函数封装与参数化
10
球的变身 - 形状模式与高级绘制
11
球的世界 - 综合创作项目
🎯

Advanced

6 个课程
1
对象类型
2
对象类型应用
3
自定义类型
4
函数进阶 - 箭头函数与高级编程技巧
5
内置方法 - 字符串与数组的魔法工具
6
Switch语句与字符串模板 - 更优雅的代码表达

球体的交互魔法 - 鼠标与条件判断

概念介绍

上一节课我们让球动了起来,现在我们要让球能够响应我们的操作!交互是游戏和创意编程的核心,它让你的作品能够与用户对话。在p5.js中,最常用的交互方式就是鼠标操作。

学习目标

  • 掌握鼠标事件:mousePressed(), mouseMoved(), mouseDragged()
  • 学会距离计算:dist()函数检测两点距离
  • 理解条件交互:if语句判断鼠标与球的关系
  • 学习交互状态:点击、悬停、拖拽的不同反应
  • 创建真正的交互体验

🖱️ 鼠标事件基础

鼠标位置变量

p5.js提供了几个有用的鼠标位置变量:

  • mouseX - 鼠标当前X坐标
  • mouseY - 鼠标当前Y坐标
  • pmouseX - 上一帧鼠标X坐标
  • pmouseY - 上一帧鼠标Y坐标
加载代码编辑器...

🔄 与基础课程的连接

还记得基础课程中学的条件判断吗?

  • 基础课程:if (score > 100) { console.log("胜利"); }
  • 交互课程:if (distance < 30) { ball.color = "red"; }

现在条件判断不再是抽象的,而是控制具体的交互效果!


📏 距离计算

使用dist()函数

dist(x1, y1, x2, y2) 计算两点之间的距离:

加载代码编辑器...

手动计算距离(了解原理)

加载代码编辑器...

🎯 鼠标事件函数

mousePressed() - 点击事件

加载代码编辑器...

鼠标状态变量

加载代码编辑器...

💻 实践练习

练习1:点击变色 🎨

点击球时改变颜色:

加载代码编辑器...

练习2:悬停变大 🔍

鼠标悬停时球变大:

加载代码编辑器...

练习3:拖拽球 ✋

可以拖动球的位置:

加载代码编辑器...

练习4:点击创建球 ➕

点击画布创建新球:

加载代码编辑器...

练习5:双击删除球 ❌

双击删除最近的球:

加载代码编辑器...

练习6:状态切换球 🔄

点击球切换不同状态:

加载代码编辑器...

练习7:力场球 ⚡

球周围有力的场,影响其他小球:

加载代码编辑器...

练习8:交互场景 🎮

创建一个完整的交互场景:

加载代码编辑器...

🎯 本课重点总结

核心概念

  • ✅ 鼠标位置:mouseX, mouseY获取当前鼠标坐标
  • ✅ 距离计算:dist()函数计算两点间距离
  • ✅ 碰撞检测:通过距离判断是否"碰到"球
  • ✅ 鼠标事件:mousePressed(), mouseDragged(), mouseReleased()

交互类型

  • ✅ 点击事件:鼠标点击时的响应
  • ✅ 悬停检测:鼠标是否在球上方
  • ✅ 拖拽操作:按下并移动鼠标
  • ✅ 状态管理:跟踪球的交互状态

与基础课程的连接

  • ✅ 条件判断:if语句在交互检测中的应用
  • ✅ 布尔逻辑:true/false状态控制交互
  • ✅ 数据结构:对象存储复杂的球状态

🚀 下一步

恭喜你!你已经学会了让球能够与你交互!你掌握了:

  • 🖱️ 鼠标交互:点击、悬停、拖拽的完整处理
  • 📏 距离检测:用dist()函数实现碰撞检测
  • 🎮 状态管理:跟踪和管理交互状态
  • 🎨 视觉反馈:根据交互状态改变外观

下一课我们将学习:

  • 🔄 循环应用:用for循环管理多个球
  • 📦 数组管理:球的家族和群体行为
  • 🎯 批量操作:同时控制多个球
  • 🌊 群体效果:创建令人惊叹的球群动画

准备好从一个球扩展到球的世界了吗?

p5.js官方参考

  • Reference: Mouse
  • Reference: dist()
  • Reference: mousePressed()
  • Reference: mouseDragged()
  • Reference: mouseReleased()
  • Reference: doubleClicked()
Previous lesson
Previous
球体动起来 - 动画基础入门
Next
面向对象编程 - Class类与实例
Next lesson