顯示具有 01160803_傅紹捷 標籤的文章。 顯示所有文章
顯示具有 01160803_傅紹捷 標籤的文章。 顯示所有文章

2015年1月19日 星期一

2015年1月18日 星期日

Week19 期末作業

期末作業-電流急急棒

主要用兩顆按鈕來控制"上"和"下"

遊戲主畫面



 遊戲進行中


------------------------------------------Arduino--------------------------------------

void setup(){
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
}

void loop(){
  while(Serial.available() > 0){
   char data = Serial.read();
   Serial.print(data);
   }
  if(digitalRead(2)==HIGH) Serial.write(97);
  if(digitalRead(4)==HIGH) Serial.write(100);
  delay(100);
}


-----------------------------------------Processing-------------------------------------

import processing.serial.*;
Serial myPort;
import ddf.minim.*;
Minim minim;
AudioPlayer start, boom;
PImage over;
int [] cubeX = new int [17];
float [] high = new float [17];

void setup() {
  size(750, 300);
  minim = new Minim(this);
  start = minim.loadFile("spider man.mp3");
  boom = minim.loadFile("boom.mp3");
   start.play();
  for (int i=0; i<17; i++) {
    cubeX[i]=i*50;
    high[i]=random(100, 150);
  }
  //myPort = new Serial(this, "COM3", 9600);

  over = loadImage("gameover.png");
}
int posY = 180;
int a = 0;
int q=1;
int posX = 70;
int score = 0;
float speed = 1.0;
void draw() {
  background(255);

  if (a==0) {
    textSize(50);
    text("press T to START", 130, 150);
    fill(0, 102, 153, 500);

    if (keyPressed) {
      if(key == 't') a=1; 
    }
    
  } else if (a==1) {
    fill(255, 0, 0);
    ellipse(posX, posY, 40, 40);
    fill(0);
    if (keyPressed) {
      if (key=='w') posY-=3;
      if (key=='s') posY+=3;
    }
    for (int m=0; m<17; m++) {
      rect(cubeX[m], 0, 50, high[m]);
      rect(cubeX[m], high[m]+100, 50, 250-high[m]);
      if (cubeX[m]<-50) { 
        cubeX[m]+=800;
        score++;
        println(score);
        //speed+=0.05;
      }
      cubeX[m]-=3;      

      if (sqrt((cubeX[m]-posX)*(cubeX[m]-posX)+(high[m]-posY)*(high[m]-posY))<20 | sqrt((cubeX[m]-posX)*(cubeX[m]-posX)+(high[m]+100-posY)*(high[m]+100-posY))<20 | sqrt((cubeX[m]+50-posX)*(cubeX[m]+50-posX)+(high[m]-posY)*(high[m]-posY))<20 | sqrt((cubeX[m]+50-posX)*(cubeX[m]+50-posX)+(high[m]+100-posY)*(high[m]+100-posY))<20 && posX>cubeX[m] && posX<(cubeX[m]+50)) {
        a=2;
        //image(over, 0, 0, 800, 300);
        //println("Game Over");
      }
    }

    /*if (myPort.available()>0 ) {
     int index=myPort.read();
     //println(index);
     if (index==100)  posY+=3;
     else if (index==97) posY-=3;
     //println(posY);
     }*/
  } else if (a==2) {
    image(over, 0, 0, 800, 300);
    println("Game Over");
    start.close();
    boom.play();
    score = 0;
    if (keyPressed) {
      if (key=='r') {
        boom.close();
        a=0;
      }
    
    }
  }
}


2014年12月29日 星期一

Week 16

import processing.serial.*;
Serial myPort;

PImage over;

float [] cubeY=new float [17];

void setup() {
  size(800, 300);

  for (int i=0;i<16;i++) {
    cubeY[i]=random(140, 170);
  }

  myPort = new Serial(this, "COM4", 9600);
  over = loadImage("gameover.png");
}

