2018年12月31日 星期一

Week 12校外參訪

製作光劍

01.把led燈泡一個一個扳開,並將所有燈泡運用焊接串起來

02.一一檢查led燈泡有沒有接對














03.完成光劍




04.還拿到了小恐龍











week16 期末作品製作

期末作品會有四個介面:
0.遊戲設定畫面,設定完能回到原始進入的介面

1.起始遊戲畫面

2.開始遊戲畫面

3.遊戲結束畫面

2018年12月27日 星期四

Week16_黃登煜

加音樂
PImage imgleft,imgup,imgdown,imgright,imgdance;
PImage imgrightqq,imgleftqq,imgupqq,imgdownqq;
PImage []direction = new PImage[4];
float leftX=90,upX=230,downX=370,rightX=510;
float leftY=900,upY=900,downY=900,rightY=900;
float leftVY=6;
float upVY=5;
float downVY=4;
float rightVY=7;

import ddf.minim.*;
Minim minim;
AudioPlayer player1,player2,player3,player4,player5;
int score=0;
void setup(){
  size(600,900);
  background(255);
  imgdance=loadImage("dance.jpg");
  imgleft=loadImage("left.png");
  imgup=loadImage("up.png");
  imgdown=loadImage("down.png");
  imgright=loadImage("right.png");
 
  imgrightqq=loadImage("rightqq.png");
  imgleftqq=loadImage("leftqq.png");
  imgupqq=loadImage("upqq.png");
  imgdownqq=loadImage("downqq.png");
  imageMode(CENTER);
 
  direction[0]=imgleft;
  direction[1]=imgup;
  direction[2]=imgdown;
  direction[3]=imgright;
 
  minim = new Minim(this);
  player1 = minim.loadFile("BLACKPINK.mp3");
}
int choose=0;
void draw(){
  player1.play();
  image(imgdance,width/2,height/2,width,height);
  image(imgleftqq,90,150,100,100);
  image(imgupqq,230,150,100,100);
  image(imgdownqq,370,150,100,100);
  image(imgrightqq,510,150,100,100);
  fill(#C75AF7);textSize(50);text("Score:"+score,30,80);

  if(choose==1){
    fill(#C75AF7);textSize(50);text("Great",400,80);
  }else if(choose==2){
    fill(#C75AF7);textSize(50);text("Good",400,80);
  }else if(choose==3){
    fill(#C75AF7);textSize(50);text("Cool",400,80);
  }else if(choose==4){ 
    fill(#C75AF7);textSize(50);text("Bad",400,80);
  }else if(choose==5){ 
    fill(#C75AF7);textSize(50);text("Miss",400,80);
  }
  if(leftY<0){ 
    choose=5;
    score-=4;
    leftX=90;
    leftY=900;
    leftVY=random(4,7);
  }else if(upY<0){
    choose=5;
    score-=4;
    upX=230;
    upY=900;
    upVY=random(4,7);
  }else if(downY<0){
    choose=5;
    score-=4;
    downX=370;
    downY=900; 
    downVY=random(4,7);
  }else if(rightY<0){
    choose=5;
    score-=4;
    rightX=510;
    rightY=900;
    rightVY=random(4,7);
  }
 
  leftY-=leftVY;
  upY-=upVY;
  downY-=downVY;
  rightY-=rightVY;
  image(imgleft,leftX,leftY,100,100);
  image(imgup,upX,upY,100,100);
  image(imgdown,downX,downY,100,100);
  image(imgright,rightX,rightY,100,100);
}
void killleft(){
  leftX=90;
  leftY=900;
  leftVY=random(4,7);
}
void killup(){
  upX=230;
  upY=900;
  upVY=random(4,7);
}
void killdown(){
  downX=370;
  downY=900; 
  downVY=random(4,7);
}
void killright(){
  rightX=510;
  rightY=900;
  rightVY=random(4,7);
}
void keyPressed(){
  if(key=='1'){
    if(dist(90,150,leftX,leftY)<10){
      score+=5;
      killleft();
      choose=1;
    }
    else if(dist(90,150,leftX,leftY)<30){
      score+=3;
      killleft();
      choose=2;
    }
    else if(dist(90,150,leftX,leftY)<60){
      score-=1;
      killleft();
      choose=3;
    }
     else if(dist(90,150,leftX,leftY)<90){
      score-=2;
      killleft();
      choose=4;
     }else if(dist(90,150,leftX,leftY)<120){
      score-=3;
      killleft();
      choose=5;
     }
  }
  if(key=='2'){
    if(dist(230,150,upX,upY)<10){
      score+=5;
      killup();
      choose=1;
    }
    else if(dist(230,150,upX,upY)<30){
      score+=3;
      killup();
      choose=2;
    }
    else if(dist(230,150,upX,upY)<60){
      score-=1;
      killup();
      choose=3;
    }
     else if(dist(230,150,upX,upY)<90){
      score-=2;
      killup();
      choose=4;
     }else if(dist(230,150,upX,upY)<120){
      score-=3;
      killup();
      choose=5;
     }
  }
  if(key=='3'){
    if(dist(370,150,downX,downY)<10){
      score+=5;
      killdown();
      choose=1;
    }
    else if(dist(370,150,downX,downY)<30){
      score+=3;
      killdown();
      choose=2;
    }
    else if(dist(370,150,downX,downY)<60){
      score-=1;
      killdown();
      choose=3;
    }
     else if(dist(370,150,downX,downY)<90){
      score-=2;
      killdown();
      choose=4;
     }else if(dist(370,150,downX,downY)<120){
      score-=3;
      killdown();
      choose=5;
     }
  }
  if(key=='4'){
    if(dist(510,150,rightX,rightY)<10){
      score+=5;
      killright();
      choose=1;
    }
    else if(dist(510,150,rightX,rightY)<30){
      score+=3;
      killright();
      choose=2;
    }
    else if(dist(510,150,rightX,rightY)<60){
      score-=1;
      killright();
      choose=3;
    }
     else if(dist(510,150,rightX,rightY)<90){
      score-=2;
      killright();
      choose=4;
     }else if(dist(510,150,rightX,rightY)<120){
      score-=3;
      killright();
      choose=5;
     }
  }
}

week16矮矮的筆記

由於程式碼有過多的迴圈導致程式碼看起來很亂
也使的自己找不的bug的所在
所以經老師的建議下重新寫一次
材料來了可是大小不如預期

Week16 徐如君

week16
1.
兩側以及中間的光棍
由於我們的光棍和木頭稍長,因此需要切割
而切割過程的話是運用到
下面這個機器


week16

期末作品
processing:

import processing.serial.*;
Serial myPort;
int state=0;
int remainTime=0;
float rockX=150, rockY=150, rockVX=0, rockVY=0;
float []fireX=new float[100];
float []fireY=new float[100];
boolean [] fireAlive=new boolean[100];
float []catFireX=new float[100];
float []catFireY=new float[100];
int catFireN=0;
int aaa=0;
byte []data=new byte[3];

PImage imgBG;
PImage imgBB;
PImage imgWW;
void setup(){
  String portName=Serial.list()[0];
  myPort = new Serial(this, "COM3",9600);
  imgBG=loadImage("650.jpg");
  imgBB=loadImage("123.png");
  imgWW=loadImage("11.jpg");

  size(600,400);
  for(int i=0;i<10;i++)
  {
    fireX[i]=random(500);
    fireY[i]=random(300);
    fireAlive[i]=true;
  }
}
void draw(){
  if(state==0){
    drawOP();
  }else if(state==1){
    drawPlayer();
  }else if(state==2){
    drawED();
  }else if(state==3){
    drawWIN();
  }
}
void drawED(){
  background(0);
  fill(#FF1008);
  textSize(30);text("Oops! Game Over Loser~~~",100,200);
 
}
void drawWIN(){
  image(imgWW,0,0,width,height);
  fill(#FF1008);
  textSize(30);text("You win!",100,200);
  text("Great~~~",200,300);
}
void drawPlayer(){
  //getData();
  //if(rockY<500) rockY+=10;
  if(myPort.available()>0){
    myPort.readBytes(data);
    println(data);
    if(data[0]==0)rockY=200;
    else rockVX=(data[0]-64)/50.0;
    if(data[1]==0)rockX=200;
    else rockVY=(data[1]-64)/50.0;
  }
  
  image(imgBG,0,0,width,height);
  fill(#0242DE);
  textSize(30);text("Playing...",10,30);
  text("Time: "+remainTime,10,70);
  remainTime--;
  if(remainTime<=0) state=2;
  else if(aaa>9 ) state=3;
  
  for(int i=0;i<100;i++){
    fill(#F2B414);
    if(fireAlive[i]){
      ellipse(fireX[i],fireY[i],10,10);
      if(dist(rockX,rockY,fireX[i],fireY[i])<10)
      {
        fireAlive[i]=false;
        aaa++;
        catFireX[catFireN]=rockX;
        catFireY[catFireN]=rockY;
        catFireN++;
      }
    }
  }
  fill(#3E9B64); ellipse(rockX,rockY,30,30);
  catFireX[0]=rockX;
  catFireY[0]=rockY;
  rockX += rockVX;
  rockY += rockVY;
  noStroke();
  for(int i=catFireN-1;i>0;i--){
    fill(#F2B414);
    ellipse(catFireX[i],catFireY[i],10,10);
    if(frameCount%3==0){
      catFireX[i]=catFireX[i-1];
      catFireY[i]=catFireY[i-1];
    } 
  }
}


void keyPressed(){
  if(keyCode==UP) rockVY=-1;
  if(keyCode==DOWN) rockVY=+1;
  if(keyCode==RIGHT) rockVX=+1;
  if(keyCode==LEFT) rockVX=-1;
  }
void keyReleased(){
  if(keyCode==UP) rockVY=0;
  if(keyCode==DOWN) rockVY=0;
  if(keyCode==RIGHT) rockVX=0;
  if(keyCode==LEFT) rockVX=0;
  }
void drawOP(){
  image(imgBG,0,0,width,height);
  fill(#6FB1FF);
  textSize(30);text("You need to eat all the cookies ",10,100);
  image(imgBB,300,150,200,300);
  if(  dist(mouseX,mouseY,450,200)<50)
  {
    if(mousePressed&&mouseButton==LEFT){
      state=1;
      remainTime=20*60;
    }
  }
}


arduno:

void setup() {
  pinMode(2, INPUT_PULLUP);
  Serial.begin(9600);
}
byte data[3];
void loop() {
  int x = analogRead(A0);
  int y = analogRead(A1);
  data[0]=x/8;
  data[1]=y/8;
  if(data[0]==0)data[0]=1;
  if(data[1]==0)data[1]=1;
  if(digitalRead(2)==LOW) data[2]=1;
  else data[2]=0;
  Serial.write(data,3);
  delay(50);
}

QAQ筆記 WEEK16

期末作品

Processing :
import ddf.minim.*;
Minim minim;
AudioPlayer player;
import processing.serial.*;
Serial myPort1;
Serial myPort2;
PImage imgA, imgB, imgBG ,imgOPBG;
PImage imgBomb, imgRock, imgBombBG;
int [][]grid=new int[100][100];
int state=0;
int remainTime=0;
void setup(){
  size(800, 640);
  minim = new Minim(this);
  player = minim.loadFile("sd.mp3");
  player.loop();
  myPort1 = new Serial(this,"COM5",9600);
  myPort2 = new Serial(this,"COM4",9600);
  imgBG = loadImage("bg.jpg");
  imgA = loadImage("player22.png");
  imgB = loadImage("player1.png");
  imgBomb = loadImage("bomb.png");
  imgRock = loadImage("rock.png");
  imgBombBG = loadImage("bombbg.jpg");
  imgOPBG = loadImage("OPBG.jpg");
  grid[0][0]=3; grid[9][7]=4;
  grid[1][0]=3; grid[9][6]=4;
  grid[0][1]=3; grid[8][7]=4;
  for(int i=0;i<35;i++){
    int a=int(random(10)), b=int(random(10));
    while(grid[a][b]!=0){
      a=int(random(10)); b=int(random(10));
    }
     grid[a][b]=2;
     if(a==bombA[i] && b==bombB[i] || a==bombA[i]+1 && b==bombB[i] || a==bombA[i]-1 && b==bombB[i] || a==bombA[i] && b==bombB[i]+1 || a==bombA[i] && b==bombB[i]-1){
       grid[a][b]=0;
     }
  }
  grid[0][0]=0; grid[9][7]=0;
  grid[1][0]=0; grid[9][6]=0;
  grid[0][1]=0; grid[8][7]=0;
  delay(100);
}

boolean boom=false;
int userA=9, userB=7;
int userC=0, userD=0;
int bombN=0;
int []bombA=new int[100];
int []bombB=new int[100];
int []bombS=new int[100];
int []bombT=new int[100];
//int Button=0;

//int XL, XR, YU, YD, Button;
int XXL, XXR, YYU, YYD;
void draw(){
  println(frameRate);
  getData();//put data in XX,YY,Button
  if(state==0){
    drawOP();
    if(keyCode== ENTER) state=1;
  }else if(state==1){
    drawPlayer();
  }
}
void drawPlayer(){

  noStroke();
  image(imgBG,0,0,width,height);
  image(imgA,userA*80-20,userB*80-10,120,100);
  image(imgB,userC*80-5,userD*80-5,90,90);


  for(int i=0;i<bombN;i++){
    int a=bombA[i] , b=bombB[i];
    if(bombT[i]>0){
      grid[a][b]=1;
      image(imgBomb,bombA[i]*80+5, bombB[i]*80, 80, 80);
      bombT[i]--;
      if(bombT[i]==0)  bombT[i]=-13;
    
    
    }
    if(bombT[i]<0){
      for(int k=-bombS[i];k<=bombS[i];k++){
        image(imgBombBG,(bombA[i]+k)*80, (bombB[i])*80, 80, 80);
        image(imgBombBG,(bombA[i])*80, (bombB[i]+k)*80, 80, 80);
        grid[a][b]=0;
        if(grid[a+1][b]!=0){grid[a+1][b]=0;}
        if(a-1>=0){if(grid[a-1][b]!=0)grid[a-1][b]=0;}
        if(grid[a][b+1]!=0){grid[a][b+1]=0;}
        if(b-1>=0){if(grid[a][b-1]!=0)grid[a][b-1]=0;}

      
        if(userA==bombA[i] && userB==bombB[i] || userA==bombA[i]+1 && userB==bombB[i] || userA==bombA[i]-1 && userB==bombB[i] || userA==bombA[i] && userB==bombB[i]+1 || userA==bombA[i] && userB==bombB[i]-1)
        {boom=true;}
        if(userC==bombA[i] && userD==bombB[i] || userC==bombA[i]+1 && userD==bombB[i] || userC==bombA[i]-1 && userD==bombB[i] || userC==bombA[i] && userD==bombB[i]+1 || userC==bombA[i] && userD==bombB[i]-1)
        {boom=true;}
        if(userA==bombA[i] && userB==bombB[i] || userA==bombA[i]+1 && userB==bombB[i] || userA==bombA[i]-1 && userB==bombB[i] || userA==bombA[i] && userB==bombB[i]+1 || userA==bombA[i] && userB==bombB[i]-1){ userA=-3; userB=-3;}
        if(userC==bombA[i] && userD==bombB[i] || userC==bombA[i]+1 && userD==bombB[i] || userC==bombA[i]-1 && userD==bombB[i] || userC==bombA[i] && userD==bombB[i]+1 || userC==bombA[i] && userD==bombB[i]-1){ userC=-3; userD=-3;}
      
      }
      bombT[i]++;
    }
    
  }

  for(int x=0;x<10;x++){
    for(int y=0;y<8;y++){
      if(grid[x][y]==2) image(imgRock,x*80, y*80, 80, 80);
    }
  }

  if(boom){
    textSize(100);
    fill(#FF4800); text("GameOver", 150,200);
  }
}

void drawOP(){
  image(imgOPBG,0,0,width,height);
  fill(#FF0000);
  textSize(50); text("PRESS ENTER TO START",120,450);
}

byte [] data1 = new byte[3];
byte [] data2 = new byte[3];
byte oldButton1=1, oldButton2=1;
void getData(){
  if(myPort1.available()>0)
  {
    myPort1.readBytes(data1);
    if(data1[0]<30){
      if(userA-1>=0 && grid[userA-1][userB]==0)
        userA--;
    }
    if(data1[0]>100){
      if(userA+1<=9 && grid[userA+1][userB]==0)
      userA++;
    }
    if(data1[1]<30){
      if(userB-1>=0 && grid[userA][userB-1]==0)
      userB--;
    }
    if(data1[1]>100){
      if(userB+1<=7 && grid[userA][userB+1]==0)
        userB++;
    }
  
    if(data1[2]==0 && oldButton1==1 ){
      putBomb1();
    }
    oldButton1=data1[2];
  }


  if(myPort2.available()>0)
  {
    println(data1);
    myPort2.readBytes(data2);
    if(data2[0]<30){
      if(userC-1>=0 && grid[userC-1][userD]==0)
        userC--;
    }
    if(data2[0]>100){
      if(userC+1<=9 && grid[userC+1][userD]==0)
      userC++;
    }
    if(data2[1]<30){
      if(userD-1>=0 && grid[userC][userD-1]==0)
      userD--;
    }
    if(data2[1]>100){
      if(userD+1<=7 && grid[userC][userD+1]==0)
        userD++;
    }
    if(data2[2]==0 && oldButton2==1){
      putBomb2();
    }
    oldButton2=data2[2];
  }
}

void putBomb1(){
  bombA[bombN]=userA;  bombB[bombN]=userB;
  bombS[bombN]=1;  bombT[bombN]=25;
  bombN++;
}
void putBomb2(){
  bombA[bombN]=userC;  bombB[bombN]=userD;
  bombS[bombN]=1;  bombT[bombN]=25;
  bombN++;
}

Arduino :
void setup()
{
  Serial.begin(9600); // 設置串口波特率
  pinMode(2, INPUT_PULLUP);
  //digitalWrite(2,HIGH);

}
byte data[3];
void loop()
{
  int valX = analogRead(A0);
  int valY = analogRead(A1);// 在針腳2讀取的邏輯狀態的值
  int valButton = digitalRead(2);// 向串口發送數據,以逗號分隔
  data[0]=valX/8;
  data[1]=valY/8;
  data[2]=valButton;
  Serial.write(data, 3);
  delay(50);// 下一次測量之前稍微延遲
}

week16_製作期末作品

🔺製作期末作品
這次結合了背景音樂,並用床墊剪成4個大小(上下左右),且兩邊都用鋁箔紙,用兩條線作感應

PImage imgleft,imgup,imgdown,imgright,imgdance;
PImage imgrightqq,imgleftqq,imgupqq,imgdownqq;
PImage []direction = new PImage[4];
float leftX=90,upX=230,downX=370,rightX=510;
float leftY=900,upY=900,downY=900,rightY=900;
float leftVY=6;
float upVY=5;
float downVY=4;
float rightVY=7;

import ddf.minim.*;
Minim minim;
AudioPlayer player1,player2,player3,player4,player5;
int score=0;
void setup(){
  size(600,900);
  background(255);
  imgdance=loadImage("dance.jpg");
  imgleft=loadImage("left.png");
  imgup=loadImage("up.png");
  imgdown=loadImage("down.png");
  imgright=loadImage("right.png");
  
  imgrightqq=loadImage("rightqq.png");
  imgleftqq=loadImage("leftqq.png");
  imgupqq=loadImage("upqq.png");
  imgdownqq=loadImage("downqq.png");
  imageMode(CENTER);
  
  direction[0]=imgleft;
  direction[1]=imgup;
  direction[2]=imgdown;
  direction[3]=imgright;
  
  minim = new Minim(this);
  player1 = minim.loadFile("BLACKPINK.mp3");
}
int choose=0;
void draw(){
  player1.play();
  image(imgdance,width/2,height/2,width,height);
  image(imgleftqq,90,150,100,100);
  image(imgupqq,230,150,100,100);
  image(imgdownqq,370,150,100,100);
  image(imgrightqq,510,150,100,100); 
  fill(#C75AF7);textSize(50);text("Score:"+score,30,80);

  if(choose==1){
    fill(#C75AF7);textSize(50);text("Great",400,80);
  }else if(choose==2){
    fill(#C75AF7);textSize(50);text("Good",400,80);
  }else if(choose==3){
    fill(#C75AF7);textSize(50);text("Cool",400,80);
  }else if(choose==4){  
    fill(#C75AF7);textSize(50);text("Bad",400,80);
  }else if(choose==5){  
    fill(#C75AF7);textSize(50);text("Miss",400,80);
  }
  if(leftY<0){  
    choose=5;
    score-=4;
    leftX=90;
    leftY=900;
    leftVY=random(4,7);
  }else if(upY<0){
    choose=5;
    score-=4;
    upX=230;
    upY=900; 
    upVY=random(4,7);
  }else if(downY<0){
    choose=5;
    score-=4;
    downX=370;
    downY=900;  
    downVY=random(4,7);
  }else if(rightY<0){
    choose=5;
    score-=4;
    rightX=510;
    rightY=900;
    rightVY=random(4,7);
  } 
  
  leftY-=leftVY;
  upY-=upVY;
  downY-=downVY;
  rightY-=rightVY;
  image(imgleft,leftX,leftY,100,100);
  image(imgup,upX,upY,100,100);
  image(imgdown,downX,downY,100,100); 
  image(imgright,rightX,rightY,100,100);
}
void killleft(){
  leftX=90;
  leftY=900;
  leftVY=random(4,7);
}
void killup(){
  upX=230;
  upY=900; 
  upVY=random(4,7);
}
void killdown(){
  downX=370;
  downY=900;  
  downVY=random(4,7);
}
void killright(){
  rightX=510;
  rightY=900;
  rightVY=random(4,7);
}
void keyPressed(){
  if(key=='1'){
    if(dist(90,150,leftX,leftY)<10){
      score+=5;
      killleft();
      choose=1;
    }
    else if(dist(90,150,leftX,leftY)<30){
      score+=3;
      killleft();
      choose=2;
    }
    else if(dist(90,150,leftX,leftY)<60){
      score-=1;
      killleft();
      choose=3;
    }
     else if(dist(90,150,leftX,leftY)<90){
      score-=2;
      killleft();
      choose=4;
     }else if(dist(90,150,leftX,leftY)<120){
      score-=3;
      killleft();
      choose=5;
     }
  }
  if(key=='2'){
    if(dist(230,150,upX,upY)<10){
      score+=5;
      killup();
      choose=1;
    }
    else if(dist(230,150,upX,upY)<30){
      score+=3;
      killup();
      choose=2;
    }
    else if(dist(230,150,upX,upY)<60){
      score-=1;
      killup();
      choose=3;
    }
     else if(dist(230,150,upX,upY)<90){
      score-=2;
      killup();
      choose=4;
     }else if(dist(230,150,upX,upY)<120){
      score-=3;
      killup();
      choose=5;
     }
  }
  if(key=='3'){
    if(dist(370,150,downX,downY)<10){
      score+=5;
      killdown();
      choose=1;
    }
    else if(dist(370,150,downX,downY)<30){
      score+=3;
      killdown();
      choose=2;
    }
    else if(dist(370,150,downX,downY)<60){
      score-=1;
      killdown();
      choose=3;
    }
     else if(dist(370,150,downX,downY)<90){
      score-=2;
      killdown();
      choose=4;
     }else if(dist(370,150,downX,downY)<120){
      score-=3;
      killdown();
      choose=5;
     }
  }
  if(key=='4'){
    if(dist(510,150,rightX,rightY)<10){
      score+=5;
      killright();
      choose=1;
    }
    else if(dist(510,150,rightX,rightY)<30){
      score+=3;
      killright();
      choose=2;
    }
    else if(dist(510,150,rightX,rightY)<60){
      score-=1;
      killright();
      choose=3;
    }
     else if(dist(510,150,rightX,rightY)<90){
      score-=2;
      killright();
      choose=4;
     }else if(dist(510,150,rightX,rightY)<120){
      score-=3;
      killright();
      choose=5;
     }
  }

}