PImage a; //蚊子
PImage b; //蚊拍
//PImage c;
int[] x;
int[] y;
int[] z; //x,y座標 i隻蚊子
int score=0;
int count=50;
void setup(){
size(800,800);
background(0);
a = loadImage("pic1.jpg"); //載入蚊子
// saveFrame("pic0.jpg");
b = loadImage("pic2.jpg"); //載入蚊拍
// c = loadImage("pic0.jpg");
x=new int[50];
y=new int[50];
z=new int[50];
for(int i=0;i<50;i++){ //設定50隻蚊子
z[i]=1;
x[i]=(int)random(0,800); //x=0~800
y[i]=(int)random(100,800); //y=100~800
}
for(int i=0;i<50;i++){if(z[i]==1)image(a,x[i],y[i]);}//印出50隻蚊子 }
void draw(){
background(0); //洗畫面
PFont font; // 設一字體
font=loadFont("AmericanTypewriter-24.vlw"); //載入字體
textFont(font); //字體
fill(255,0,0); //score的字體顏色
textSize(20); //字體大小
text("score:",650,50); // 印出score:
text(score,750,50);
image(b,mouseX-50,mouseY-50);
for(int i=0;i<50;i++){
if(mousePressed==true){
if(mouseButton==LEFT){
if(x[i]<=mouseX && x[i]>=mouseX-50 && y[i]<=mouseY && y[i]>=mouseY-50 && z[i]==1 && score<50){
z[i]=0; //第i隻蚊子kill
score++;
}
}
}
}
for(int i=0;i<50;i++){if(z[i]==1){image(a,x[i],y[i]);}}
if(score==50){
background(255);
fill(255,0,0);
textSize(100);
text("Winner:",350,50);
}
}
這次期中上機考分為兩部分,一為現場上機考,二為回家完成。
這次期中上機考分為兩部分,一為現場上機考,二為回家完成。
然而,在現場的上機考只做出了random50隻蚊子、蚊拍和文字部分,無法進行打蚊子的動作。
當下沒有想到要用array去做,雖然當時老師有提醒不過到沒有去想到那部分,與分數擦身而過了。
當初一開始想要利用save圖檔和load圖檔去做,製造出50隻蚊子後存檔圖片後,再讀取圖檔,打一隻存檔再讀取,利用覆蓋的反覆動作將50隻蚊子殲滅。不料在時間內無法執行,程式作業很現實的就是看結果,不是0就是1,小小部分未完成就是錯的,導致在上機部分當下有點小失落。
考完過後,和兩位完成的高手討論過後發現,其實利用array去存取x&y座標就不用擔心蚊子的座標和滑鼠座標無法配合的問題了,也不會有怎麼打都打不死的問題出現。還可以做一些有趣變化,使得不單單只是蚊拍打蚊子,可以說是經過開點後不同凡響啊!
沒有留言:
張貼留言