学习笔记

Minim:可播放的(Playable)

[ javadoc | 在线实例 ] 很简单,就是CD唱机的功能。 播放与暂停 手册原文说了一大堆,基本都是废话(其实我早发现这哥们废话多了),播放与暂停是什么玩意,没有不懂的吧? 示范代码(在线实例) import ddf.minim.*; Minim minim; AudioPlayer groove; WaveformRenderer waveform; void setup() { size(512, 200, P3D); minim = new Minim(this); groove = minim.loadFile(“groove.mp3”, 2048); waveform = new WaveformRenderer(); // see the example Recordable…

Processing:数学(上)

1. “如果你不相信数学有多简单,是你还没有认识到生活有多复杂——John von Neumann” 2. 模数(Modulus):20 模(modulo,也就是除以,用百分号表示) 6 等于 2 或者写为 20 % 6 = 2。如果A = B % C,那么A永远不可能大于C(当然。。)。因此,模 可以用在你需要将一个计数器变量循环至0的情况。下列代码: x = x + 1; if (x >= limit){ x = 0; } 可以被替换为: x = (x + 1)…

Processing:库

1. 在计算机科学领域,一个库指的是一个“帮助者”代码的集合。一个库可能包含函数、变量和对象。 2. 在绝大多数汇编语言中,你都会被要求在代码之初便指定你要用到的库。 3. 这么着导入:import processing.core.*; “ Import ”表明我们将使用一个库,准备使用的库是 “processing.core.”。 “ .* ”是通配符,意味着我们将使用库里的所有东西。以后还会更多的接触这类东西,现在,我们仅需要知道“ processing.core ”是库的名字。 4. 你可以到这里下载pr的众多第三方库。 5. 通过Sketch -> Import Library导入你想使用的库。 6. 安装:将下载到的库文件夹放入你的sketchbook文件夹(在偏好里设置)下的libraries文件夹(如果不存在,则自己创建一个)内。重启Processing,安装成功并可以开始使用。

Processing:除错 调试

1. 小窍门#1:休息一下 我没有开玩笑。离开你的电脑。睡一觉。出去慢跑一圈。吃个橘子。玩一下拼字游戏。总之,做一些除了日代码之外的事。我无法告诉你究竟有多少次我盯着代码数小时而无法搞定那些bug,然后第二天一早醒来五分钟就解决了战斗。 2. 小窍门#2:让他人介入 把你的问题讲给你的朋友,将你展示代码的流程讲给一个程序员(甚至是非程序员)并且顺着过一遍它的逻辑,这往往能揭示问题所在。在很多情况下,因为你是如此熟悉你的代码,因此便看不到很多很明显的东西。通过你将其阐述给第二人的过程,会促使你更慢的将你的代码重新过一遍。如果你身边暂时没有朋友,你同样可以将这个流程大声的告诉你自己。是的,看起来像傻逼,但却很有帮助的。 3. 小窍门#3:简化 在上一章(算法),我们学会了分部分块的完成程序的方法,分得越细,最后出错的机率便越小。这么做的方法之一,是将程序中的某些部分“评论(comment)”掉。 4. 小窍门#4: println( )是你的朋友 运用信息窗口显示变量的值可以说事非常有用。如果一个对象完全从萤幕消失了并且你想知道为什么,你可以打印出它位置变量的值。它看起来可能像这样: println( “x:” + thing.x + “y:” + thing.y); 如果结果是: x: 9000000 y: – 900000 x: 9000116 y: – 901843 x: 9000184 y: – 902235 x: 9000299…

Processing:算法(下)

6.2.4. 雨滴 可以分为如下步骤: 1)一个运动的雨滴 2)一个雨滴对象的数组 3)随机数量的雨滴(每次显示一滴) 4)优化雨滴外形 1)比较简单(先用个简单的圆形代替) float x,y; // 雨滴位置变量 void setup() { size(400,400); background(0); x = width/2; y = 0; } void draw() { background(255); // 显示雨滴 fill(50,100,150); noStroke(); ellipse(x,y,16,16); // 移动雨滴 y++ ; } 再次,我们需要通过将雨滴做成类,而得到一个关于雨滴类的数组,以实现很多雨滴。我们可以为其增加诸如速度或大小等变量,同时还可以加入一个测试雨滴是否滴到地面的函数。 class…

Processing:算法(上)

1. 回顾之前的学习。以Zoog为例,他教会了我们用p5自带库绘制基础的形状。从那开始,Zoog升级为可以与鼠标互动,通过变量自动移动,运用条件式变化方向,用循环扩展他的身体,通过函数组织他的代码,将他的数据和功能封装进入一个对象,最后通过数组复制他自己。学到现在,我们应该停下来一会,想想我们学到的然后如何使用它们得到我们想要的结果。我们的想法是什么?变量、条件式、循环、函数、对象和数组,它们能如何来帮助我们? 2. 在之前的学习中,我们把所有精力集中在“一种特性”的编程例子上。Zoog可以并且只会抖动。Zoog不会忽然开始跳起来,并且Zoog通常都是一个人,从不在路上与其他外星生物互动。当然,我们可以将之前那些例子带向更远,但现在更重要的是,抓住基本的机能(functionality),只有这样我们才能真正学到基本原理(fundamentals)。 3. 本课我们的目标主要是示范一个大型的项目如何由许多“单一特性”的小程序构成。你,程序员,应当从全局出发,但必须学会如何将它打散为不同独立的部分以成功执行你的预期。 3.1. 我们的步骤 1)想法——从一个想法开始。 2)部分——将这个想法打散为小块。 a. 算法伪码——以伪码的形式日出各个部分的算法 b. 算法代码——用代码执行算法。 c. 对象——将与这个算法有关的数据和功能建入一个类。 3)整合——将第二步得到的所有类整合为一个更大的算法。 4. 一个算法就是一个解决问题的程序或公式。在计算机编程中,一个算法就是要求执行一项任务的步骤。我们之前所有的例子都包括一个算法。 5. 通常意义上,编程被认为按以下的程序运作:1)发展一个想法,2)设计出一套实现这个想法的算法,3)写出实现那个算法的代码。再细分的话,编程的程序就是:1)发展一个想法,2)将那个想法分解为多个更小的可管理的部分,3)为每个部分设计出算法,4)为每个部分写代码,5)为所有部分一同设计出算法,6)整合各部分的代码。