int posY = 0;
int a = 0;
int q=1;
void draw() {

  background(255);


  if (a==0) {
    textSize(50);
    text("press the button to START", 80, 160);
    fill(0, 102, 153, 500);
  }

  if (keyPressed == true)  a=1;

  if (a==1) {
    fill(0, 0, 255);
    ellipse(70, posY+40, 40, 40);

    fill(0);

    for (int m=0;m<16;m++) {
      rect(m*50-q, 0, 50, cubeY[m]);

      rect(m*50-q, cubeY[m]+50, 50, 250-cubeY[m]);
     
      //if(cubeY[m]+50<0); cubeX+=850;  
  }
   
    q++;
    if (myPort.available()>0) {
      posY = myPort.read();
      println(posY);
    }

    if (posY+20<60 | posY+60>240) {
      image(over, 0, 0, 800, 300);
      println("Game Over");
    }
  }
}




2014年12月22日 星期一

Week15

-----------------電流急急棒-----------------

import processing.serial.*;
Serial myPort;

PImage over;

void setup(){
  size(800, 300);
  myPort = new Serial(this,"COM4",9600);
  over = loadImage("gameover.png");
}

int posY=0;

void draw(){
  background(255);
  
  fill(0, 0, 255);
  ellipse(70, posY+40, 40, 40);
  
  fill(0);
  rect(0, 10, 800, 50);
  
  fill(0);
  rect(0, 240, 800, 50);
  
  if(myPort.available()>0){
   posY = myPort.read();
   println(posY);
  }
  
  if(posY+40<60 | posY+40>240) {
    
    image(over, 0, 0, 800 ,300);
    println("Game Over");
    //over = loadImage("gameover.png");
    //over.resize(800, 300);
  }
}

2014年12月15日 星期一

Week14

-------------可變電阻-----------------

void setup(){
  pinMode(13, OUTPUT); 
}

void loop(){
 int value = analogRead(A0);

digitalWrite(13, HIGH);
delay(value);
digitalWrite(13, LOW);
delay(value);
}


--------------------------------------------------------------------------------------------------------



把processing 和 arduino結合
用可變電阻讓紅色方塊移動



2014年12月8日 星期一

Week 13

*讀什麼就印什麼

void setup(){
  Serial.begin(9600);
}

void loop(){
 while(Serial.available() > 0){
  char data = Serial.read();
  Serial.print(data);
 }
}



*按按鈕就會顯示"I Love You"   
不按就會顯示"I Don't Love You"

void setup(){
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
}

void loop(){
 while(Serial.available() > 0){
  char data = Serial.read();
  Serial.print(data);
 } 
 if(digitalRead(2)==LOW) Serial.println("I Love You");
 else Serial.println("I Don't Love You");
}



2014年12月1日 星期一

Week 12

Example : Button
按了燈會亮




void setup(){
  pinMode(2, INPUT_PULLUP);
  pinMode(13,OUTPUT) ;
}
void loop(){
 if(digitalRead(2)==HIGH){
  digitalWrite(13,HIGH);
  tone(8,1000,300);
 }
else{
 digitalWrite(13,LOW);
noTone(8); 
}
}


2014年11月9日 星期日

Week 08

業界老師授課  心得

今天請來的業師很年輕,卻已經是個很成功的老闆,自己創業,不同以往的業師,反而多了一點親切感。
以往請來的業師雖然真的都是該領域的超級專業人才,不過來演講的內容卻非常艱難而且全都是專業術語,而今天請來的業師並不同以往,非常有趣而且有很多好看的作品影片可以欣賞,不會一直講一些很專業的術語卻不知道到底在講甚麼,今天看下來我覺得"第七感觀"最有趣,可以追蹤到場上的人並且做出反應,超帥的!

2014年10月27日 星期一

期中 Demo影片

期中作品:Doodle jump
傅紹捷   張芷瑜


Demo   影片:

期中作品

圖中人物必須一直踩著橫桿往上跳
一掉下去即 GameOver

import ddf.minim.*;
import processing.serial.*;
PImage img, over;

