2023年11月30日 星期四

學校滑鼠有夠爛 - Week12 - 互動技術🦆

 

Week12

期中作品展示

影片連結:點這裡

作品說明:
使用鍵盤 W、A、S、D 控制警察補捉小偷。成功捕捉一名小偷或誤捕一名民眾後,小偷及民眾會隨機重新生成在不同座標位置,在時間內捕捉越多小偷,分數越高。




int x = 500, y = 500;  // 警察初始座標
float thief_x = 150, thief_y = 300;  // 小偷初始座標
float people_x = 500, people_y = 300;  // 民眾初始座標

int a = 0;  // 初始分數
int b;  //剩餘遊戲時間
int c = 900; // 900豪秒=15s
PImage road;
PImage thief;
PImage police;
PImage people;

void setup() {
  size(800, 800);
  road = loadImage("road.jpg");
  thief = loadImage("thief.png");
  police = loadImage("police.png");
  people = loadImage("people.png");
}

void draw() {
  frameRate(35);  // 運行偵數
  background(road);
  move();  // 定義鍵盤的控制按鍵
  image(police, x, y);
  image(thief, thief_x, thief_y);
  image(people, people_x, people_y);
  over();
  if (sqrt((thief_x - x) * (thief_x - x) + (thief_y - y) * (thief_y - y)) < 25) {
    thief();
    people();
    a += 20;  // 計算警察與小偷距離判斷觸碰小偷得分
  }
  if (sqrt((people_x - x) * (people_x - x) + (people_y - y) * (people_y - y)) < 25) {
    thief();
    people();
    a -= 50;  // 計算警察與民眾距離判斷觸碰民眾扣分
  }
  font();  // 顯示得分和計時器
}

void move() {
  if (keyPressed) {
    if (key == 'a' && x != 0) {
      x -= 10;
    }
    if (key == 'd' && x != 600) {
      x += 10;
    }
    if (key == 'w' && y != 0) {
      y -= 10;
    }
    if (key == 's' && y != 600) {
      y += 10;
    }
  }
}

void thief() {// 隨機刷新小偷位置
  thief_x = random(50, 600); // X 座標在50 ~ 100間隨機選擇
  thief_y = random(50, 350); //Y 座標在 50 ~ 350 之間隨機選擇
}

void people() {// 隨機刷新民眾位置
  people_x = random(150, 600);
  people_y = random(50, 400);  
}

void font() {
  fill(0); //黑色字體
  textSize(24);  // 設定字體大小為 24
  text("Score: " + a, 10, 50);
  text("Time: " + b + "s", 550, 50);  // 顯示得分和計時器
}

void over() {
  c -= 1;
  b = c / 60;  // 將豪秒數轉換為秒
  if (c == 0) {
    fill(25, 40, 240);//設定填充顏色為藍色
    noStroke();//不使用邊框
    rect(200, 400, 450, 60);//畫一個長方形,顯示遊戲結束的(字體)背景框
    fill(0);
    String s = "Your score is: ";
    text(s, 220, 440);
    text(a, 450, 440);  // 顯示得分介面
    noLoop();  // 停止畫面更新
  }
}


作品需用到的圖片:
民眾

警察


小偷

背景

沒有留言:

張貼留言