顯示具有 04162523_劉旆君 標籤的文章。 顯示所有文章
顯示具有 04162523_劉旆君 標籤的文章。 顯示所有文章

2018年1月22日 星期一

Week 19 期末作品展示

04160214 郭晉瑜
04162523 劉旆君




Ardiuno 程式碼
const int SW_pin = 2; // digital pin connected to switch output
const int X_pin = 0; // analog pin connected to X output
const int Y_pin = 1; // analog pin connected to Y output


void setup() {
  pinMode(SW_pin, INPUT);
  digitalWrite(SW_pin, HIGH);
  Serial.begin(115200);
}

void loop() {
  Serial.write(digitalRead(2));
  Serial.write(analogRead(A0)/4);
  Serial.write(analogRead(A1)/4);
  delay(150);
}

Processing程式碼
import processing.serial.*;
Serial myPort;
PImage img0,img1,img2,img3,bg;
int stage=0;
int time=0;
void setup(){
  size(600,500);
  img0 = loadImage("Crab.png");
  img1 = loadImage("Bear.png");
  img2 = loadImage("Panda.png");
  img3 = loadImage("fox.png");
  bg = loadImage("sky.jpg");
  myPort = new Serial(this, "COM3", 115200);
}
float grabX=50, grabY=50;
float bearX=150,bearY=200;
float pandaX=350,pandaY=250;
float foxX=500,foxY=300;
float holeX=100,holeY=400;
boolean Gotit=false;
boolean Gotit1=false;
boolean Gotit2=false;
boolean bearAlive=true;
boolean pandaAlive=true;
boolean foxAlive=true;
void draw(){
  background(bg);
 if(myPort.available()>0){
 /*   t=myPort.read();
    if(t=='w') pin2=myPort.read();
    else if(t=='x') x=myPort.read();
    else if(t=='y') y=myPort.read();*/
    int pin2=myPort.read();
    int x=myPort.read();
    int y=myPort.read();
    analyze(y,x);
    if(pin2==1 && dist(grabX,grabY,bearX,bearY)<50)
    {
      Gotit=true;
    }
    else if(dist(bearX,bearY,holeX,holeY)<100){
      bearAlive=false;
    }
    if(pin2==1 && dist(grabX,grabY,pandaX,pandaY)<50){
      Gotit1=true;
    }
    else if(dist(pandaX,pandaY,holeX,holeY)<100){
      pandaAlive=false;
    }
    if(pin2==1 && dist(grabX,grabY,foxX,foxY)<50){
      Gotit2=true;
    }
    else if(dist(foxX,foxY,holeX,holeY)<100){
      foxAlive=false;
    }
    println(x+" "+y);
  }
  if(stage==0){
    textSize(80);
    text("start game",125,250);
  }
  else if(stage==1){
    ellipse(holeX,holeY,100,100);
    if(bearAlive) image(img1,bearX,bearY,100,100);
    if(pandaAlive) image(img2,pandaX,pandaY,100,100);
    if(foxAlive) image(img3,foxX,foxY,100,100);
    fill(200); image(img0,grabX,grabY,120,100);
    if(keyCode==' ' && dist(grabX,grabY,bearX,bearY)<50){
      Gotit=true;
    }
    else if(dist(bearX,bearY,holeX,holeY)<100){
      bearAlive=false;
    }
    if(keyCode==' ' && dist(grabX,grabY,pandaX,pandaY)<50){
      Gotit1=true;
    }
    else if(dist(pandaX,pandaY,holeX,holeY)<100){
      pandaAlive=false;
    }
    if(keyCode==' ' && dist(grabX,grabY,foxX,foxY)<50){
      Gotit2=true;
    }
    else if(dist(foxX,foxY,holeX,holeY)<100){
      foxAlive=false;
    }
    textSize(30);
    text("Time:"+time/60,5,35);
    time--;
    if(time<0) stage=2;
 
  }
  else if(stage==2)
  {
    textSize(80);
    text("Game Over",125,250);
  }
}
void mousePressed(){
  if(stage==0){
    stage=1;   time=60*60;
    grabX=50;  grabY=50;
    bearX=150; bearY=200;
    pandaX=350;pandaY=250;
    foxX=500;  foxY=300;
    holeX=100; holeY=400;
    Gotit=false;
    Gotit1=false;
    Gotit2=false;
    bearAlive=true;
    pandaAlive=true;
    foxAlive=true;
  }
  if(stage==2){
    stage=0;
  }
}
void analyze(int x, int y){
  if(y>200){
    grabY-=7;
    if(Gotit) bearY-=7;
    if(Gotit1) pandaY-=7;
    if(Gotit2) foxY-=7;
  }
  if(y<50){
    grabY+=7;
    if(Gotit) bearY+=7;
    if(Gotit1) pandaY+=7;
    if(Gotit2) foxY+=7;
  }
  if(x<50){
    grabX-=7;
      if(Gotit) bearX-=7;
      if(Gotit1) pandaX-=7;
      if(Gotit2) foxX-=7;
  }
  if(x>200){
    grabX+=7;
      if(Gotit) bearX+=7;
      if(Gotit1) pandaX+=7;
      if(Gotit2) foxX+=7;
   }
}
void keyPressed(){
  if(keyCode==UP){
    grabY-=7;
    if(Gotit) bearY-=7;
    if(Gotit1) pandaY-=7;
    if(Gotit2) foxY-=7;
  }
  if(keyCode==DOWN){
    grabY+=7;
      if(Gotit) bearY+=7;
      if(Gotit1) pandaY+=7;
      if(Gotit2) foxY+=7;
  }
  if(keyCode==LEFT){
    grabX-=7;
      if(Gotit) bearX-=7;
      if(Gotit1) pandaX-=7;
      if(Gotit2) foxX-=7;
  }
  if(keyCode==RIGHT){
    grabX+=7;
      if(Gotit) bearX+=7;
      if(Gotit1) pandaX+=7;
      if(Gotit2) foxX+=7;
   }
}



