顯示具有 Week17 標籤的文章。 顯示所有文章
顯示具有 Week17 標籤的文章。 顯示所有文章

2018年1月8日 星期一

18/01/08 德宇的筆記Week17

目標一:期末作品製作




















Ardunio端程式碼:

const int SW_pin = 2; 
const int X_pin = 0; 
const int Y_pin = 1; 

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

void loop() {
  Serial.print("Switch:  ");
  Serial.print(digitalRead(SW_pin));
  Serial.print("\n");
  Serial.print("X-axis: ");
  Serial.print(analogRead(X_pin));
  Serial.print("\n");
  Serial.print("Y-axis: ");
  Serial.println(analogRead(Y_pin));
  Serial.print("\n\n");
  delay(50);
}

Week17 是賴小沫的

✎期末作品

👀製作實體裝置

準備材料:
剪刀*1
美工刀*1
膠帶*1
紙盒*1
薄紙板數張
彈珠*1

尚未挖洞的實體關卡裝置

Week17 ShiRo

期末作品--平衡球

  • 構思 :使用光敏電阻來偵測,球是否有掉到洞裡。
  • 製作道具
  • 設計介面(路線、起點、終點、洞口)
  • 程式碼
  • 呈現效果

➤電路板的裝置

裝置內部圖
#光敏電阻要在板子中間

➤實體裝置外觀


裝置外觀

實體路徑
➤介面

介面設計-開始畫面

介面設計-第1個洞

介面設計-第2個洞

介面設計-第3個洞

介面設計-第4個洞

介面設計-第5個洞

介面設計-終點(藍色點)

➤程式碼

    ➯Arduino
使用7個光敏電阻,調整所偵測到的光亮度,如果小於某個值就代表掉到洞裡 。


    ➯Processing


時間的設定:計算整個遊戲進行的時間
(開始--終點/開始--洞中)
若掉到洞裡會呈現相對的圖片,需要回到起點才可以進行遊戲。
#把Arduino偵測出來的字元 以數字做為判斷,如: a=97



遊戲介面設定(路線、洞)



➤軟硬體結合

 遊戲畫面


Week17

組員:04160250 曾凱楠
        04160640 陳柏勳

youtube網址:https://youtu.be/i0a-nTfuOEg

遊玩簡介:第二代雷霆戰機有別於一代,可以藉由搖桿(joystick)前後左右的自由移動,得分方式則是改為吃金幣(碰到得一分),吃兩個金幣會產生一個怪物(碰到扣一點生命,生命歸零遊戲結束),吃七個金幣會產生一個藥水(可以回復一點生命),求得高分之餘,在吃金幣與產生怪物之間做抉擇吧!

(使用搖桿與按鈕操作)


week17 彣禎的上課筆記

#processing
import processing.serial.*;
import ddf.minim.*;
Minim minim;
AudioPlayer bgm;
PImage imgcat,imgrat,imgcave,imglife;

