2022/1/3 我的期末作品
------------------------------------------------------------
玩法:選取左邊任相鄰且相同的圖片,選對了可以消除,選取不相同
或不相鄰的圖片便不行
程式碼運用方向:基本的讀圖、讀音檔、讀影檔都包含在內,還有文
字以及時間的呈現。首先先讀入所需的圖片檔(一共有6種),然後利
用random隨機在100張圖片中呈現,接著使用boolean neighbor來判斷
是否為相鄰。最後利用mousePressed()、mouseDragged()、mouseRelease()
滑鼠按下、拖曳、放開來完成施放動作。
PFont myFont;
import processing.video.*;
Movie movie;
import ddf.minim.*;
Minim minim;
AudioPlayer player,player2,player3;
int [][]card = new int[10][10];
PImage []img=new PImage[6];
PImage pic,like;
void setup(){
size(800,500);
pic = loadImage("pic.png");
like = loadImage("like.png");
movie = new Movie(this, "run.mp4");
movie.loop();
myFont = createFont("新細明體",100);//中文
textFont(myFont);//中文
minim = new Minim(this);
player = minim.loadFile("run.mp3");
player2 = minim.loadFile("bingo.mp3");
player3 = minim.loadFile("wrong.mp3");
//player.play();
for(int i=0;i<6;i++) img[i]=loadImage(""+i+".png");
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
card[i][j]=int(random(4));
}
}
}
int firstI=-1,firstJ=-1,secondI=-1,secondJ=-1;
void draw(){
background(255);
image(pic, 0, 0);
textSize(20); fill(0);
text("選取左側任意兩個相連的圖片" ,520,50);
text("若圖片相同則可以消除" ,520,100);
text("您一共浪費了"+millis()/1000+"秒鐘",520,150);
text("恭喜找到"+ans+"組" ,520,200);
image(like, 530, 400);
image(movie, 520,250, width/3, height/3);//衝衝
strokeWeight(1);
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(card[i][j]==-1) continue;
image(img[card[i][j]], j*50,i*50);
}
}
if(firstI!=-1){
noFill(); strokeWeight(5);
rect(firstJ*50,firstI*50,50,50);
}
if(secondI!=-1){
noFill(); strokeWeight(5);
rect(secondJ*50,secondI*50,50,50);
}
}
void movieEvent(Movie m){
m.read();
}
void mousePressed(){
if(mouseX<500&&mouseY<500){
int j = mouseX/50, i=mouseY/50;
firstI=i; firstJ=j;
secondI=-1;
}
}
void mouseDragged(){
if(mouseX<500&&mouseY<500){
int j = mouseX/50, i=mouseY/50;
secondI=i; secondJ=j;
}
}
int ans=0;
void mouseReleased(){
if(mouseX<500&&mouseY<500){
if(firstI==secondI && firstJ==secondJ) return;
if(secondI==-1) return;
if(card[firstI][firstJ] == card[secondI][secondJ]){
if(neighbor(firstI,firstJ,secondI,secondJ)==true){
card[firstI][firstJ]=-1;
card[secondI][secondJ]=-1;
ans++;
player2.rewind();
player2.play();
println(ans);
}else{
player3.rewind();
player3.play();
}
}else{
player3.rewind();
player3.play();
}
}
}
boolean neighbor(int firstI,int firstJ,int secondI,int secondJ){
if(firstI==secondI){
if(firstJ+1==secondJ) return true;
if(firstJ-1==secondJ) return true;
}
if(firstJ==secondJ){
if(firstI+1==secondI) return true;
if(firstI-1==secondI) return true;
}
return false;
}
沒有留言:
張貼留言