顯示具有 05160486_武煜川 標籤的文章。 顯示所有文章
顯示具有 05160486_武煜川 標籤的文章。 顯示所有文章

2019年1月3日 星期四

阿天筆記_week17

這週是作品展示


我們覺得最大的困難點是要把PROCESSING跟ARDUINO做結合,因為需要花很多的耐心跟時間
要先搞懂如何接板子,再來搞懂要如何把正確的Arduino程式碼上傳到板子,最後是將Arduino連接上Processing
分別要把玩家一跟玩家二的炸彈還有移動方式分開寫,有點困難,我們摸索很久雖然有做出來但不完整,之後還是請教老師了

如何操作:玩家一使用Player1搖桿箱,玩家二使用Player2搖桿箱的搖桿來操作上下左右,遙桿按下則放出炸彈

賣點是很適合兩人玩,增進感情。


youtube影片展示

https://youtu.be/hSOQQc7Wnvw



https://www.youtube.com/watch?v=4WBQ5rJrdT8

2018年12月27日 星期四

week16_阿天筆記

有成功連接上了!這是我們processing跟arduino全部的程式碼,有一部分是老師幫忙我們改正的


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();
      //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)
      //bombA[bombN]=userA;  bombB[bombN]=userB;
      //bombS[bombN]=1;  bombT[bombN]=25;
      //bombN++;
    }
    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(){
  //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)
  bombA[bombN]=userA;  bombB[bombN]=userB;
  bombS[bombN]=1;  bombT[bombN]=25;
  bombN++;
}
void putBomb2(){
  //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)
  bombA[bombN]=userC;  bombB[bombN]=userD;
  bombS[bombN]=1;  bombT[bombN]=25;
  bombN++;
}
/*void keyPressed(){
  if(keyCode==LEFT && userA-1>=0 && grid[userA-1][userB]==0) userA--;
  if(keyCode==RIGHT && userA+1<=9 && grid[userA+1][userB]==0) userA++;
  if(keyCode==UP && userB-1>=0 && grid[userA][userB-1]==0) userB--;
  if(keyCode==DOWN && userB+1<=7 && grid[userA][userB+1]==0) userB++;
  if(keyCode==' '){
    bombA[bombN]=userA;  bombB[bombN]=userB;
    bombS[bombN]=1;  bombT[bombN]=25;
    bombN++;
  }

  if(keyCode=='A' && userC-1>=0 && grid[userC-1][userD]==0) userC--;
  if(keyCode=='D' && userC+1<=9 && grid[userC+1][userD]==0) userC++;
  if(keyCode=='W' && userD-1>=0 && grid[userC][userD-1]==0) userD--;
  if(keyCode=='S' && userD+1<=7 && grid[userC][userD+1]==0) userD++;
  if(keyCode=='Z'){
    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);// 下一次測量之前稍微延遲
}

2018年12月20日 星期四

2018年12月13日 星期四

week14_阿舔舔舔

一:
開啟圖中範例

二:
然後把旋鈕跟板子接起來就可以了

 三:
成功接上後 旋轉的兩個方向分別是 L13的燈 (設定是L13) 亮的越快跟越慢

2018年12月6日 星期四

WEEK13 阿天天天天

一:
開PROCESSING的範例




二:
複製裡面要的部分



三:
連接好後 按PROCESSING的執行會出現灰色視窗 按下在MAKER UNO上的 BUTTON扭 視窗中間就會變黑色




今天有剪線 下禮拜要開始做期末作品了

2018年11月29日 星期四

week12_阿天

這禮拜校外教學 去台北做光劍



歷經千辛萬苦大家都做好或放棄走了 我們這兩組才終於做成功了 感動感動


2018年11月22日 星期四

week11_阿天

一:
跟上禮拜一樣驅動程式裝好就會長這樣~~




二:
程式碼上傳成功 燈亮亮



三:
複製這整段程式碼 就可以播小星星的音樂了!!




2018年11月15日 星期四

WEEK 10 阿天天天

電路板安裝

一:
首先先連接電路板
好了之後下載安裝FB社團內的驅動程式



二:
安裝後有成功就會像這樣  如果無法成功就重開機應該就會成功了



三:
試著用範例程式碼上傳  就發現電路板有反映了!! 成功了!!!


四:
FB社團有Melody範例  可以讓電路板發出聲音  放出音樂  很好玩



2018年11月1日 星期四

week08_阿天天天

期中作品

作品名稱:炸彈超人(Morty版)

組員 : 05160486武煜川 , 05160806陳怡瑄

youtube連結 : https://youtu.be/w-F68enBSN8

遊戲玩法:
需要兩個人來操作競技 想辦法炸死對方取得勝利
右下是P1 分別用 'UP' 'DOWN' 'LEFT' 'RIGHT' 四個方向鍵控制對應方向 空白鍵是放炸彈
左上是P2 分別用 'W' 'A' 'S' 'D' 四個對應鍵控制方向 'Z'是放炸彈
地圖石頭隨機生成 需炸掉方能通過


2018年10月25日 星期四

Week07_阿天筆記

小朋友下樓梯
一:
做出一個平面


 換成紅色

滑鼠點就會扣命 LIFE設10

扣完就會出現GAME OVER

二:
期中 上下左右移動

float bombmanX=100,bombmanY=100, bombmanVX=0, bombmanVY=0;
void setup(){
  size(600,400);
}
void draw(){
  background(255);
  fill(255); ellipse(bombmanX,bombmanY, 50,50);
  bombmanX+=bombmanVX;
  bombmanY+=bombmanVY;
}
void keyPressed(){
  if(keyCode==LEFT)  bombmanVX= -2;
  if(keyCode==RIGHT) bombmanVX= +2;
  if(keyCode==UP) bombmanVY= -2;
  if(keyCode==DOWN) bombmanVY= +2;
}
void keyReleased(){
  if(keyCode==LEFT)  bombmanVX= 0;
  if(keyCode==RIGHT)  bombmanVX= 0;
  if(keyCode==UP)  bombmanVY= 0;
  if(keyCode==DOWN)  bombmanVY= 0;
}

2018年10月18日 星期四

WEEK06_阿天筆記

一:
首先到速寫本裡的引用庫文件  點選添加庫文件

搜尋SOUND  下載圖中的兩項

再將音檔拉入SKETCH裡  就能讀入音檔了


二:
水果忍者遊戲 (接續上禮拜


一次跳起20顆水果

跳起的水果的Y軸會交錯變動

水果掉下去後無限重生

2018年10月11日 星期四

WEEK05_阿天筆記

一:
讓氣球飛一段時間



二:
讓氣球一直飛


三:
初步小遊戲 (還沒有分數


四:
加了分數~


五:
水果忍者 西瓜飛起來 牛頓定律


六:
有刀了!! 但還沒辦法切


2018年9月27日 星期四

阿天天舔_WEEK03

一:
能用上下左右鍵控制

移動前



移動後



二:
執行後像接龍一樣的彈跳效果


2018年9月20日 星期四

阿天_WEEK02

一:
貼入圖片讓圖片跟著滑鼠




二:
讓圖片當背景,
再貼一張PNG圖檔當主角跟著滑鼠動



2018年9月13日 星期四

阿天天天的筆記_week01

第一週

一:
開了processing後 利用line函式畫出一條線


二:
 再來用size函式設定視窗大小



三:
rect函式畫方格



四:
點擊和放開就能切換固定顏色的程式,利用改變3個參數就能更換顏色




五:
小畫家畫畫,但只能一直連續畫不能斷,還不完整



六:
加了 if(mousePressed) 就可以好好畫了!!!!



七:
調粗細



八:
還可以調顏色