顯示具有 08160226_李華燿 標籤的文章。 顯示所有文章
顯示具有 08160226_李華燿 標籤的文章。 顯示所有文章

2022年1月16日 星期日

week 19 期末作品的介紹和心得

 


https://www.youtube.com/watch?v=RbMsCHvwbFs


附上程式碼

PImage Lgg,Rgg,bg,kfc;

int score=0;

boolean pass = false,dead = false;


PImage []imgCar=new PImage[8];

float [] carX = new float[10];

float [] carY = new float[10];

int [] r = new int[10];

int [] speed = new int[10];


int chkID=0,notID=0;

float []chkX=new float[10];

float []chkY=new float[10];

float []chkVX=new float[10];

float []chkVY=new float[10];

boolean[]run=new boolean[10];


int Mx=mouseX,My=mouseY;


void setup()

{

  size(800,600);

  Lgg=loadImage("ChickL.png");

  Rgg=loadImage("ChickR.png");

  bg=loadImage("bg2.png");

  kfc=loadImage("LFC.png");

  imgCar[0]=loadImage("car1.png");

  imgCar[1]=loadImage("car2.png");

  imgCar[2]=loadImage("car3.png");

 

  

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

    chkX[i]=random(10,200);

    chkY[i]=random(10,600);

    chkVX[i]=random(-2,2);

    chkVY[i]=random(-2,2);

  }

  

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

  {

    carX[i] = random(325,570);

    carY[i] = random(50,100)*i;

  }

  

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

  {

    r[i] = int(random(3));

  }

  

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

  {

    speed[i] = int(random(6,10));

  }

}


void draw()

{

  image(bg,0,0,800,600);

  image(kfc,590,160,200,250);

  Mx=mouseX;

  text(Mx,2,30);

  My=mouseY;

  text(My,50,30);

  textSize(20);

  text("Fried Chicken:"+score,610,50);//分數

  

  

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

  {

    if(dist(chkX[chkID],chkY[chkID],carX[i],carY[i])<=30)

    {

      dead = true;

    }

    

    if(dead == true)

    {

      chkX[chkID]=1000;

      chkY[chkID]=1000;

      image(kfc,590,160,200,250);

      dead=false;

    }

  }//車禍

  

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

    if(chkID==i){

      strokeWeight(3);

    }

    else {

      strokeWeight(1);

    }

    fill(255);

    ellipse(chkX[i],chkY[i],5,5);

    chkX[i]+=chkVX[i];

    chkY[i]+=chkVY[i];

    if(chkY[i]<0)chkVY[i]= abs(chkVY[i]);

    if(chkY[i]>560)chkVY[i]= -abs(chkVY[i]);

    if(chkX[i]<0)chkVX[i]= abs(chkVX[i]);

    if(run[i]==false && chkX[i]>180)chkVX[i]= -abs(chkVX[i] );

    if(chkVX[i]>=0)image(Rgg,chkX[i]-12,chkY[i]-12);

    else if(chkVX[i]<=0)image(Lgg,chkX[i]-12,chkY[i]-12);

  }

  

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

  {

    int now=r[i];

    int s=speed[i];


    image(imgCar[now], carX[i], carY[i]);

    carY[i]+=s;

    

    if (carY[i]>600)

    {

       carY[i]=-100;

       carX[i]=random(325, 570);

    }

  }

  

  

  if(chkX[chkID]>640 && chkX[chkID]<740 && chkY[chkID]>210 && chkY[chkID]<340){

    pass = true;

  }

  

  if(pass == true)

  {

    score++;

    chkX[chkID]=1000;

    chkY[chkID]=1000;

    image(kfc,590,160,200,250);

    pass=false;

  }

}


void keyPressed()

{

  if(keyCode == RIGHT)

  {

      chkVX[chkID]=3;

      chkVY[chkID]=0;

  }

  if(keyCode == LEFT)

  {

      chkVX[chkID]=-3;

      chkVY[chkID]=0;

  }

  if(keyCode == UP)

  {

    chkVY[chkID]=-3;

    chkVX[chkID]=0;

  }

  if(keyCode == DOWN)

  {

    chkVY[chkID]=3;

    chkVX[chkID]=0;

  }

  

}


void mousePressed()

{

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

     if(dist(mouseX,mouseY,chkX[i],chkY[i])<10){

       chkID=i;

       run[chkID]=true;

     }

   }

 }


遊戲介紹

想必大家小時候都有玩過小雞過馬路吧,我們也很喜歡所以就試著用PROCESSING去寫寫看 

第1行~第18行整個都是在對遊戲裡的物件做宣告,像是遊戲裡的柵欄、小雞、滑鼠和上下左右去進行操控

為了還原小雞過馬路當下的緊張感,我們也在第103~第109行做了車子隨機亂數產生,

第68行~第82行就是當小雞撞到汽車的判定是否合理,以及做扣分、加分的分數計算


整體的遊玩方式就是,先從畫面左方用滑鼠左鍵點選一隻小雞,那麼這隻小雞就是你當下可以操控的,想辦法讓牠安全的過馬路到對面

那麼剩下的雞我們也有給參數,就是不會讓牠們衝出我們設計的柵欄區。

就這樣循環以上步驟,一一將小雞送回右側的炸雞店就算挑戰成功


心得

能利用老師所教的程式,寫出一項完整的遊戲真的很感動,有種多了個技能的感覺,相信自己也有很多的可能性去完成更多小遊戲的挑戰

也謝謝小葉老師,在做這項期末報告之前,有給予我們一點點的提示,去幫助我們做完,相信未來我會加以運用寫程式的技巧,去完成更多難關


2021年12月20日 星期一

week 15 期末作品Fighting~

  int chkID=0;

float []chkX=new float[10];

