2019年9月19日 星期四

Week02_黃偉愷

1. 滑鼠互動


Code:
void setup() {
  // 初始化
  size(800, 800);
}

void draw() {
  // 更新畫面
  rect(mouseX, mouseY, 100, 100); //在滑鼠所在的座標畫方匡
}

2. 打卡機


Code:
void setup() {
  // 初始化
  size(800, 300);
  
  // 畫打卡單的洞洞
  for (int x=0; x<800; x+=16) {
    for (int y=0; y<300; y+=30) {
      rect(x, y, 16, 30);
    }
  }
}

void draw() {
  // 更新畫面
  
  int nowX = mouseX/16*16, nowY = mouseY/30*30; //拿到游標所在的位置
  
  if (mousePressed && mouseButton==LEFT) {
    // 按下左鍵即會在游標位置打洞
    fill(0, 0, 0); //洞的顏色為黑色
    rect(nowX, nowY, 16, 30);
    
  } else if (mousePressed && mouseButton==RIGHT) {
    // 按下右鍵即會在游標位置畫上白色
    fill(255, 255, 255); //畫白色
    rect(nowX, nowY, 16, 30);
  }
}

3. 讀圖和顯示圖


Code:
PImage img; //用來放讀入的圖片

void setup() {
  size(900, 500);
  img = loadImage("infor.png"); //載入圖片
}

void draw() {
  if (mousePressed) {
    image(img, mouseX, mouseY, 175, 100); //將圖片畫到畫面上,175、100分別代表圖片的長和寬
  }
}

4. 加入背景和消除洞功能的打卡機


Code:
PImage imgBG; //用來存圖的變數
int[][] table = new int[90][20]; //用來存座標位置的陣列

void setup() {
  size(900, 400);
  imgBG = loadImage("Punched card 049.jpg"); //讀入圖片
}

void draw() {
  image(imgBG, 0, 0, 900, 400); //顯示圖片
  
  int hole_W=10, hole_H=20; //洞的大小
  int nowX=mouseX/hole_W, nowY=mouseY/hole_H; //拿到游標所在的位置
  
  //將已打的洞都畫出來
  for (int x=0; x<90; x++) {
    for (int y=0; y<20; y++) {
      if (table[x][y] == 1) {
        fill(0, 0, 0); //洞的顏色為黑色
        rect(x*hole_W, y*hole_H, hole_W, hole_H);
      }
    }
  }
  

  if (mousePressed && mouseButton==LEFT) {
    // 按下左鍵就打洞
    table[nowX][nowY] = 1;
    
  } else if (mousePressed && mouseButton==RIGHT) {
    // 按下右鍵就把洞消除
    table[nowX][nowY] = 0;
  }
}


沒有留言:

張貼留言

alanhc 互動技術-week17 [final]

回顧這學期的作品:  期中作業:LANDING:PLANET 賣點&特點: 炫麗的特效 物理(星球重力及降落)及粒子系統(噴射) 世界地圖可根據視角縮放 困難點: 重寫3次最終改寫成物件導向的CLASS寫法...