2017年11月20日 星期一

Week10 喵喵喵喵喵的期中作品展示

04162523 劉旆君
04160214 郭晉瑜

作品名稱:夾娃娃機

week10 郭晉瑜期中作品展示

夾娃娃機期中作品
04160214 郭晉瑜
04162523 劉旆君











影片連結
https://youtu.be/J1riNJljKeo


遊戲說明
    我們做的是夾娃娃機,一開始在開始畫面,可以按滑鼠任意鍵進入遊戲。遊戲畫面中,可以使用方向鍵控制方向以及空白建抓取物品,當物品被夾入洞口後,物品會消失,即可在夾下一件物品,我們總共有25秒的時間可以自由抓取,時間結束後將會跳至遊戲結束畫面,此時再按滑鼠任意鍵即可重新開始。

2017年10月30日 星期一

Week06 喵喵喵喵喵的上課筆記

●爆爆王

Step1:

void setup(){
  size(850,500);
}
void draw(){
  background(#92AD28);
  noStroke();
  for(int x=0;x<17;x++){
    for(int y=0;y<10;y++){
      if((x-y)%2==0)fill(#7E9819);
      else fill(#92AD28);
      rect(x*50,y*50,50,50);
    }
  }
}



Step2:

float userX,userY;
void draw(){
  background(#92AD28);
  noStroke();
  for(int x=0;x<17;x++){
    for(int y=0;y<10;y++){
      if((x-y)%2==0)fill(#7E9819);
      else fill(#92AD28);
      rect(x*50,y*50,50,50);
    }
  }
  fill(255,0,0);ellipse(userJ*50+25,userI*50+25,50,50);
}
void keyPressed(){
   if(keyCode==LEFT)userJ--;
   if(keyCode==RIGHT)userJ++;
   if(keyCode==UP)userI--;
   if(keyCode==DOWN)userI++;
}



Step3:

void setup(){
  size(850,500);
}
int userJ=9,userI=5;
float userX,userY;
int waterN=0;
int []waterJ=new int[100];
int []waterI=new int[100];
void draw(){
  background(#92AD28);
  noStroke();
  for(int i=0;i<17;i++){
    for(int j=0;j<10;j++){
      if((j-i)%2==0)fill(#7E9819);
      else fill(#92AD28);
      rect(j*50,i*50,50,50);
    }
  }
  fill(255,0,0);ellipse(userJ*50+25,userI*50+25,50,50);
  for(int i=0;i<waterN;i++){
    fill(#93E1F7);ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);
  }
}
void keyPressed(){
   if(keyCode==LEFT)userJ--;
   if(keyCode==RIGHT)userJ++;
   if(keyCode==UP)userI--;
   if(keyCode==DOWN)userI++;
   if(key==' '){waterI[waterN]=userI; waterJ[waterN]=userJ; waterN++;
 }
}



●鱷魚咬咬

Step1:

void setup(){
  size(500,500);
}
void draw(){
  background(255);
  fill(0,155,0);ellipse(250,250,300,300);
  for(int i=0;i<9;i++)
  {
    fill(255);rect(110+i*30,200,30,30);
    if(110+i*30<mouseX && mouseX<110+i*30+30 && 200<mouseY && mouseY<200+30){
      fill(0);rect(110+i*30,200,30,30);
    }
  }
  for(int i=0;i<9;i++){
    fill(255);rect(110+i*30,300,30,30);
  if(110+i*30<mouseX && mouseX<110+i*30+30 && 300<mouseY && mouseY<300+30){
    fill(0);rect(110+i*30,300,30,30);
    }
  }
}



Step2:

int bad=0;
void setup(){
  size(500,500);
  bad= int(random(18));
  println(bad);
}
void draw(){
  background(255);
  fill(0,155,0);ellipse(250,250,300,300);
  for(int i=0;i<9;i++){
    fill(255);rect(110+i*30,200,30,30);
    if(110+i*30<mouseX && mouseX<110+i*30+30 && 200<mouseY && mouseY<200+30){
      fill(0);rect(110+i*30,200,30,30);
    }
    if(bad==i){fill(255,0,0);rect(110+i*30,200,30,30);}
  }
  for(int i=0;i<9;i++){
    fill(255);rect(110+i*30,300,30,30);
  if(110+i*30<mouseX && mouseX<110+i*30+30 && 300<mouseY && mouseY<300+30){
    fill(0);rect(110+i*30,300,30,30);
    }
    if(bad==i+9){fill(255,0,0);rect(110+i*30,300,30,30);}
  }
}



Step2:有分失敗狀況和遊玩選擇狀況圖

int bad=0;
int [] all=new int [18];
void setup(){
  size(500,500);
  bad= int(random(18)); all[bad]=1;
  println(bad);
}
boolean bGameOver=false;
void draw(){
  if(bGameOver){
  background(255,0,0);
  return;
  }
  background(255);
  fill(0,155,0);ellipse(250,250,300,300);
  for(int i=0;i<9;i++){
    if(all[i]==-1)continue;
    fill(255);rect(110+i*30,200,30,30);
    if(110+i*30<mouseX && mouseX<110+i*30+30 && 200<mouseY && mouseY<200+30){
      fill(0);rect(110+i*30,200,30,30);
      if(mousePressed && all[i]!=1) all[i]=-1;
      if(mousePressed && all[i]==1) bGameOver=true;
    }
    //if(bad==i){fill(255,0,0);rect(110+i*30,200,30,30);}
  }
  for(int i=0;i<9;i++){
    if(all[i+9]==-1)continue;
    fill(255);rect(110+i*30,300,30,30);
  if(110+i*30<mouseX && mouseX<110+i*30+30 && 300<mouseY && mouseY<300+30){
    fill(0);rect(110+i*30,300,30,30);
     if(mousePressed && all[i+9]!=1) all[i+9]=-1;
     if(mousePressed && all[i+9]==1) bGameOver=true;
    }
    //if(bad==i+9){fill(255,0,0);rect(110+i*30,300,30,30);}
  }
}





●射擊人物移動遊戲

Step1:

2017年10月16日 星期一

Week05 喵喵喵喵喵的上課筆記

●畫出會跟著滑鼠移動的眼睛

Step1:

void setup(){
  size(400,400);
}
void draw(){
  background(128);
  strokeWeight(20);
  ellipse(100,200,180,360);
  ellipse(300,200,180,360);
  
  ellipse(100,200,10,10);
  ellipse(300,200,10,10);
  line(mouseX,mouseY,100,200);
  line(mouseX,mouseY,300,200);
}




Step2:

void draw(){
  background(128);
  strokeWeight(20);
  ellipse(100,200,180,360);
  ellipse(300,200,180,360);
  
  //ellipse(100,200,10,10);
  //ellipse(300,200,10,10);
  //line(mouseX,mouseY,100,200);
  //line(mouseX,mouseY,300,200);
  float angle1=atan2((mouseY-200)/2, mouseX-300);
  float newX1=300 + 100*cos(angle1)/2;
  float newY1=200 + 200*sin(angle1)/2;
  ellipse(newX1, newY1,10,10);
  float angle2=atan2((mouseY-200)/2,mouseX-100);
  float newX2=100 + 100*cos(angle2)/2;
  float newY2=200 + 200*sin(angle2)/2;
  ellipse(newX2, newY2,10,10);
}





●發射泡泡球

Step1:

void setup(){
  size(400,800);
}
float ballX=200,ballY=600;
float ballVX=0,ballVY=0;
float angle=0;
void draw(){
  background(0,128,0);
  fill(#FA9703);ellipse(200,600,100,100);
  line(mouseX,mouseY,200,600);
  fill(#FA9703);ellipse(ballX,ballY,30,30);
  angle=atan2(mouseY-600,mouseX-200);
  
  ballX+=ballVX;
  ballY+=ballVY;
}
void mouseMoved(){
  ballX=200+50*cos(angle);
  ballY=600+50*sin(angle);
}
void mousePressed(){
  ballVX=cos(angle);
  ballVY=sin(angle);
}




Step2:讓球自動增加補彈(但要注意超過10顆會當機)

void setup(){
  size(400,800);
}
float [] ballX=new float[10];
float [] ballY=new float[10];
float [] ballVX=new float[10];
float [] ballVY=new float[10];
float [] angle=new float[10];
int now=0;
void draw(){
  background(0,128,0);
  fill(#FA9703);ellipse(200,600,100,100);
  for(int i=0;i<10;i++){
    fill(#F9FA03);ellipse(ballX[i],ballY[i],30,30);
    ballX[i]+=ballVX[i]; ballY[i]+=ballVY[i];
  }  
  angle[now]=atan2(mouseY-600,mouseX-200);
}
void mouseMoved(){
  ballX[now]=200+50*cos(angle[now]); ballY[now]=600+50*sin(angle[now]);
}
void mousePressed(){
  ballVX[now]=cos(angle[now]); ballVY[now]=sin(angle[now]);
  now++;
}




Step3:能夠反擊的狀態




2017年10月2日 星期一

Week04 喵喵喵喵喵的上課筆記


●憤怒鳥

P.S.此為接著上禮拜補課的憤怒鳥再做修正

依舊使用上次兩張圖來示範↓






●憤怒鳥相關概念重新解說

Step1:輸入以下程式碼

void setup(){
  size(800,600);
}
void draw(){
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      ellipse(700-i*100, 100+j*100,100,100);
    }
  }
}




Step2:輸入以下程式碼

void setup(){
  size(800,600);
}
void draw(){
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      fill(#07DE0F);ellipse(700-i*100, 100+j*100,100,100);
    }
  }
  fill(#DE0719);ellipse(400,300,100,100);
}



Step3:輸入以下程式碼,此用舉陣來做事

float [][]pigx=new float[5][4];
float [][]pigy=new float[5][4];
boolean [][]pigAlive=new boolean[5][4];
void setup(){
  size(800,600);
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      pigx[i][j]=700-i*100; pigy[i][j]=100+j*100; pigAlive[i][j]=true;
    }
  }
}
void draw(){
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      fill(#07DE0F);ellipse(700-i*100, 100+j*100,100,100);
    }
  }
  fill(#DE0719);ellipse(400,300,100,100);
}


Step4:輸入以下程式碼

float [][]pigx=new float[5][4];
float [][]pigy=new float[5][4];
boolean [][]pigAlive=new boolean[5][4];
void setup(){
  size(800,600);
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      pigx[i][j]=700-i*100; pigy[i][j]=100+j*100; pigAlive[i][j]=true;
    }
  }
}
void draw(){
  for(int i=0;i<5;i++){
    for(int j=0;j<4;j++){
      fill(#07DE0F);ellipse(pigx[i][j],pigy[i][j],100,100);
    }
  }
  fill(#DE0719);ellipse(birdX,birdY,100,100);
}




Step5:依圖片上所示程式來輸入



Step6:依圖片上所示程式來輸入


Step7:依圖片上所示程式來輸入



Step8:依圖片上所示程式來輸入


●加入音樂 I

Step1:


Step2:


Step3:



Step4:


Step5:

Step6:


●加入音樂 II


2017年9月30日 星期六

Week03 喵喵喵喵喵的上課筆記

●製作憤怒鳥

Step1:先把圖片繪製進去,其中一個可以跟著滑鼠

PImage imgCat, imgP;
void setup(){
  size(800,600);
  imgCat=loadImage("c.jpg");
  imgP=loadImage("p.png");

}
void draw(){
  background(255);
  image(imgCat, 400,300);
  image(imgP, mouseX, mouseY);
}




Step2:改成壓著才能移動的滑鼠

PImage imgCat, imgP;
void setup(){
  size(800,600);
  imgCat=loadImage("c.jpg");
  imgP=loadImage("p.png");

}
float PX=400, PY=300;
void draw(){
  background(255);
  image(imgCat, 400,300);
  image(imgP, PX, PY);
}
void mouseDragged(){
  PX=mouseX; PY=mouseY;
}



Step3:靜者恆靜,動者恆動

PImage imgCat, imgP;
void setup(){
  size(800,600);
  imgCat=loadImage("c.jpg");
  imgP=loadImage("p.png");
  imageMode(CENTER);

}
float PX=400, PY=300;
float PVX=0, PVY=0;
void draw(){
  background(255);
  image(imgP, PX, PY,100,100);
  line(PX,PY,400,300);
  PX+=PVX;
  PY=PVY;
}
void mouseDragged(){
  PX=mouseX; 
  PY=mouseY;
}
void mouseReleased(){
  PVX=(400-mouseX)/100.0;
  PVY=(300-mouseY)/100.0;
}





Step4:加速度

PImage imgCat, imgP;
void setup(){
  size(800,600);
  imgCat=loadImage("c.jpg");
  imgP=loadImage("p.png");
  imageMode(CENTER);

}
float PX=400, PY=300;
float PVX=0, PVY=0;
float PAX=0,PAY=0;
void draw(){
  //background(255);
  image(imgP, PX, PY,100,100);
  line(PX,PY,400,300);
  PX+=PVX;
  PY=PVY;
  PVX+=PAX;
  PVY+=PAY;
}
void mouseDragged(){
  PX=mouseX; 
  PY=mouseY;
  PVX=PVY=PAX=PAY=0;
}
void mouseReleased(){
  PVX=(400-mouseX)/10.0;
  PVY=(300-mouseY)/10.0;
  PAY=0.98;
}






Step5:擊中目標讓目標消失

PImage imgCat, imgP;
void setup(){
  size(800,600);
  imgCat=loadImage("c.jpg");
  imgP=loadImage("p.png");
  imageMode(CENTER);

}
float PX=400, PY=300;
float PVX=0, PVY=0;
float PAX=0,PAY=0;
float CatX=700,CatY=100;
boolean catAlive=true;
void draw(){
  background(255);
  if(catAlive) image(imgP, PX, PY,100,100);
  image(imgCat, CatX, CatY,100,100);
  if(dist(PX,PY,CatX,CatY)<100){
    catAlive=false;
  }
  line(PX,PY,400,300);
  PX+=PVX;
  PY=PVY;
  PVX+=PAX;
  PVY+=PAY;
}
void mouseDragged(){
  PX=mouseX; 
  PY=mouseY;
  PVX=PVY=PAX=PAY=0;
}
void mouseReleased(){
  PVX=(400-mouseX)/10.0;
  PVY=(300-mouseY)/10.0;
  PAY=0.98;
}




Step6:




●小朋友下樓梯


Step1:輸入程式碼

void setup(){
  size(600,500);
}
int boardX=227,boardY=400;
int kidX=300,kidY=250;
void draw(){
  background(0);
  rect(boardX,boardY,200,50);
  rect(kidX,kidY,50,50);
  
  if(kidX>boardX-50 && kidX<boardX+200 && kidY>boardY-50){
  
  }else kidY++;
  
  kidX=mouseX;
}