float []chkY=new float[10];

float []chkVX=new float[10];

float []chkVY=new float[10];

boolean[]run=new boolean[10];

void setup(){

  size(400,300);

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

    chkX[i]=random(10,150-10);

    chkY[i]=random(10,300-10);

    chkVX[i]=random(-0.3,0.3);

    chkVY[i]=random(-0.3,0.3);

  }

}

void draw(){

  background(122,171,185);

  fill(102,166.28);

  rect(0,0,150,300);

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

    if(chkID==i)strokeWeight(3);

    else strokeWeight(1);

    fill(255);ellipse(chkX[i],chkY[i],20,50);

    chkX[i]+=chkVX[i];

    chkY[i]+=chkVY[i];

    if(chkY[i]<0)chkVY[i]= abs(chkVY[i]);

    if(chkY[i]>300)chkVY[i]= -abs(chkVY[i]);

    if(chkX[i]<0)chkVX[i]= abs(chkVX[i]);

    if(run[i]==false && chkX[i]>150)chkVX[i]= -abs(chkVX[i] );

  }

}

void keyPressed(){

  int i=chkID;

  if(keyCode==RIGHT){chkVX[i]=1; chkVY[i]=0;}

  else if(keyCode==LEFT){chkVX[i]=-1;chkVY[i]=0;}

  else if(keyCode==UP){chkVX[i]=0;chkVY[i]=-1;}

  else if(keyCode==DOWN){chkVX[i]=0;chkVY[i]=1;}

  run[i]=true;

 }

 void mousePressed(){

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

     if(dist(mouseX,mouseY,chkX[i],chkY[i])<10)chkID=i;

   }

 }


2021年11月29日 星期一

week12 互動電網

 

今天開始來想 如何呈現自己的電網期末作品

開始參考大家想到的遊戲主題


PImage img;

void setup(){

  size(500,500);

  img=loadImage("img.jpg");

  imageMode(CENTER);

}

int a=0, b=0, x=250, y=250;

void draw(){

  background(255);

  //image( img, 0,0);

  image(  img.get(141*a, 211*b, 141,211), x,y);

  if(frameCount%30==0) a = (a+1)%4;

}

void keyPressed(){

  if(keyCode==RIGHT){ b=3; x++; }

  if(keyCode==LEFT) { b=2; x--; }

  if(keyCode==UP) { b=1; y--; }

  if(keyCode==DOWN){ b=0; y++; }

}





2021年11月22日 星期一

week 11 期末該做啥

煩惱著該座什麼期末作品時,突然回想起小時候的童年遊戲

小雞過馬路

於是就請老師示範了該如何去做 初步簡單認識
也讓我更加清楚整體的方向





 

2021年11月15日 星期一

week 06 時間滴答滴答的走

 

(日常 慵懶的天 果然還是在家最舒服:))雙下巴)


好~開始我們的今日份processing吧


void setup(){
    size(600,600);///視窗大小
    fill(255,0,0);///字顏色
    textSize(80);///字大小
}
void draw(){
    text("Hello",50,100);///在畫布中寫出來的字
}

計時開始~~~



void setup(){
    size(600,600);
    fill(255,0,0);
    textSize(80);
}
void draw(){
    background(255);
    text("Time:"+frameCount,50,100);
}

完成碼表




void setup(){
    size(600,600);
    fill(255,0,0);
    textSize(80);
}
void draw(){
    background(255);
    text("Time:"+frameCount/60,50,100);///
    text("millis()"+millis()/1000,50,200);///毫秒
}




void setup(){
    size(600,600);
    fill(255,0,0);
    textSize(80);
}
void draw(){
    background(255);
    text(hour()+":"+minute()+":"+second(),50,100);
    text("millis()"+millis()/1000,50,200);
}


計算剩餘的時間

void setup(){
  size(500,500);
  fill(255);//填充顏色
  textSize(80);//文字大小
}
void draw(){
  background(#075BB2);
  String hh=nf(hour(),2);
  String mm=nf(minute(),2);
  String ss=nf(second(),2);
  text(hh+":"+mm+":"+ss,50,100);
  text("15:40:00",50,200);
  
  int now=hour()*60*60+minute()*60+second();
  int next=15*60*60+40*60+0;
  int remain=next-now;
  text(remain,50,300);
}


2021年10月18日 星期一

week 03 線上上課就是快樂

 

                                            用processing放出喵嗚的圖片

增加一點難度 將貓咪在星空中閃耀OuO


2021年9月27日 星期一

week02


(來點日常抱怨...什麼時候才能回學校上課嗚嗚嗚)



今天教的使用processing

畫圖很方便,簡單的幾句程式碼完成你所要的圖


size(600,600);//(1) 畫布大小


background(#30A4D8);//背景色


//(2) 顏色: 背景色、畫的顏色


rect(100,100, 400,400);//(3)方塊


ellipse(200,300, 30,30);//圓





先畫一隻企鵝


size(600,600);//(1) 大小


background(#30A4D8);//(2)背景色


stroke(204,102,0);//(5)筆觸色


strokeWeight(5);//線條粗細


rect(100,100, 400,400);//(3)方塊


ellipse(200,300, 30,30);//(4)圓


ellipse(400,300, 30,30);


ellipse(300,400, 200,100);


line(200,400, 400,400);


再來做嘴巴鼓起來的的企鵝



size(600,600);

background(128);


fill(255);//臉

noStroke();

rect(100,100,400,400);


stroke(51);

strokeWeight(5);//雙眼的長和寬

ellipse(200,300, 30,30);

ellipse(400,300, 30,30);


noStroke();

fill(#CC6600);//嘴巴

ellipse(300,400,200,100);


stroke(255);//嘴巴的線

line(200,400, 400,400);