---
# System prepended metadata

title: IEH Workshop003：基礎程式設計二

---

# IEH Workshop003：基礎程式設計二

程式設計課程規定(違規視情況扣分，並影響學期末成績。)
1. 上課時請專心,禁止玩遊戲。下課時間可以玩遊戲沒問題。
2. 課程中若需要討論,請控制音量,不要干擾其他同學。
3. 每次的課堂作業,應於當天完成。
4. 課堂中有問題,請舉手發問。
5. 課堂中禁止飲食,只能帶水至教室。

* https://ieh.mattc.art
* https://editor.p5js.org

# 基礎程式
## 1. if / else if / if

```javascript
function setup() {
  createCanvas(400, 400); 
  background(220);
}
function draw() {
  if(mouseIsPressed){
    circle(mouseX,mouseY,20);
  }else{
    rect(mouseX,mouseY,20)
  }
}
```
## 2. for 迴圈
迴圈讓我們可以重複執行相同的程式碼。在 p5.js 中，for 迴圈是最常用的迴圈之一。

```javascript
function setup() {
  createCanvas(400, 400); 
  background(220);
}
function draw() {
  for (let i = 0; i < 10; i++) {
    ellipse(50 + i * 30, 200, 20, 20);
  }
}
```

## 3. function

Bouncing DVD Logo Screensaver
https://www.bouncingdvdlogo.com/
<img src="https://hackmd.io/_uploads/rymVgkJTR.png" alt="drawing" style="height:100px;"/>

```javascript
let circleX = 100
let circleY = 100
let circleSize = 30
let velocityX = 5
let velocityY = 5

function setup(){
    createCanvas(400,500)
}
function draw(){
    background(0)
    circle(circleX, circleY, circleSize)

    circleY = circleY + velocityY
    circleX = circleX + velocityX

    if (circleY > height || circleY < 0){
        velocityY = -velocityY
    }
    if (circleX > width || circleX < 0){
        velocityX = -velocityX
    }
}
```

```javascript
function randomColor(){
    // random number between 0 - 255
    r = random(255); 
    g = random(255);
    b = random(255);
    fill(r, g, b, 255);
}
```

## 4. 作業

請依據前面範例，讓球在碰撞牆壁時改變顏色

## 5. 進階作業
承上題，把球改成文字 "DVD"
提示：function textSize() and text()