Serial myPort;
void setup(){
  size(500,800);
  myPort = new Serial(this, "COM7", 115200);
  imgcat=loadImage("cat.png");
  imgrat=loadImage("rat.png");
  imgcave=loadImage("cave.png");
  imglife=loadImage("life.png");
  for(int i=0;i<60;i++){
    ratX[i]=100+int(random(3))*150;
    ratY[i]=random(-8000);
    imageMode(CENTER);
  }
  minim=new Minim(this);
  bgm=minim.loadFile("music.mp3",2048);
  bgm.play();
  bgm.loop();
}
float []ratX=new float[80];
float []ratY=new float[80];
float catX=250,catY=700;
int score=0;
int life=3;
int oldx=128,oldy=128;
int t=0, s=48, x=128, y=128;
boolean Gameover=false;
int stage=0,time=0;
void draw(){
  background(129,214,125);
  while(myPort.available() > 0){
    t = myPort.read();
    if(t=='w') s = myPort.read();
    else if(t=='x') x=myPort.read();
    else if(t=='y') y=myPort.read();
    if(x>200&&oldx<200) catX+=4;
    if(x<50&&oldx>50) catX-=4;
  }
 
  if(stage==0)
  {
    fill(11,35,152); textSize(60);
    text("Click to Start",68,350);
  }
  else if(stage==1){
    if(life==0)stage=2;
  }else if(stage==2){
    fill(11,35,152); textSize(40);
    text("Game Over!!",48,350);
    text("You score is "+score,100,400);
  }
  fill(#286A25); rect(0,740,600,100);
  image(imglife,420,100,100,100);
  image(imgcave,100,10,200,120);
  image(imgcave,250,10,200,120);
  image(imgcave,400,10,200,120);
  fill(255,0,0);textSize(30); text("Score:"+score,10,100);
  textSize(40); text(":"+life,450,100);
  image(imgcat,catX,catY,150,150);
  if(stage==1){
  for(int i=0;i<60;i++){
    image(imgrat,ratX[i],ratY[i],70,70);
    ratY[i]+=2;
    if(dist(catX,catY,ratX[i],ratY[i])<75){
      ratY[i]=100+random(-8000);
      score+=5;
    }
    if(Gameover) return;
    if(ratY[i]>=700) {
      ratY[i]=100+random(-8000);
      life-=1;
   
      if(life==0) {
        Gameover=true;
      }
    }
  }
}
}
void keyPressed(){
  if(key=='a') catX-=75;
  if(key=='s') catX+=75;
}
void mousePressed(){
  if(stage==0) {stage=1;}
  if(stage==2) {stage=0;}
}
#arduino
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 = 3; // analog pin connected to Y output

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

void loop() {
  int s = digitalRead(SW_pin);
  int x = analogRead(X_pin);
  int y = analogRead(Y_pin);
  if (x / 4 == 'w' || x / 4 == 'x' || x / 4 == 'y' ) return;
  if (y / 4 == 'w' || y / 4 == 'x' || y / 4 == 'y' ) return;
  Serial.print("w");
  Serial.print(s);
  Serial.print("x");
  Serial.write(x / 4);
  Serial.print("y");
  Serial.write(y / 4);

  delay(50);
}

week17


processing 程式碼

import processing.serial.*;
Serial myPort;
color [] Color1={#558AE3, #F2E820, #73F220},Color2={#21F7FC, #ED22CC, #FAB33F};
color [] fishC=new color[16], fishA=new color[8];
PImage imgRod,imghook;

void setup(){
  size(750,600);
  imgRod=loadImage("Rod.jpg");
  imghook=loadImage("hook.jpg");
  for(int i=0;i<16;i++){
  fishC[i]= Color1[int(random(3))];
  }
  for(int j=0;j<8;j++){
  fishA[j]= Color2[int(random(3))];
  }
  imageMode(CENTER);
  myPort = new Serial(this, "COM7", 115200);
}
float handX=0, handY=0;
boolean handPressed=false;
float a1=0,a2=0;
void draw(){
  while(myPort.available()>0){
    int now=myPort.read(), w=128,x=128,y=128;
    if(now=='w') w = myPort.read();
    if(now=='x') x = myPort.read();
    if(now=='y') y = myPort.read();
    if(x>200) handX+=3;
    if(x<50) handX-=3;
    if(y>200) handY+=3;
    if(y<50) handY-=3;
   
  }
  background(255);
  line(handX-45,handY-70,handX-50,handY+50);
  fill(255); ellipse(350,350,400,400);
  for(int i=0;i<16;i+=2){
    float x1=350+140*cos(PI/8*i+a1),y1=350+140*sin(PI/8*i+a1);
    if(dist(x1,y1,handX-50,handY+50)<25){
      fill(255,0,0);
      if(handPressed=true) fishC[i]=color(255);
    }
    else
    fill(fishC[i]); ellipse(x1,y1,50,50);
   }
 
  for(int i=1;i<16;i+=2){
    float x2=350+160*cos(PI/8*i+a1),y2=350+160*sin(PI/8*i+a1);
     if(dist(x2,y2,handX-50,handY+50)<25){
      fill(255,0,0);
      if(handPressed=true) fishC[i]=color(255);
    }
    else
    fill(fishC[i]); ellipse(x2,y2,50,50);
  }
 
 fill(255); ellipse(350,350,200,200);
  for(int j=0;j<8;j+=2){
    float x3=350+70*cos(PI/4*j+a2),y3=350+70*sin(PI/4*j+a2);
    if(dist(x3,y3,handX-50,handY+50)<25){
      fill(255,0,0);
      if(handPressed=true) fishA[j]=color(255);
    }
    else
    fill(fishA[j]); ellipse(x3,y3,50,50);
  }
 
   for(int j=1;j<8;j+=2){
     float x4=350+50*cos(PI/4*j+a2),y4=350+50*sin(PI/4*j+a2);
     if(dist(x4,y4,handX-50,handY+50)<25){
      fill(255,0,0);
      if(handPressed=true) fishA[j]=color(255);
    }
    else
    fill(fishA[j]); ellipse(x4,y4,50,50);
  }
 
  a1+=radians(-0.3);
  a2+=radians(0.3);
  image(imgRod,handX,handY,150,150);
  image(imghook,handX-50,handY+50,30,30);

}
void mouseMoved(){
  handX=mouseX; handY=mouseY;
}
void mousePressed(){
  handPressed=true;
}
void mouseReleased(){
  handPressed=false;
}

ADR 程式碼

// Arduino pin numbers
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));
  int w=digitalRead(SW_pin);
  int x=analogRead(X_pin);
  int y=analogRead(Y_pin);
  Serial.write('w');
  Serial.write(w);
  Serial.write('x');
  Serial.write(x/4);
  Serial.write('y');
  Serial.write(y/4);
  delay(50);
}

180108 Uton

week17-期末作品展示

期末作品展示:

皮卡丘打排球



作品說明:
遊戲為兩隻皮卡丘在打排球,分別為P1、P2,玩家可透過遊戲裝置(如上圖)操控皮卡丘,按鈕分別為向左(黃色按鈕)、跳(紅色按鈕)、向右(黃色按鈕)。最後先得15分者獲勝。

裝置內部:


展示影片:
https://www.youtube.com/watch?v=6JNwfsUDVpk&feature=youtu.be