2019年1月3日 星期四

WeeK17_沈哲民




10_LED strip_沈哲民05161102、05163082劉俊宇.zip




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

說明你做了什麼:材料準備、接線材、程式尋找
如何操作:只需要找一首適合的音樂
賣點是什麼:在派對上可以帶動派對的氣氛、也可以做一些燈光show。
困難點是什麼:偵測音樂節奏,以及接線的過程!

Week17_陳示珮

期末作品展示 

作品名 : 踩踩黑塊
操作說明: 
 1.按下一頁按鍵進入說明畫面
 2.進入說明畫面5秒後自動換下一頁
 3.依序歌單順序使用鍵盤123鍵選擇歌曲
 4.進入操作說明按下一頁按鍵進入音樂遊戲
 5.左邊第一行開始依序按鍵左到右,當方塊到達下方綠色區塊的同時你按下了按鍵,就可以        獲得分數,若秒數尚未結束可以按Q鍵提前跳出遊戲畫面
 6.看完成績後按下一頁按鍵進入記憶翻牌遊戲的圖片記憶畫面,音樂遊戲的分數會影響到記        憶時間,秒數倒數結束即可開始翻牌。

我們延續期中作品踩踩黑塊來結合Arduino,期中時老師提到遊戲沒有輸贏或是分數上的高低差別,所以我們另外加入了一個記憶翻牌小遊戲,遊戲中圖片記憶時間會依據音樂遊戲分數高低來加秒數,成功完成翻牌遊戲和失敗會有不同的圖片在最後顯示。是一款不但能讓玩家聽音樂動動手指,還能考驗一點玩家的記憶力。
   
                       
                         


week17

展示期末作品

遊戲操作:
1.遊戲全程使用搖桿操作
2.利用搖桿上下左右移動,將火箭移到地球上,並按下搖桿進入遊戲
3.利用搖桿左右移動來控制綠色外星人的移動,在移動中,綠色外星人會根據左右移動以及距離石頭的遠近來變換動作及表情。
4.吃到盾牌可啟動無敵模式10秒(被隕石碰到不會死掉)
5.吃到火焰果實可以啟動攻擊模式10秒(按下搖桿發射子彈射擊隕石)
6.使用了五個背景音樂來增加完的感覺(一般遊戲中的背景音樂、無敵模式的背景音樂、攻擊模式的背景音樂、過關時的音樂,以及失敗時的音樂)
7.若順利撐過60秒,畫面切換到成功畫面(GOOD JOB)
8.若被隕石砸重擊遊戲結束,畫面切換到失敗畫面(GAME OVER)
9.玩過遊戲後,若想再次挑戰,在成功或失敗的畫面找到綠色外星人,利用搖桿移動火箭到綠色外星人身上,按下搖桿,會回到一開始的地球畫面,再次將火箭移到地球上並按下搖桿即可重新玩。

賣點:
1.此遊戲中的所有畫面(遊戲背景、地球、火箭、隕石、盾牌、腳色、數字)皆為親自手繪
2.因為是期中作品的延伸,除了接上搖桿之外,增加了可以擊破隕石的攻擊模式,並且設定在視窗右邊時,子彈只會往左飛;在視窗左邊時,子彈只會往右飛。來增加難度。
3.遊戲全程使用搖桿操控,無須用到滑鼠及鍵盤。

困難點:
1.在增加攻擊模式設定的時候,原本只有在視窗右邊發射往左飛的子彈會顯示,在視窗左邊發射往右飛的子彈不會顯示,後來已成功解決。
2.在攻擊模式時,原本子彈擊中隕石的時候,隕石有變成碎裂的隕石,但同時隕石和子彈都沒有消失,並且繼續該路徑移動,後來已成功解決。
3.在攻擊模式時,因為判斷條件沒有寫好,因此會有一次發出左右兩發同時往上的錯誤子彈。
4.在接硬體設備的時候,一開始在接收資料的時候沒有辦法很順利的控制,進到遊戲場景中,無法立馬使用搖桿操控,後來已成功解決。

Youtube連結:
https://youtu.be/K_18JU_yCoE
(PS 影片為了不超過1分鐘,將遊戲總長改設定為30秒)

Week17_黃惠嘉


🔺期末作品-麵包跳舞機
YOUTUBE:
https://youtu.be/ZPe9bS3HB7o
https://youtu.be/B9nLKtwHRG4







因為想用跳舞機所以不採用期中作品而另外寫了一個遊戲
跳舞機有上下左右鍵
利用小葉老師上課交的
用兩條線加鋁箔來做感應

