顯示具有 01161053_許佳欣 標籤的文章。 顯示所有文章
顯示具有 01161053_許佳欣 標籤的文章。 顯示所有文章

2015年1月18日 星期日

期末作業 貪吃小精靈


import processing.serial.*;
Serial myPort;

void draw() {
  background(imgBG);
  ser();
  image(Elf, EX, EY);
  touchGhost();
  if(dir!=0){
    image(ghostr, redx, redy);
    ghost();
  }
  if(dirp!=0){
    image(ghostp, pinkx, pinky);
    ghostp();
  }
  if(dirg!=0){
    image(ghostg, greenx, greeny);
    ghostg();
  }
}
void ser(){
  if(myPort.available()>0){
    int value=myPort.read();
    int leftEX=EX, leftEY=EY, rightEX=EX+15, rightEY=EY+15;
    if (table[leftEX][leftEY]<0)
    {
      if(value==82)
        EY+=5;
      if(value==76)
        EX-=5;
    }
    
    if (table[rightEX][rightEY]<0)
    {
        if(value==85)
          EX+=5;
        if(value==68)
          EY-=5;
    }
    println(value);
  }
}
void mouseMoved() {
  println(mouseX, mouseY);
}
void keyPressed()
{
  int leftEX=EX, leftEY=EY, rightEX=EX+15, rightEY=EY+15;
  if (table[leftEX][leftEY]<0)
  {
    if (keyCode == UP)
      EY-=5;
    if (keyCode == LEFT)
      EX-=5;
  }
  if (table[rightEX][rightEY]<0)
  {
    if (keyCode == RIGHT)
      EX+=5;
    if (keyCode == DOWN)
      EY+=5;
  }
 /* if (table[rightEX][rightEY]<0) println("safe");
  else println("ac");*/
}
int dir= 1;
void ghost() {
  float r = random(1, 5);
  //if(table[redx][redy]==0)
  //println("dir:"+dir+"*");
  switch(dir) {
  case 1: 
    {
      if (table[redx+25][redy]<0)
      {
        redx+=2;
        break;
      }
      else {  
        r = random(1, 5);
        dir = int(r);
        break;
      }
    }
  case 2: 
    {
      if (table[redx][redy+25]<0) {
        redy+=2;
        break;
      }
      else {  
        r = random(1, 5);
        dir = int(r);
        break;
      }
    }
  case 3: 
    {
      if (table[redx-5][redy]<0) {
        redx-=2;
        break;
      }
      else {  
        r = random(1, 5);
        dir = int(r);
        break;
      }
    }
  case 4: 
    {
      if (table[redx][redy-5]<0) {
        redy-=2;
        break;
      }
      else {  
        r = random(1, 5);
        dir = int(r);
        break;
      }
    }
  }
  println("rgb:"+table[redx][redy]);
}
int dirp= 2;
void ghostp() {
  float r = random(1, 5);
  //if(table[redx][redy]==0)
  //println("dir:"+dir+"*");
  switch(dirp) {
  case 1: 
    {
      if (table[pinkx+25][pinky]<0)
      {
        pinkx+=2;
        break;
      }
      else {  
        r = random(1, 5);
        dirp = int(r);
        break;
      }
    }
  case 2: 
    {
      if (table[pinkx][pinky+25]<0) {
        pinky+=2;
        break;
      }
      else {  
        r = random(1, 5);
        dirp = int(r);
        break;
      }
    }
  case 3: 
    {
      if (table[pinkx-5][pinky]<0) {
        pinkx-=2;
        break;
      }
      else {  
        r = random(1, 5);
        dirp = int(r);
        break;
      }
    }
  case 4: 
    {
      if (table[pinkx][pinky-5]<0) {
        pinky-=2;
        break;
      }
      else {  
        r = random(1, 5);
        dirp = int(r);
        break;
      }
    }
  }
}
int dirg= 3;
void ghostg() {
  float r = random(1, 5);
  //if(table[redx][redy]==0)
  //println("dir:"+dir+"*");
  switch(dirg) {
  case 1: 
    {
      if (table[greenx+25][greeny]<0)
      {
        greenx+=2;
        break;
      }
      else {  
        r = random(1, 5);
        dirg = int(r);
        break;
      }
    }
  case 2: 
    {
      if (table[greenx][greeny+25]<0) {
        greeny+=2;
        break;
      }
      else {  
        r = random(1, 5);
        dirg = int(r);
        break;
      }
    }
  case 3: 
    {
      if (table[greenx-5][greeny]<0) {
        greenx-=2;
        break;
      }
      else {  
        r = random(1, 5);
        dirg = int(r);
        break;
      }
    }
  case 4: 
    {
      if (table[greenx][greeny-5]<0) {
       greeny-=2;
        break;
      }
      else {  
        r = random(1, 5);
        dirg = int(r);
        break;
      }
    }
  }
}
void touchGhost()
{
  println("EX"+EX+",EY"+EY+",PX"+pinkx+",PY"+pinky);
  if(abs(pinkx-EX)<=10 && abs(pinky-EY)<=10)
  {
    dirp=0;
  }
  if(abs(redx-EX)<=10 && abs(redy-EY)<=10)
  {
    dir=0; 
  }
  if(abs(greenx-EX)<=10 && abs(greeny-EY)<=10)
  {
    dirg=0; 
  }
  if(dir==0 && dirp==0 && dirg==0)
  println("YOU WIN");
}

