8031浏览
查看: 8031|回复: 7

[项目] Processing 互动脸(小孩一定喜欢)

[复制链接]

鼠标和键盘事件的参数化绘图


最简单的互动系统为“输入-处理-输出”,最基本的输入是鼠标和键盘,下面是我用Processing实验的一个简单互动系统,程序输出的是一张脸,它的眼睛会时刻注视着鼠标的位置,它的嘴巴在你敲击键盘的时候会显示为相应的字母,利用这个系统你可以扩展出很多有趣的互动程序。下面是完整的源代码,尽情发挥你的想象力吧。
(好像可以拿Scratch做哟)

  1. void setup() {
  2.   size(300, 300);
  3.   strokeWeight(3);
  4.   ellipseMode(RADIUS);
  5. }
  6. void draw() {
  7.   background(255);
  8.   face(width/2, height/2);
  9.   mouth(width/2, height/2+80);
  10.   eye(width/2-50, height/2-30); //左眼
  11.   eye(width/2+50, height/2-30); //右眼
  12. }
  13. //绘制脸
  14. void face(float x, float y) {
  15.   stroke(0);
  16.   fill(#fbb03b);
  17.   ellipse(x, y, 120, 120);
  18. }
  19. //绘制嘴巴
  20. void mouth(float x, float y) {
  21.   fill(0);
  22.   textAlign(CENTER);
  23.   textSize(60);
  24.   text(key, x, y);
  25. }
  26. //绘制眼球
  27. void eye(float x, float y) {
  28.   float r1 = 30; //眼白半径
  29.   float r2 = 10; //瞳孔半径
  30.   //绘制眼白
  31.   stroke(0);
  32.   fill(255);
  33.   ellipse(x, y, r1, r1);
  34.   //根据鼠标位置计算瞳孔的位置
  35.   float dx = mouseX - x; //鼠标到眼球的x坐标差
  36.   float dy = mouseY - y; //鼠标到眼球的y坐标差
  37.   float R = r1 - r2; //瞳孔偏移的最大半径
  38.   float D = width; //鼠标到眼球的最远距离
  39.   x += dx * R/D; //瞳孔偏移后的x坐标
  40.   y += dy * R/D; //瞳孔偏移后的y坐标
  41.   //绘制瞳孔
  42.   noStroke();
  43.   fill(0);
  44.   ellipse(x, y, r2, r2);
  45. }
复制代码



授权转载自 任远媒体实验室






hnyzcj  版主

发表于 2015-8-9 06:33:09

这个比前两个好玩。
回复

使用道具 举报

hnyzcj  版主

发表于 2015-8-9 06:34:36

最好别让用户点鼠标,弄个人眼跟踪。人眼往左边,小孩眼就往左边去。
回复

使用道具 举报

luna  初级技神

发表于 2015-8-10 10:39:44

想象了一下,感觉蛮好玩的,要是有视频就更好了
回复

使用道具 举报

苦海  初级技匠
 楼主|

发表于 2015-8-10 17:46:14

luna 发表于 2015-8-10 10:39
想象了一下,感觉蛮好玩的,要是有视频就更好了

下载这个软件 运行一下就可以了哟~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

virtualwiz  中级技匠

发表于 2015-12-1 20:55:25

hnyzcj 发表于 2015-8-9 06:34
最好别让用户点鼠标,弄个人眼跟踪。人眼往左边,小孩眼就往左边去。

2333333333
那样肯定好玩~
要是同时出现两个人,;P
回复

使用道具 举报

virtualwiz  中级技匠

发表于 2015-12-1 20:55:26

hnyzcj 发表于 2015-8-9 06:34
最好别让用户点鼠标,弄个人眼跟踪。人眼往左边,小孩眼就往左边去。

2333333333
那样肯定好玩~
要是同时出现两个人,;P
回复

使用道具 举报

kaka  高级技师

发表于 2015-12-1 21:32:05

hnyzcj 发表于 2015-8-9 06:34
最好别让用户点鼠标,弄个人眼跟踪。人眼往左边,小孩眼就往左边去。

如果要做的话需要用到人眼检测,需要用摄像头作为传感器
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail