2022年12月26日 星期一

(OwO)week17_12/26

這周進度:把圖片換成GIF動圖~

首先找個超可愛的圖,如下:


就完成了XD

 import gifAnimation.*;

PImage[] animation;

Gif loopingGif;

import processing.sound.*;

SoundFile Sound;


int N=10,b=0,k=2;

Domino [] d;

String [] number={" ","1","2","3","4","5","6"};

String [] word={"右鍵可將牌翻轉","a鍵可以讓牌轉90度","s鍵可以將牌重置","p鍵可以洗牌","q可以發牌"};

void setup(){

  size(1000,600);

  println("gifAnimation " + Gif.version());

  loopingGif = new Gif(this, "2.gif");

  loopingGif.loop();

  animation = Gif.getPImages(this, "2.gif");

  Sound = new SoundFile(this,"happy.mp3");

  Sound.play();

  Sound.loop();

  background(#F2EB98);

  

  PFont font = createFont("標楷體", 20);

  textFont(font);

  d= new Domino[N];

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

    d[i]=new Domino();

  }

  textSize(30);

  textAlign(CENTER,CENTER);

}


void draw(){

  background(#F2EB98);

  

  image(loopingGif, 0, height  - loopingGif.height );

  /*int animationIndex = (int)(map(mouseX, 0, width, 0, animation.length - 1));

  float gifWidth = animation[0].width;

  float gifHeight = animation[0].height;

  image(animation[animationIndex], width - 5 - gifWidth, height / 2 - gifHeight / 2);*/

  

  fill(#98EEF2);

  rect(0,0,210,30);

  rect(210,0,260,30);

  rect(470,0,330,30);

  rect(800,0,260,30);

  rect(0,550,180,50);

  

  fill(0);

  text(word[0],100,10);

  fill(0);

  text(word[1],340,10);

  fill(0);

  text(word[2],600,10);

  text("剩餘:",750,10);

  text(k,790,13);

  fill(0);

  text(word[3],900,10);

  fill(0);

  text(word[4],80,570);

  if(b==0){

    fill(#98EEF2);

    rect(300,250,300,100);

    

    fill(0);

    text("按下w開始遊戲",450,300);

    

  }

  if(b==1){

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

        if(d[i].a==0)d[i].draw();

        else d[i].draw2();

      }

  }  

  if(b==2){

    fill(#98EEF2);

    rect(300,250,300,100);

    

    fill(0);

    text("你輸了",450,300);

    }

    if(b==3){

    fill(#98EEF2);

    rect(300,250,300,100);

    

    fill(0);

    text("你贏了",450,300);

    }

}


void mousePressed(){

  if(mouseButton==RIGHT){    

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

      if(d[i].x<mouseX && mouseX<d[i].x+120 && d[i].y<mouseY && mouseY<d[i].y+60)

      {

        int t=d[i].n1;

        d[i].n1=d[i].n2;

        d[i].n2=t;               

      }

    }

  }

}


void keyPressed(){

  if(key=='a' || key=='A'){

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

         if(d[i].x<mouseX && mouseX<d[i].x+120 && d[i].y<mouseY && mouseY<d[i].y+60){

          if(d[i].a==0)d[i].a=1;

          else d[i].a=0;          

      }

    }

  }  

    if(key=='s' || key=='S'){       

       if(k>0){

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

           if(d[i].x<mouseX && mouseX<d[i].x+120 && d[i].y<mouseY && mouseY<d[i].y+60 ){

              if(k>0)k--;

              d[i].n1=(int)random(7);

              d[i].n2=(int)random(7);    

        } 

      }

    }

  }  

  if(key=='p' || key=='P'){

     k=2;

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

          d[i].n1=(int)random(7);

          d[i].n2=(int)random(7);

          d[i].x=(int)random(100,800);

          d[i].y=(int)random(100,500);

    }

  }

  if(key=='w' || key=='W'){     

        N=1;

        if(b==0)b=1;

        else b=0;

  }

  if(key=='q' || key=='Q'){     

       if(N<10) N++;      

  }

  if(key=='e' || key=='E'){     

       if(N>0) N--;      

  }

  if(key=='o' || key=='O'){     

      b=2;     

  }

  if(key=='l' || key=='L'){     

      b=3;     

  }

}


void mouseDragged(){

  for(int i=0;i<N;i++)

  {

    if(d[i].x<mouseX && mouseX<d[i].x+120 && d[i].y<mouseY && mouseY<d[i].y+60){

      d[i].x+=(mouseX-pmouseX);

      d[i].y+=(mouseY-pmouseY);

    }

  }

}


class Domino{

  int x,y;

  int n1,n2;

  int a;

  Domino(){

    x=(int)random(100,800);

    y=(int)random(100,500);

    n1=(int)random(7);

    n2=(int)random(7);

    a=0;

  }

  void draw(){

      fill(50);

      rect(x+60,y,60,60);

      rect(x,y,60,60);

      fill(255);

      text(number[n1],x+30,y+30);

      text(number[n2],x+60+30,y+30);

  }

  void draw2(){

      fill(50);

      rect(x,y,60,60);

      rect(x,y+60,60,60);

      fill(255);

      text(number[n1],x+30,y+30);

      text(number[n2],x+30,y+60+30);

  }

}


參考網址:https://cloud.tencent.com/developer/article/1901794


沒有留言:

張貼留言