2014年12月29日 星期一

week16

PACMAN

  if(digitalRead(2)==LOW && right==0){
    right=1;
    //Serial.print("R");
    Serial.write(82);
  }
  else if(digitalRead(2)==HIGH) right=0;

  if(digitalRead(3)==LOW && left==0){
    left=1;
    Serial.print("L");
    //Serial.write(20);
  }
  else if(digitalRead(3)==HIGH) left=0;

   if(digitalRead(4)==LOW && up==0){
    up=1;
    Serial.print("U");
    //Serial.write(20);
  }
  else if(digitalRead(4)==HIGH) up=0;

  if(digitalRead(5)==LOW && down==0){
    down=1;
    Serial.print("D");
    //Serial.write(20);
  }
  else if(digitalRead(5)==HIGH) down=0;
期末小精靈



week15


馬達

期末作品
pac-man


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);
   
}




2014年12月8日 星期一

week13

馬達:sweep
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("LOVE");
  else Serial.println("NO");
}

2014年11月24日 星期一

第8週業界雙師授課心得報告-叁式曾煒傑先生


        今天的互動技術概論,老師特地請了叁式的創辦人曾煒傑先生,雖然在二年級的時候以經有聽過同樣的演講,但是在自己經歷過和體驗過一些互動儀器後,我覺得今天的演講,聽起來跟之前又更加不一樣,並且有了更多自己的想法,像是,會想想看這麼厲害的專題是怎麼做的,那我又可以如何應用,更加廣泛的去擴充內容,而且又可以帶來什麼樣的效應;比起只是呆呆的坐在下面聽演講,取而代之有更多的想法在心裡不停響應。
        曾煒傑先生今天跟大家分享了很多東西,也跟我們大概說明工司的運作,最讓我覺得厲害的是,總公司全部的人大概才10來個,這代表每個人都必須各司其職,大家都要很有本事,完全不能有偷懶的餘地。另外公司接的專案類型大概分為兩類,藝術麵和商業面,商業專案比較需要符合廠商的要求,可以發揮的創意就比較少,但是相對錢就比較多,像是白蘭氏的夢想起動專案,他們在東區坐了一個很大的雞精物外型的裝置,再進去之前可以選擇自己的夢想,像是旅遊、賺錢……等等,然後進去之後,會用這些關鍵詞,去google圖片,然後組合成一個愛心,另外也有介紹nike的籃球鞋專案,就是只要做出和籃球星一樣的動作便即可,這用的就是kinect辨識隻體動作;另外藝術專案就是比較有自己的創意空間,但是錢就是少一點,其中就有提到,像是有些廠商就只會在指定時間到前一天才會稍微關心一下,我覺得其中最厲害的就是和劇場合作的第七感官,在一個偌大房間,設置幾十隻的camera,讓舞者和背景即時互動,聚光燈還會自動追著舞者跑,而且每個觀眾也能當場融入表演的一部分,另外演講者還有提到外國的觀眾和台灣的觀眾的民情真的差很多,台灣基本上都是坐在一旁不敢隨意跟舞者互動,但是外國觀眾就就差很多了,他們有時會還會追著舞者或抓著舞者不放呢! 除了這些,叁式還參與了很多像是博物館的專案乾隆潮,還有三太子等等,還有貪食蛇,真的都是很有趣的專案。
        另外,曾煒傑先生還介紹了其它各國的有趣影片,像是可口可樂的無國界飲料機台,讓印度和巴基斯坦可以透過這機台忘記兩國之間的恩怨,彼此分享合作拿到飲料;還有日本大樓光秀,建出整個城市的模型,並且利用聲光搭配模型做出非常美麗的一個作品,其精細度,可說是令人瞠目結舌的地步。而且曾煒傑先生還介紹了很多perfume的影片,我敢肯定,他一定是Perfume的粉絲!其中一個令人印象深刻的就是真鍋大度的作品,每個作品都很大型而且都充滿現代感。
        在最後,曾煒傑先生有說,所有的作品都應該要知道是要為什麼而做,其中的背景意義,是我們最需要探討的,我真的覺得很有道理,不應該只是為做而做,向他們公司這樣為夢想而出發,這真的是最棒的工作了!其實我會想要拜小葉老師為師,就是因為參加二年時那場演講所影響,那時候看的影片,我真的覺得很感動,打從心底的。希望我會保持這樣的感覺,繼續努力下去,找到屬於自己的那份夢想。

        