float myImgY;
float myImgX=320;
float mySpeed=15;
PImage myBackGround;
PImage[] myfloor=new PImage [5];
float[]  myFloorX=new float[5];
float[]  myFloorY=new float[5];
AudioPlayer player2;
Minim m;
void setup()
{
  m=new Minim(this);
    player2=m.loadFile("back.mp3");
   myBackGround=loadImage("bg.jpg");
   over = loadImage("gameover.jpg");
   for (int i=0;i<5;i++) {
     myfloor[i]=loadImage("Floor.jpg");
     myFloorX[i]=random(370);
     myFloorY[i]=random(100)+i*100;
   }
  img=loadImage("img.png");
  size(400, 600);
  myImgY=380;
  over=loadImage("gameover.jpg");
}

void draw()
{
   
  player2.play();
  background(myBackGround);
  image(img, myImgX, myImgY, 100, 100);
  myImgY-=mySpeed;
  mySpeed-=0.5;
  if(myImgY>600)
    image(over, 0, 0, 400, 600);
  //if (myImgY>400) {
   // myImgY=380;
   // mySpeed=25;
  //}
  for (int i=0;i<5;i++) 
  {
    myFloorY[i]+=2;
    image(myfloor[i], myFloorX[i], myFloorY[i], 100, 30);
    if (myFloorY[i]>600) {
      reset(i);
    }
    if (mySpeed<0 && myImgX>myFloorX[i] && myImgX<myFloorX[i]+100 &&  
      myImgY>myFloorY[i] && myImgY<myFloorY[i]+30 )
    {
      touch();
    }
  }
  }

void reset(int i)
{
  myFloorY[i]=random(100);
  myFloorX[i]=random(370);
}
void touch()
{
  mySpeed=15;
}
void keyPressed()
{
  if(keyCode == LEFT)
    myImgX -= 50;
  if(keyCode == RIGHT)
    myImgX += 50; 

}

2014年10月6日 星期一

Week04

期中作品:Doodle Jump



----------------------------------------------------------------------------------------------------------------------

void setup(){
    size(600,400);
}

void draw(){
   drawFlower();
}

