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

2014年1月17日 星期五

期末作品-天才小釣手

 
期末成果~

天才小釣手


材料:兩片L型鐵片,一盒迴紋針工具盒,兩雙竹筷子,瞬間膠,一隻原子筆

過程:首先用L型鐵片做出電路,中間用筆筒配合竹筷子做出一個軸,垂吊著一個迴紋針讓它可以以軸轉圈圈讓電路通電,利用電路通電的原理來達成計算次數上的功能,在利用瞬間膠和竹筷子做出釣魚竿把手的部分,可以順時針轉動,讓電路不段通電,程式就不段的計算次數,讓我們遊戲裡面的主角收竿,最後將魚釣起!

製作流程 實體部分1天、程式部分約一星期。

謝謝小葉老師的用心!!

新年快樂!

0%

2014年1月12日 星期日

Week16

int buttonPin5 = 5;
int buttonPin2 = 2;
int buttonPin3 = 3;
int buttonPin4 = 4;
int buttonPin6 = 6;

int buttonState5 = 0; 
int buttonState2 = 0; 
int buttonState3 = 0; 
int buttonState4 = 0;
int buttonState6 = 0;
void setup() {

  pinMode(buttonPin5, INPUT);    
  pinMode(buttonPin2, INPUT);    
  pinMode(buttonPin3, INPUT);     
  pinMode(buttonPin4, INPUT);
  pinMode(buttonPin6, INPUT);

  Serial.begin(9600);

}
void loop() {
  buttonState5 = digitalRead(buttonPin5);
  buttonState2 = digitalRead(buttonPin2);
  buttonState3 = digitalRead(buttonPin3);
  buttonState4 = digitalRead(buttonPin4);
  buttonState6 = digitalRead(buttonPin6);

  if (buttonState5 == HIGH) {    

   Serial.write('1');
  }
  if (buttonState2== HIGH) {    

   Serial.print('2');
  }
  if (buttonState3 == HIGH) {    
  
   Serial.print('3');
  }
  if (buttonState4 == HIGH) {    
  
   Serial.print('4');
  }
  if (buttonState6 == HIGH) {    
  
   Serial.print('5');
  }
  else if(buttonState2 == LOW&&buttonState3 == LOW&&buttonState4 == LOW&&buttonState5 == LOW&&buttonState6 == LOW){
  Serial.write('0');
  }
  delay(100); 

2014年1月11日 星期六

99163116鄭祥斌 期末作品進度















我們利用了3種不同顏色的方塊去做畫面中按鍵區的位置,以及利用"頻率感覺"的圖片來當作此期末作品的背景圖,希望能在玩起遊戲來時更有感覺!

2013年12月30日 星期一

Week16 葉玉婷

今日進度:
寫完程式碼並可以成功結合Arduino

Processing的程式碼:

import processing.serial.*;
Serial serial;
int sensorValue;

//音樂
import ddf.minim.*;
Minim m;
AudioPlayer player;

float x = 300;
float y = 300;
float dx = 3;
float dy = -5;
int t;
int bloom=3;
int n=0;
int count=0;
int points=0; //得分
PImage pig; //豬頭的圖
PImage ban; //金箍棒的圖
PImage back; //背景圖
PImage heart; //生命值

float heightbounce=450;

//層級
boolean[][] inside=new boolean[1][11];

void setup()
{
  serial=new Serial(this, "COM4", 9600); //連結arduino
  size(600, 600); //視窗尺寸
  frameRate(60);
  smooth();

  m = new Minim(this);

  player=m.loadFile("music.mp3");
  player.play(); 

  pig=loadImage("pig.png"); //讀入豬頭圖
  ban=loadImage("ban.png"); //讀入金箍棒圖
  back=loadImage("back.jpg"); //讀入背景圖
  heart=loadImage("heart.png"); //讀入愛心
}

void draw()
{

  if (t==0) //新級別
  {

    background(back); //背景

    stroke(0);

    if (count<120) //前兩秒顯示第幾關
    {
      fill(0); //填入黑色
      textAlign(CENTER);
      text("LEVEL " + inside.length, 300, 400); //顯示第幾關
    }

    strokeWeight(10); //球的大小
    point(x, y); //顯示球球
    strokeWeight(1); //打擊框框大小

    randomSeed(1); //隨機

    //打豬頭
    for (int j=0;j<inside.length;j++)
    {
      for (int k=0;k<inside[0].length;k++)
      {
        //豬頭及球的距離
        float dx2=50+50*k-x;
        float dy2=50+50*j-y;
        float dis2=sqrt(pow(dx2, 2)+pow(dy2, 2));

        if (dis2>=25. && inside[j][k]==false) //畫豬
        {
          image(pig, 25+50*k, 50+50*j, 50, 50); //被打的豬豬豬豬
        }

        //關於反彈
        else if (dx2<=(dis2*cos(PI/4))&& dy2<=-(dis2*sin(PI/4)) && inside[j][k]==false)
        {
          dy*=-1;
          inside[j][k]=true;
          points++;
        }
        else if (dx2<=(dis2*cos(PI/4)) && dy2>=(dis2*sin(PI/4)) && inside[j][k]==false)
        {
          dy*=-1;
          inside[j][k]=true;
          points++;
        }
        else if (dy2<=(dis2*sin(PI/4)) && dx2<=-(dis2*cos(PI/4)) && inside[j][k]==false)
        {
          dx*=-1;
          inside[j][k]=true;
          points++;
        }
        else if (dy2<=(dis2*sin(PI/4)) && dx2>=(dis2*cos(PI/4)) && inside[j][k]==false)
        {
          dx*=-1;
          inside[j][k]=true;
          points++;
        }
      }
    }

    float barsize=50;
    strokeWeight(3);

    if (serial.available()>0)
    {
      sensorValue = serial.read();
      println(sensorValue);
    }
    image(ban, (sensorValue*4)-barsize, heightbounce-50, 150, 100);

    //image(ban, mouseX-barsize, heightbounce-50, 150, 100);
    strokeWeight(1);

    // 打到邊界的話
    if (x>=width || x<=0)
    {
      dx*=-1;
    }
    if (y<=0)
    {
      dy*=-1;
    }

    // 設定方位
    if (y>=heightbounce && y<heightbounce+10)
    {
      if (x>((sensorValue*4)-barsize) && x< ((sensorValue*4)-(1./3)*barsize) && dx>0 && dy>0)
      {
        dy*=-0.95;
        dx*=-1.05;
      }
      else if (x>((sensorValue*4)-barsize) && x< ((sensorValue*4)-(1./3)*barsize) && dx<0 && dy>0)
      {
        dy*=-0.95;
        dx*=1.05;
      }
      else if (x>((sensorValue*4)+(1./3)*barsize) && x< ((sensorValue*4)+barsize) && dx>0 && dy>0)
      {
        dy*=-0.95;
        dx*=1.05;
      }
      else if (x>((sensorValue*4)+(1./3)*barsize) && x< ((sensorValue*4)+barsize) && dx<0 && dy>0)
      {
        dy*=-0.95;
        dx*=-1.05;
      }
      else if (x>((sensorValue*4)-(1./3)*barsize) && x< ((sensorValue*4)+(1./3)*barsize) && dy>0) {
        dy*=-1.05;
        dx*=0.95;
      }
    }

    //顯示分數
    textAlign(RIGHT);
    fill(0);
    text(points, 300, 350);

    //遊戲結束
    if (y>height)
    {
      if (bloom>1) //生命值
      {
        t=1;
        fill(0);
        textAlign(CENTER);
        text("CLICK TO RESTART GAME", 300, 400);
        text("PRESS SPACE TO RESTART LEVEL", 300, 500);
        bloom--;
      }
      else
      {
        text("GAME OVER", 300, 300);
      }
    }

    //完成關卡
    if (checkinside()) {
      t=2;
      fill(0);
      textAlign(CENTER);
      text("FINISHED", 300, 300);
      text("CLICK FOR NEXT LEVEL", 300, 400);
    }

    x=x+dx;
    y=y+dy;

    count++;
  }

  //遊戲結束
  else if (t==1)
  {
    x = 300;
    y = 300;
    dx = 3;
    dy = -5;
    count=0;
    points=0;
    if (mousePressed==true)
    {
      t=0;
      inside=new boolean[inside.length][inside[0].length];
    }
    if (keyPressed)
    {
      if (key == ' ')
      {
        t=0;
        inside=new boolean[1][11];
      }
    }
  }

  //關卡完成
  else
  {
    x = 300;
    y = 300;
    dx = 3;
    dy = -5;
    count=0;
    if (mousePressed==true)
    {
      t=0;
      inside=new boolean[inside.length+1][inside[0].length];
    }
  }

  //生命值
  if (bloom==3)
  {
    image(heart, 10, 500, 50, 50);
    image(heart, 70, 500, 50, 50);
  }
  else if (bloom==2)
  {
    image(heart, 10, 500, 50, 50);
  }
  else if (bloom==1)
  {
  }
}

boolean checkinside()
{
  for (int j=0;j<inside.length;j++)
  {
    for (int k=0;k<inside[0].length;k++)
    {
      if (inside[j][k] == false)
      {
        return false;
      }
    }
  }
  return true;
}



Arduino的程式碼:


int potPin = 0; // 可變電阻接在 pin 0 上

void setup() 
{

  Serial.begin(9600);

}

void loop() 

{

  int sensorValue = analogRead(potPin);

  Serial.write(sensorValue/4);

  delay(100);

}

2013年12月29日 星期日

week16 上課內容

我們突然想從「彈珠台」這個主題轉而變成「金錢豹的逆襲」。

本遊戲是透過十塊硬幣來觸碰到電路板的機關進而可以扣除畫面上B羅的血量
來贏得遊戲,這遊戲強調的是過程的榮耀,不在乎遊戲結果的輸贏,所以我們
不用因為擔心GAME OVER所緊張,是一款滿有趣味性但不失遊戲耐玩度的小品
互動程式。

2013年12月23日 星期一

第十六週 課堂作業及回家作業

第16週12/23寫Arduino的部份
用兩個按鈕控制左右移動


int switchStateRed = 0; int switchStateBlue = 0; int switchStateW = 0; int switchStateA = 0; const int ledPin = 13; // led connected to digital pin 13 const int knockSensor = A0; // the piezo is connected to analog pin 0 const int threshold = 100; int sensorReading = 0; // variable to store the value read from the sensor pin int ledState = LOW;
void setup(){ pinMode(ledPin, OUTPUT); pinMode(4,INPUT); pinMode(5,INPUT); Serial.begin(9600); }
//int a=0,b=0;
void loop(){ sensorReading = analogRead(knockSensor); switchStateW = digitalRead(4); switchStateA = digitalRead(5);
if (sensorReading >= threshold) {
ledState = !ledState;
digitalWrite(ledPin, ledState);
} if(switchStateW == HIGH) {Serial.write('3');} if(switchStateA == HIGH) {Serial.write('4');} delay(33); }

Week 16

期末作品
PROCESSING

PImage bg,blu,white,yellow,blu2,white2;
int N=6;
int count = 1500;
float []thingX=new float[6], thingY=new float[6],thingType = new float[6];
int grade=0;
void setup(){
  bg = loadImage("bg.jpg");
  blu = loadImage("blu.jpg");
  white = loadImage("white.jpg");
  yellow = loadImage("yellow.jpg");
  blu2 = loadImage("blu2.jpg");
  white2 = loadImage("white2.jpg");
  size(400,600);
  for(int i=0;i<N;i++){
    newThing(i);
  }
}
int countDown=10*30;
void draw(){
  image(bg,0,0, 400,600);
  image(blu,13,475,60,15);
  image(white,73,475,66,15);
  image(yellow,139,475,88,15);
  image(blu2,293,475,64,15);
  image(white2,227,475,66,15);
  if(countDown>0){
    background(255,0,255);
    countDown--;
    text("Count Down"+countDown/50,170,300);
    return;
  }
  for(int i=0;i<N;i++){
    if(thingType[i]==1)
    {
     drawblu(i);
      if (keyPressed)
      {
        if(key=='d'|| key=='D')
        if(450<thingY[i] && thingY[i]<500)
        {
          thingY[i] = 650; grade++; println(grade);
          fill(#0046FF,90);
          rect(10,475,66,-500);
        }
      }
     
    }
    else if(thingType[i]==2)
    {
      drawwhite(i);
      if (keyPressed)
      {
        if(key=='f'|| key=='F')
        if(450<thingY[i] && thingY[i]<500)
        {
        thingY[i] = 650; grade++; println(grade);
        fill(255,90);
        rect(73,475,66,-500);
        }
      }
    }
    else if(thingType[i]==3)
    {
      drawyellow(i);
      if (keyPressed)
      {
        if(key=='b'|| key=='B')
        if(450<thingY[i] && thingY[i]<500)
        {
        thingY[i] = 650; grade++; println(grade);
        fill(#FFF700,90);
        rect(139,475,66,-500);
      }
      }
    }
    else if(thingType[i]==4)
    {
      drawblu2(i);
      if (keyPressed)
      {
        if(key=='k'|| key=='K')
        if(450<thingY[i] && thingY[i]<500)
        {
        thingY[i] = 650; grade++; println(grade);
        fill(#0046FF,90);
        rect(293,475,66,-500);
      }
      }
    }
    else if(thingType[i]==5)
    {
      drawwhite2(i);
      if (keyPressed)
      {
        if(key=='j'|| key=='J')
        if (450<thingY[i] && thingY[i]<500)
        {
          thingY[i] = 650; grade++; println(grade);
          fill(255,90);
          rect(227,475,66,-500);
        }
      }
    }
    thingY[i]+=4;//掉的速度
    if(thingY[i]>600) newThing(i);
   }
  if(count>0){
    count--;
    text("Time: "+count/50,170,300);
    }
    if(count==0){
      background(#FF0015);
      text("Score: "+grade,122,300);
    }
}
void newThing(int i){
  thingY[i] = -random(200);
  thingX[i] = random(400);
  thingType[i] = int(random(5))+1;
}
void drawblu(int i){
  thingX[i]=int(random(13,13));
  image(blu,thingX[i],thingY[i],60,15);
}
void drawwhite(int i){
  thingX[i]=int(random(73,73));
  image(white,thingX[i],thingY[i],66,15);
}
void drawyellow(int i){
  thingX[i]=int(random(139,139));
  image(yellow,thingX[i],thingY[i],88,15);
}
void drawblu2(int i){
  thingX[i]=int(random(293,293));
  image(blu2,thingX[i],thingY[i],66,15);
}
void drawwhite2(int i){
  thingX[i]=int(random(227,227));
  image(white2,thingX[i],thingY[i],66,15);
}

Week 16 作業

float [] X=new float [10], Y= new float[10];
PImage plane;
PImage sky;
PImage moster,row,row2,row3,row4;
int  count=0;
int n=(int)random(5);
void setup()
{
  background(255,255,255);
  size(600,400);
  plane=loadImage("plane.gif");
  moster=loadImage("moster.jpg");
  sky=loadImage("sky.jpg");
  row = loadImage("1.png");
 for(int i=0;i<10;i++){
   newb(i);
   drawbanana(i);
  }
}
int now=0;
int no=0;
void draw()
{
    background(255);
    imageMode(CENTER);
    //image(moster,300+no,200+now,50,80);
    for(int i=0;i<n+1;i++){
      drawbanana(i);
      if(count%1000==0){
        newb(i);
        n=(int)random(1);
      }
      image(plane,300,200,600,400);
      if ((dist(300,200,X[0],Y[0]) - ) image(row,200,200,50,50);
}
 count++;
 println(n);
}
void drawbanana(int i){
  image(sky,X[i]+no, Y[i]+now, 3600, 3400);
  image(moster,X[i]+no, Y[i]+now, 50, 80);
}
void newb(int i){
  X[i]=random(200)+200;
  Y[i]=random(400);
}
void keyPressed(){
      if(keyCode==UP) now+=10;
      if(keyCode==DOWN) now-=10;
      if(keyCode==LEFT) no+=10;
      if(keyCode==RIGHT) no-=10;
     
      if(keyCode==32)
      {
        if((X[0]+no)>250 && (X[0]+no)<350 && (Y[0]+now)<250 && (Y[0]+now)>150) {
               print("哈哈哈");
                 X[0]=random(200)+200;
                 Y[0]=random(400);
          }
     }
}

2013年12月22日 星期日

week16

這周我們將flash也就是arduino的前置作業
架構大致上完成了
也就是有進入畫面及一個動作
而程式碼的部分
發現在這裡無法進行serproxy的設定
將在家裡進行
並且下次再使用隨身碟帶來進行
電路板已經接好了
所以剩下的部分剩下一點點囉
會盡快完成

week16

int switchStateRed = 0; int switchStateBlue = 0; void setup(){ pinMode(2, INPUT); pinMode(3, INPUT); Serial.begin(9600); } int a=0,b=0; void loop(){ switchStateRed = digitalRead(2); switchStateBlue = digitalRead(3); if(switchStateRed == LOW) a=0; if(switchStateRed == HIGH && a==0) {Serial.write('a'); a=1;} if(switchStateBlue == LOW) b=0; if(switchStateBlue == HIGH && b==0) {Serial.write('b'); b=1;} }


import ddf.minim.*; Minim minim; AudioPlayer player; PImage imgbackground; import processing.serial.*; //!!!!!!!!!!!!!!!! Serial serial; //!!!!!!!!!!!!!!!! int []drumColor = new int [93]; int []drumX = new int[93]; int score =0; int x=600; void setup() { serial = new Serial(this, "COM3", 9600); //!!!!!!!!!!!!!!!! size(600, 400); imgbackground = loadImage("background.png"); for (int i=0;i<93;i++) { drumColor[i]=int(random(2)); drumX[i]=600+i*100; } minim = new Minim(this); player = minim.loadFile("m.mp3"); player.play(); } void draw() { char c=' '; //!!!!!!!!!!!!!!!! if (serial.available()>0) { //!!!!!!!!!!!!!!!! c = (char)serial.read(); //!!!!!!!!!!!!!!!! print(c); } //image(imgbackground, 0, 0); background(imgbackground); fill(255); ellipse(135, 137.5, 38, 38); for (int i=0;i<93;i++) { if (drumX[i]-135<30 && drumX[i]-135>-30) { if (c == 'a' && drumColor[i]==0) { //!!!!!!!!!!!!!!!! score++; println("分數:"+score); } else if (c == 'b' && drumColor[i]==1) { //!!!!!!!!!!!!!!!! score++; println("分數:"+score); } fill(0, 255, 0); ellipse(drumX[i], 137.5, 36, 36); drumX[i]-=2; } else if (drumColor[i]==0) { fill(255, 0, 0); ellipse(drumX[i], 137.5, 36, 36); drumX[i]-=2; } else if (drumColor[i]==1) { fill(0, 0, 255); ellipse(drumX[i], 137.5, 36, 36); drumX[i]-=2; } } fill(0); textFont(createFont("calibri", 40)); textSize(30); text("score : "+score, 230, 300); }