第10週業界雙師授課心得報告-愛迪斯胡啟彥先生

10週業界雙師授課心得報告-愛迪斯胡啟彥先生
        期中考後第二個禮拜,老師邀請愛迪斯的胡啟彥先生來給大家上課,我對愛迪斯最有印象的就是,他們代理的Unity,暑假時也有去參加兩天的Unity培訓。第一節課,胡啟彥先生像前一個禮拜的業界老師一樣,介紹了許多非本公司專案, 包括現在很流行的3D虛擬光雕的車展,利用燈光秀打在車子本身,做出很炫的效果,還有上禮拜也介紹過的博物館的互動裝置。還有漫畫攝影活動,搭配kinect的進行去背,所以就可以讓參加活動的人,和漫畫結合,可以自己當主角,而且影片中,照像時會有點模糊或是去背不夠乾淨的部分,是因為受到場地的燈光影響。另外還有互動相框,其實就是用螢幕去取代相框中的畫作,當使用者去挪動相框,而畫面上的水果,會隨之傾倒移動。

        還有一個安麗冰上雅姿的表演,場地的燈光投影會隨著舞者而變動,本來我以為是用類似像kinect之類的紅外線攝影機去追蹤舞者,但是講師說是因為有場地限制的關係,所以最後是讓工作人員拿著類似手繪版的東西,當舞者溜到哪,工作人員就在那個位置起動效果。其中最讓我印象深刻的就是展示屋的導覽裝置,它裝置的畫面是用unity去件3D模型,然後取代傳統用滑鼠一動畫面的裝置,用的是一顆棋子,讓棋子在展示屋平片圖上移動,畫面就可以隨之移動,,並且他的做法是在棋子底部加上一個辨認的圖示,然後平面圖那塊版子隱藏著一隻追蹤圖示用的camera,而且當棋子碰到平面圖上樓梯的圖示,畫面真的也會爬上樓梯到二樓,我覺得這個專案真的很有趣,因為現今很多的博物館或是展示場,都出現很多類似這樣的互動裝置,讓所有的參與者不再只是被動的接收資訊,當一個聆聽者或觀看者,而是可以身歷其境的參與其中,好像自己也是展場中所有作品的一部分。