void drawFlower(){
    translate(mouseX, mouseY);  //移動
    fill(#F50AC2); ellipse(0,0,80,180);
    rotate(PI/4);
    fill(#760AF5); ellipse(0,0,80,180);
    rotate(PI/4);
    fill(#0A1FF5); ellipse(0,0,80,180);
    rotate(PI/4);
    fill(#0CC4F5); ellipse(0,0,80,180);
    rotate(PI/4);
    fill(#0CF586); ellipse(0,0,80,180);
    rotate(PI/4);
    fill(#2AF50C); ellipse(0,0,80,180);
    rotate(PI/4);
    fill(#C5F50C); ellipse(0,0,80,180);
    rotate(PI/4);
    fill(#F4F500); ellipse(0,0,80,80);
}

-----------------------------------------------------------------------------------------------------------

void setup(){
    size(600,400);
}

void draw(){
   drawFlower();
}

void drawFlower(){
    translate(mouseX, mouseY);
    rotate(0.01*frameCount);  //旋轉
    fill(#F50AC2); ellipse(0,0,80,180);
    rotate(PI/7);
    fill(#760AF5); ellipse(0,0,80,180);
    rotate(PI/7);
    fill(#0A1FF5); ellipse(0,0,80,180);
    rotate(PI/7);
    fill(#0CC4F5); ellipse(0,0,80,180);
    rotate(PI/7);
    fill(#0CF586); ellipse(0,0,80,180);
    rotate(PI/7);
    fill(#2AF50C); ellipse(0,0,80,180);
    rotate(PI/7);
    fill(#C5F50C); ellipse(0,0,80,180);
    rotate(PI/7);
    fill(#F4F500); ellipse(0,0,80,80);
}


-------------------------------------------------------------------------------------------------------------------

void setup(){
    size(600,400);
    colorMode(HSB,600,400,400); //改變色彩模式
}

void draw(){
   drawFlower(); 
}

void drawFlower(){
    translate(mouseX, mouseY);
    rotate(0.01*frameCount);
    fill(mouseX,mouseY,400);
    for(int i=0;i<6;i++){
      ellipse(0,0,80,180); rotate(PI/7);
      
    }
    fill(#F4F500); ellipse(0,0,80,80);
}



2014年9月29日 星期一

Week 03

PImage img ;
void setup(){
    size(600,400);
    img = loadImage("123.png");  //讀圖
    imageMode(CENTER);  //讓滑鼠在圖的中間
}

void draw(){
   background(50,150,100);
  image(img,mouseX,mouseY,300,300);   //讓圖跟著滑鼠動
}



PImage img,imgBG ;
float eggX=750,eggY=550,eggVX,eggVY,flying=0;
void setup(){
    size(800,600);
    img = loadImage("123.png");
    imgBG = loadImage("55165.jpg");  //加背景
    imgBG.resize(800,600);
    imageMode(CENTER);
}

void draw(){
  background(imgBG);
  image(img,mouseX,mouseY,300,300);
  if(flying>0){
     ellipse(eggX,eggY,50,50);
     eggX+=eggVX;
     eggY+=eggVY;
     flying--;
  }
}

void mousePressed(){
  eggX=750;
  eggY=550;
  flying=30;
  eggVX=(mouseX-eggX)/30;
  eggVY=(mouseY-eggY)/30;    //加子彈  會往多拉A夢射去
}




2014年9月22日 星期一

Week02

用P語言寫小畫家


void setup(){
   size(800,600);
  background(#FAFC96);  //background放這  才可以保留畫的線條  不會一直重製背脊
}

void draw(){
   //background(#FAFC96); 
   if(mousePressed) line(mouseX, mouseY, pmouseX, pmouseY); //滑鼠按著才會畫
}




void setup(){
   size(800,600);
  background(#FAFC96);
  fill(255,0,0); rect(0,0,100,100);
  fill(0,255,0); rect(0,100,100,100);
  fill(0,0,255); rect(0,200,100,100);
  fill(0,0,0);   rect(0,300,100,100);
}

void draw(){
   //background(#FAFC96);
   if(mousePressed) line(mouseX, mouseY, pmouseX, pmouseY);
}

void mousePressed(){
   if(mouseX<100 && mouseY<100) stroke(255,0,0);
   else if(mouseX<100 && mouseY<200) stroke(0,255,0);
   else if(mouseX<100 && mouseY<300) stroke(0,0,255);
   else if(mouseX<100 && mouseY<400) stroke(0,0,0);   //點選可以換顏色
}


void setup(){
   size(800,600);
  background(#FAFC96); 
  fill(255,0,0); rect(0,0,100,100);
  fill(0,255,0); rect(0,100,100,100);
  fill(0,0,255); rect(0,200,100,100);
  fill(0,0,0);   rect(0,300,100,100);
  fill(255);     rect(700,0,100,100); ellipse(750,50,5,5);
  fill(255);     rect(700,100,100,100); ellipse(750,150,10,10);
  fill(255);     rect(700,200,100,100); ellipse(750,250,15,15);
}

void draw(){
   //background(#FAFC96); 
   if(mousePressed && mouseX>100 && mouseY<700) line(mouseX, mouseY, pmouseX, pmouseY);
}

void mousePressed(){
  println(mouseX+" "+mouseY);
   if(mouseX<100 && mouseY<100) stroke(255,0,0);
   else if(mouseX<100 && mouseY<200) stroke(0,255,0);
   else if(mouseX<100 && mouseY<300) stroke(0,0,255);
   else if(mouseX<100 && mouseY<400) stroke(0,0,0);
   else if(mouseX>700 && mouseY<100) strokeWeight(5);
   else if(mouseX>700 && mouseY<200) strokeWeight(10);
   else if(mouseX>700 && mouseY<300) strokeWeight(15); //點選可以改變筆的粗細
}