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(); // 停止畫面更新 } }
作品需用到的圖片:
民眾
警察
小偷
背景





沒有留言:
張貼留言