week11

arduino+leap
https://www.youtube.com/watch?v=Lx6fXIeBDMQ
https://www.youtube.com/watch?v=eHpD3Wuj2Co

Coke Piano and Launchpad made with Arduino

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

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

第一次使用arduion,並打開example-blink

Knight Rider-led



2014年10月27日 星期一

期中作業 貓頭跑跑





遊戲玩法:
玩家必須利用旁邊的箭頭,想辦法讓貓咪老師到達最後終點(crown),且在最短的步數之內,分數越高,每吃到一顆星星加10分,分數從100分開始算,每多走一步路,或多用一個箭頭扣一分。
void setup()
{
  minim = new Minim(this);
  player = minim.loadFile("walking by the sea.mp3");
  player.play();
  size(700,600);
  start=loadImage("start.png");
  start.resize(100,100);
  up=loadImage("up.png");
  down=loadImage("down.png");
  left=loadImage("left.png");
  right=loadImage("right.png");
  delete=loadImage("X.png");
  delete.resize(50,50);
  host=loadImage("HAT.png");
  host.resize(100,100);
  goal=loadImage("goal.png");
  goal.resize(700,500);
  gameover=loadImage("Game_Over.png");
  gameover.resize(700,600);
  star=loadImage("host.png");
  star.resize(100,100);
  crown=loadImage("crown.png");
  crown.resize(100,100);
}
void draw()
{
  background(0, 102, 153);
  for(int i=0;i<5;i++)
  {
    for(int j=0;j<5;j++)
    {
      rect(i*100,j*100,100,100);
    }
  }
  if(go<1)
  image(host,0,0);
  image(up,600,0);
  image(down,600,100);
  image(left,600,200);
  image(right,600,300);
  image(delete,600,400);
  image(start,600,500);
  image(crown,400,400);
  if(count==0){
    star();
    count++;
  }
  for(int i=0;i<5;i++){
    for(int j=0;j<5;j++){
      if(starCount[i][j]==1) image(star,i*100,j*100);
    }
  }
  if(mY<100 && mX>600){
    image(up,mouseX,mouseY);  s=1;}
  else if(mY<200 && mX>600){
    image(down,mouseX,mouseY);  s=2;}
  else if(mY<300 && mX>600){
    image(left,mouseX,mouseY);  s=3;}
  else if(mY<400 && mX>600){
    image(right,mouseX,mouseY);  s=4;}
  else if(mY<500 && mX>600){
    image(delete,mouseX,mouseY);  s=5;}
 
  for(int i=0;i<5;i++)
  {
    for(int j=0;j<5;j++)
    {
      if(block[i][j]==1)
        image(up,i*100+25,j*100+25);
      else if(block[i][j]==2)
        image(down,i*100+25,j*100+25);
      else if(block[i][j]==3)
        image(left,i*100+25,j*100+25);
      else if(block[i][j]==4)
        image(right,i*100+25,j*100+25);
      else
        block[i][j]=0;  
    }
  }
  if(mouseX>600 && mouseY>500 && mousePressed)
  {
    go=1;
  }
  if(go==1 && finish==0)
  {
    hostMove(block[countX][countY]);
    print(countX+","+countY+","+sum+" ");
  }
  if(finish==1)
  {
    image(host,countX*100,countY*100);
    image(gameover,0,0);
    if(mousePressed==true)
    restart();
 
  }
  if(finish==2)
  {
    image(host,countX*100,countY*100);
    tint(255, 126);
    image(goal,0,0);
    noTint();
    textSize(32);
    text("your score="+sum, 200, 550);
    text("CLICK TO RESTART",200,580);
    if(mousePressed==true)
    restart();
  }

}
void mousePressed()
{
  mX=mouseX;mY=mouseY;
  if(mY<500 && mX<500 && s>0)
  {
    block[(int)mX/100][(int)mY/100]=s;
  }
  s=0;

}
void hostMove(int x)
{

  if(x>0)
    g=x;
  if(countX+countY!=8 && sum>0){
    switch(g)
    {
      case 1:{
        if(countY>0){
        image(host,(countX*100),(countY*100-100));
        bonous();
        countY--;}
        sum--;break;}
      case 2:{
        if(countY<4){
        image(host,(countX*100),(countY*100+100));
        bonous();
        countY++;}
        sum--;break;}
      case 3:{
        if(countX>0){
        image(host,(countX*100-100),(countY*100));
        bonous();
        countX--;}
        sum--;break;}
      case 4:{
        if(countX<4){
        image(host,(countX*100+100),(countY*100));
        bonous();
        countX++;}
        sum--;break;}
    }
  }
  else if(sum==0)
    finish=1;
  else
    finish=2;
}
void star(){
  for(int i=0;i<5;i++){
    rabonousX=(int)(random(0,500)/100);
    rabonousY=(int)(random(0,500)/100);
    if(rabonousX==0 && rabonousY==0){
      starCount[rabonousX+1][rabonousY+1]=1;
    }
    else if(starCount[rabonousX][rabonousY]==1) i--;
    else if(rabonousX==4 && rabonousY==4) i--;
    else starCount[rabonousX][rabonousY]=1;
  }
}
void bonous(){
  if(starCount[countX][countY]==1) sum+=10;
  starCount[countX][countY]=0;

}
void restart()
{
  mX=0;mY=0;
  countX=0;countY=0;go=0;g=2;sum=100;finish=0;count=0;
  for(int i=0;i<5;i++)
  {
    for(int j=0;j<5;j++)
    {
      starCount[i][j]=0;
      block[i][j]=0;
    }
  }
}

