Getting started with Processing 示例11-9 追随鼠标移动

程序片段

int num = 60;
int[] x = new int[num];
int[] y = new int[num];

void setup(){
size(240,120);
noStroke();
}

void draw(){
background(0);
//from back to from copy the array
for(int i = x.length-1;i>0;i--){
x[i] = x[i-1];
y[i] = y[i-1];
}
x[0] = mouseX;//set the first element
y[0] = mouseY;//set the first element
for(int i = 0;i<x.length;i++){
fill(i*4);
ellipse(x[i],y[i],40,40);
}
}

程序进程

首先程序中并没有对数组进行初始化,所以一开始的循环中,即 for(int i=x.length-1;i>0;i--)每一个数组中的元素都是随机数。
然后对x[0]进行赋值,即将现在的坐标值 mouseX 和 mouseY 赋值给 x[0],
然后执行下一个for 循环语句,这个时候,存储的数据的显示值并没有实际的意义。

当程序进行下一次 draw() 的时候,这个时候,首先 x[0] 有了新的值,然后 x[1] 也有了确定的数值。

如此循环下去,六十次的程序进行下去之后,x[60]中每一个元素都有了数值。

然后继续进行程序的时候,新的 x[0] 不断被赋值,并且 最后一个 数组元素被前一个元素赋值,这里因为数组的长度是一定的,所以就相当于最后一个元素被丢弃,然后进入一个新的元素,即当前的 mouseX 值和 mouseY 值,然后程序不断进行下去。

从 fill(i*4);这一条语句可以看出,当前鼠标所画出的圆的颜色比较暗淡,但是在起初画的圆的颜色比较明亮。

总结:

首先,先填充整个数组,方式是在执行循环之后不断的对 x[0] 的赋值,那么想一下,能不能先进行赋值然后再进行对数组进行循环呢,我认为是可以的。

当填满这个数组之后,然后不断利用数组长度的有限性,不断进行丢弃旧的数组元素,进入新的数组元素,通过另外一个 for()循环在屏幕上显示出来其路径。

原文地址:https://www.cnblogs.com/FBsharl/p/10146878.html

时间: 2024-08-10 16:39:56

Getting started with Processing 示例11-9 追随鼠标移动的相关文章

Linux 中 17 个 tar 命令实用示例

Tar(Tape ARchive,磁带归档的缩写,LCTT 译注:最初设计用于将文件打包到磁带上,现在我们大都使用它来实现备份某个分区或者某些重要的目录)是类 Unix 系统中使用最广泛的命令,用于归档多个文件或目录到单个归档文件中,并且归档文件可以进一步使用 gzip 或者 bzip2 等技术进行压缩.换言之,tar 命令也可以用于备份:先是归档多个文件和目录到一个单独的 tar 文件或归档文件,然后在需要之时将 tar 文件中的文件和目录释放出来. 本文将介绍 tar 的 17 个实用示例.

第11章 Tomcat的系统架构与设计模式

11.1 Tomcat总体设计 11.1.1 Tomcat总体架构 Tomcat和核心有连个组件:Connector和Container,Connector是可以被替换的.一个container可以有多个connector,多个connector和一个container形成一个service,service的生存环境就是server.所以Tomcat的声明周期由Server控制. 1. 以Service作为"婚姻" Connector负责对外交流,container主要处理connec

Java 8 时间日期库的20个使用示例

java 8是如何处理时间及日期的 有人问我学习一个新库的最佳途径是什么?我的回答是,就是在实际项目中那样去使用它.在一个真实的项目中会有各种各样的需求,这会促使开发人员去探索和研究这个新库.简言之,只有任务本身才会真正促使你去探索及学习.java 8的新的日期及时间API也是一样.为了学习Java 8的这个新库,这里我创建了20个以任务为导向的例子.我们先从一个简单的任务开始,比如说如何用Java 8的时间日期库来表示今天,接着再进一步生成一个带时间及时区的完整日期,然后再研究下如何完成一些更

Java 8新的时间日期库的20个使用示例

除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用Java 8的这套API.Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java.util.Date定义为可修改的以及将SimpleDateFormat实现成非线程安全的. 看来Java已经意识到需要为时间及日期功能提供更好的支持了,这对已经习惯使用Joda时间日期库的社区而言也是件好事.关于这个新的时间日期库的最大的优

bash颜色、变量、数组、相关脚本示例

下面是bash的相关内容,包括bash的颜色代码.bash的四类文件.bash中变量处理方式.数组变量.shell的过程式编程语言以及部分简单脚本例子. 一.bash的颜色显示规则(颜色代码) bash的颜色代码,是ASCII编码对于颜色进行设置.颜色代码中,字符串\033:表示Ctrl.其中,关于颜色代码的各字符实现的功能如下: [  :控制字符和颜色代码之间的间隔字符 0m:关闭颜色属性的命令 1m:对于显示的文本字符进行加粗 4m:为文本字符加下划线标识 5m:使文本字符闪烁 7m:将背景

2016年11月20日--存储过程、视图

存储过程: 存储过程(stored procedure)有时也称为sproc.存储过程存储于数据库中而不是在单独的文件中,有输入参数.输出参数以及返回值等. 在数据库中,创建存储过程和创建其他对象的过程一样,除了它使用的AS关键字外. create proc 存储过程名  --创建存储过程   或    alter proc 存储过程名  --  修改存储过程 参数1 参数类型,参数2 参数类型……参数n 参数类型 as begin---  ={ 查.插.删.改 end---  =} 1 --存

Java8中时间日期库的20个常用使用示例

除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用Java 8的这套API.Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java.util.Date定义为可修改的以及将SimpleDateFormat实现成非线程安全的.看来Java已经意识到需要为时间及日期功能提供更好的支持了,这对已经习惯使用Joda时间日期库的社区而言也是件好事.关于这个新的时间日期库的最大的优点

SWIG 之三:“11 Typemaps”

原文地址:<11 Typemaps> 11.1 简介 typemaps 是SWIG中的一种高级定制功能, 可以直接指定代码包装转换的底层行为. 11.1.1 类型转换 在SWIG代码包装生成中最重要的问题之一就是不用语言之间的数据类型转换. 11.1.2 typemaps 使用 %typemap 指令来指示转换代码行为,in表示从目标语言到C/C++,out表示从C/C++到目标语言: /* Convert from Python --> C */ %typemap(in) int {

rapidjson常见使用示例

目录 目录 1 1. 前言 1 2. Move语意 2 3. rapidjson::Document 2 4. #include头文件 3 5. 示例1:解析一个字符串 3 6. 示例2:构造一个json并转成字符串 5 7. 示例3:修改一个已有的json字符串 6 8. 示例4:读数组 7 9. 示例5: 以Writer构造一个json,然后修改它,最后转成字符串 8 10. 示例6: 以Document构造一个json,然后修改它,最后转成字符串 8 11. 示例7: 以Document构