一開始畫面上下左右都可以切換畫面
1分鐘時限
Great加5分
Good加3分
cool扣1分
bad扣2分
miss扣3分(有按但是miss)
miss扣4分(到底了都沒有按)
最後會顯示加總畫面

因為另外寫了一個遊戲
所以花的時間較多
並且可以懷念以前的小遊戲

week17 互動技術筆記@

期末作品展示

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


操作:玩家利用搖桿操控畫面中的貓咪,來躲避隨著時間加快的五顆隕石。一旦被隕石碰到即結束遊戲,結束後會顯示得分(存活秒數*10)以及再玩一次的畫面。

WEEK16 04211021 馬紹芸

程式改顏色+音樂
import processing.sound.*;
SoundFile sound;

import processing.serial.*;
Serial serial;
int handX=500, handY=500;
float handVX=0, handVY=0;//add

int score=0;
float[] eggX=new float[200];
float[] eggY=new float[200];
boolean[] eggDie=new boolean[200];

void setup() {
  sound = new SoundFile(this, "m.mp3");
  sound.play();
  size(1200, 600);
  serial = new Serial(this, "COM7", 9600);
  for (int i=0; i<200; i++) {
    eggX[i]=random(100, 1100);
    eggY[i]=-random(800);   
    eggDie[i]= false;
  }
}

void draw() {
  background(255, 255, 191);
 
  stroke(255);
  fill(230,26,100);
  rect(handX-200/2, handY-10/2, 200,10);
 
  fill(255);
  handX += handVX;
  getData();//add
  for (int i=0; i<200; i++) {
    if(i%10 == 0){
    if (eggDie[i]==true)
      continue;
    ellipse(eggX[i], eggY[i], 70, 100);
    eggY[i]+=15;
    if (eggY[i]>700)
      eggY[i]=-400;
    if (dist(handX, handY, eggX[i], eggY[i])<70) {
      eggDie[i]=true;
      score+=500;
      }
    }
  fill(230,26,100);
  if(score == 10000){
   textMode(CENTER);
   text("well done",490,200);}
  else{text("Score "+score, 450, 200);} 
}
 
  textSize(50);
  noFill();
}

void getData(){
  if(serial.available()>0){
    int val = serial.read();
    println(val);
    handVX = (val-63)/8.0;
  }
  //if(keyPressed && keyCode==LEFT) handVX= -2;
  //if(keyPressed && keyCode==RIGHT)handVX= +2;
}


void setup() { pinMode(2,INPUT); digitalWrite(2,HIGH); Serial.begin(9600); delay(100); } void loop() { int val = analogRead(A0);//x: 0...1023 Serial.write(val/8); delay(50); }

WEEK15 04211021 馬紹芸

P
import processing.sound.*;
SoundFile sound;

import processing.serial.*;
Serial serial;
int handX=500, handY=500;
float handVX=0, handVY=0;//add

int score=0;
float[] eggX=new float[200];
float[] eggY=new float[200];
boolean[] eggDie=new boolean[200];

void setup() {
  sound = new SoundFile(this, "m.mp3");
  sound.play();
  size(1200, 600);
  serial = new Serial(this, "COM7", 9600);
  for (int i=0; i<200; i++) {
    eggX[i]=random(100, 1100);
    eggY[i]=-random(800);   
    eggDie[i]= false;
  }
}

void draw() {
  background(255, 255, 191);
 
  stroke(255);
  fill(230,26,100);
  rect(handX-200/2, handY-10/2, 200,10);
 
  fill(255);
  handX += handVX;
  getData();//add
  for (int i=0; i<200; i++) {
    if(i%10 == 0){
    if (eggDie[i]==true)
      continue;
    ellipse(eggX[i], eggY[i], 70, 100);
    eggY[i]+=15;
    if (eggY[i]>700)
      eggY[i]=-400;
    if (dist(handX, handY, eggX[i], eggY[i])<70) {
      eggDie[i]=true;
      score+=500;
      }
    }
  fill(230,26,100);
  if(score == 10000){
   textMode(CENTER);
   text("well done",490,200);}
  else{text("Score "+score, 450, 200);} 
}
 
  textSize(50);
  noFill();
}

void getData(){
  if(serial.available()>0){
    int val = serial.read();
    println(val);
    handVX = (val-63)/8.0;
  }
  //if(keyPressed && keyCode==LEFT) handVX= -2;
  //if(keyPressed && keyCode==RIGHT)handVX= +2;
}

A
void setup() { pinMode(2,INPUT); digitalWrite(2,HIGH); Serial.begin(9600); delay(100); } void loop() { int val = analogRead(A0);//x: 0...1023 Serial.write(val/8); delay(50); }