2014年10月13日 星期一

week05

期中,保齡球躲避球
http://www.2144.cn/html/61/4424/
1.先做出可以動的敵人
2.可以隨著滑鼠任意移動的躲避球
3.球可以斜著移動
4.球的反彈碰撞
5.打倒敵人


2014年10月6日 星期一

Week04

轉花

void setup(){
  size(600, 600);
}
void draw(){
  translate(mouseX, mouseY);
  rotate(0.001*frameCount);
  rotate(PI/4);
  fill(#F2A9F2);ellipse(0,0, 80,150);
  rotate(PI/4);
  fill(#F2A9F2);ellipse(0,0, 80,150);
  rotate(PI/4);
  fill(#F2A9F2);ellipse(0,0, 80,150);
  rotate(PI/4);
  fill(#F2A9F2);ellipse(0,0, 80,150);
  //noStroke();
  rotate(PI/4);
  fill(#E217E3);ellipse(0,0, 80,80); 
}

void setup(){
  size(600, 600);
  colorMode(HSB, 600, 400, 400);
}
void draw(){
  fill(mouseX, mouseY, 400);
  translate(mouseX, mouseY);
  rotate(0.001*frameCount);
  for(int i=0; i<4; i++)
  {
    rotate(PI/4);
    //fill(#F2A9F2);
    ellipse(0,0, 80,150);
  }
  //noStroke();
  rotate(PI/4);
  fill(#E217E3);ellipse(0,0, 80,80);
  
  
}

期中作品想要做打保齡球小遊戲








2014年9月29日 星期一

week03





// music


PImage img,bg;
import ddf.minim.*;
Minim minim;
AudioPlayer player, music;

void setup(){
  size(1000, 800);
     minim = new Minim(this);
   player = minim.loadFile("forest.wav");
   //music=minim.loadFile("Kalimba.mp3");
   player.play();
  img=loadImage("1.png");
  bg=loadImage("2.jpg");
  bg.resize(1000,800);
  imageMode(CENTER);
}
void draw(){
  background(bg);
  image(img, mouseX, mouseY, 50, 50);
}