2011/06/19

Control 1 : Decisions (processing教學)

Hi 大家好 吃完中飯打個嗝又是一條好漢
讓我們繼續P51-60的介紹

我們會學到

> 大於
>= 大於等於
< 小於
<= 小於等於

if() 如果
else if() 或是
else() 其他的

前四個太簡單 我不需要贅述
另外還有  != 兩邊不想等,  == 兩邊相等
不過應該用不太到 有興趣的同學 可以在Processing裡輸入
println( 3 != 4 ); 下面黑色對話框應該會出現true,也就是合理的意思
你可以打任何上述符號(>,<,>=,.....)進println(),合理的就會是true,反之是false
如果你輸入println( 3+2 = 5 ); Processing是不會屌你的
你一定要輸入println( 3+2 == 5 );才會顯示true

而if這東西就值得讓人玩味了
if() 如果
else if() 或是
else() 其他的

如果用它們來造句的話就是
if  Zooey Deschanel 能跟我同班就太棒了,
else if 新垣結衣跟我同班也很棒,
else 許純美,李敖之類的拜託別跟我同班
這樣你們大概懂意思吧?
讓我們以下面程式碼來更進一步解釋




size(200,200);
background(255);
smooth();


int x = 420; // 首先我們直截了當的說x = 420

if(x > 100){
  if(x < 300){
    noStroke();
    fill(255,0,0);
    ellipse(100,100,40,40);
  }
  else{
    strokeWeight(5);
    line(0,0,200,200);
  }
}

//再來我們可以看到if裡面還有if這是為什麼呢
//因為processing裡你不能直接寫if(100 < x < 300) 它不會理你
//所以你才要在if(x>100)裡面再寫if(<300)
//因此上面這幾行的解釋就是如果100<x<300,則請幫我畫一個沒有外框線半徑為40的紅色圓
//要是x不介於100到300之間,那則畫一條線粗為5,由左上到右下的對角線

else{
  rectMode(CENTER);
  fill(0,255,0);
  rect(100,100,30,30);
}

//這幾行則是說,如果上面的if通通不成立
//那就幫我畫一個以中心為基準點邊長為30的綠色正方形吧

//saveFrame("p056-1-##.jpg");



可是我們可以看到,畫面上只畫了一條對角線,
因為在第一段的if中,儘管100<x<300沒有成立,因為x=420
但我已經在之後加了else就畫一條對角線吧
所以這個if已經成立了,因此最後再加畫正方形的else就不會出現

同理可證以下程式碼




size(200,200);
background(255);
smooth();


int x = 100; //這次設兩個數值
int y = 200; //x = 100, y = 200


if(x > 500){
  fill(255,0,0);
  ellipse(100,100,40,40);
}

//如果x>500,請幫我畫一個半徑40的紅圓,但在這不成立,所以不會畫出

else if(y > 300){
  stroke(0,0,255);
  strokeWeight(5);
  line(0,0,200,200);
}

//如果上述不成立,那y>300的話,畫一條對角線也可以,但在這也不成立,所以不會畫出

else{
  noStroke();
  rectMode(CENTER);
  fill(0,255,0);
  rect(100,100,30,30);
}

//剛好上述兩個if都不成立,因此除了if 之外的所有可能都直接幫我畫一個正方形
//邊長為30,中心在圖中心,顏色為綠色同時不要有外框線

//saveFrame("p056-2-##.jpg");



到這我們進度到P.60了,但是我沒有講P57-59的內容,
它基本上是在講true,false的東西,不過應該用不太到,
所以有興趣的可以自己翻一下即可,不難

Try it. :)

沒有留言:

張貼留言