2023年1月5日 星期四

CY.hsin week18

 //加入背景音樂(BG)及答對音效(hit)//

import processing.sound.*;

SoundFile soundBG, soundHit;

void setup() {

    size(300,500);//300*500的視窗

    soundBG =  new SoundFile(this, "Timer Sound.mp3");//背景音樂

    soundBG.loop();//重複播放

    soundBG.play();//撥放音樂

    soundHit = new SoundFile(this, "hit.mp3");//點擊的音效

    

    colorMode(HSB);//色彩模式:H色調、S飽和度、B亮度

    textAlign(CENTER);//文字置中

    textSize(20);//文字大小

    nextLevel();//呼叫Next Level來設定答案和色差值

}


 int H=0, S=255, B=360;//色彩模式:H色調、S飽和度、B亮度

 int N=2;

 int T=20000;//20.000毫秒=20秒

 int oldT=0;

 int Level=0;//第幾關

 float R=0;//圓的直徑,改用float浮點數計算比較精確

 int ansX, ansY,diffH, diffS, diffB;//答案位置和色差量


 void draw(){//互動模式的畫圖,每秒60次

  background(#E3D7D7);//背景顏色

  

  //計算時間//

  fill(#763B3B);//文字顏色

  text("LEVEL",75,80);//印出等級標題

  text("TIME",230,80);//印出時間標題

  fill(0);//字是黑色

  text(Level,75,120);

  T-=(millis()-oldT);//計算剩下的時間

  oldT=millis();//用掉的時間

  if(T<0)T=0;//遇到0就不要再扣

  int t1=int(T/1000);

  int t2=int(T/100%10);

  int t3=int(T/10%10);

  text(t1+":"+t2+t3,230,120);

  

  //畫圓圈圈//

  int R0=300/N,r0=R0/2;//RO=直徑300的圓,r0=半徑

  for(int x=0;x<N;x++){

      for(int y=0;y<N;y++){

        fill(H,S,B);

        if(x==ansX && y==ansY){

            fill(H+diffH,S+diffS,B+diffB);//答案有色差量

        }

        ellipse(r0+x*R0,200+r0+y*R0,R,R);

      }

  }

  if(R<R0) R+=R0/60.0;//每次增大1/60

}


 //點擊設定//

void mousePressed(){

  int R0=300/N,r0=R0/2;//RO=直徑300的圓,r0=半徑

  if(dist(mouseX,mouseY, r0+ansX*R0,200+r0+ansY*R0)<R/2){

      soundHit.play();//答對播音效

      nextLevel();//進到下一關

      T+=2000;//答對加兩秒

  }

}


 //關卡設定//

void nextLevel(){

    Level++;//下一關

    R=0;//直徑回到0

    H+=20;//每次改變顏色的HUE色調

    if(H>255)H-=255;

    

    if(Level>N*N*1.5)N++;//增價數量的機制

    if(N>8)N=2;//避免圓太多

    

    ansX=int(random(N));//答案位置

    ansY=int(random(N));//答案位置

    int R0=300/N,r0=R0/2;//直徑300/N,半徑一半

    diffH=int(random(8.8+R0/Level));//答案的色差量

    diffS=int(random(8.8+R0/Level));//答案的色差量

    diffB=int(random(8.8+R0/Level));//答案的色差量

}

沒有留言:

張貼留言