顯示具有 01160581_高翊庭 標籤的文章。 顯示所有文章
顯示具有 01160581_高翊庭 標籤的文章。 顯示所有文章

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

預計更新
完成按鈕控制主角行動
製作開始結束畫面
先以簡單的文字製作

下周預計:
1. 改善開始結束畫面
2. 新增重新開始功能
3. 將重新開始以及開始遊戲功能建置在arduino上
4. 找合適的外箱裝飾設備

2014年12月22日 星期一

Week14

旋鈕
加入後可用來調頻、音樂大小聲..等

小精靈進度:

Ghost可以亂跑,預計再加入更多隻
簡化地圖,讓判斷更順暢
解決小精靈會卡圖的問題

2014年12月8日 星期一

week13

ardunio 接 馬達  & 按鈕


回傳byte程式
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  while(Serial.available()>0)
  {
    int data = Serial.read();
    Serial.print(data);  
  }
}
用int的話會輸出ASCII
如果將int 改成 char 則會傳出字元

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("WWW");
  else Serial.println("Q_Q");
}
添加按鈕後,按下可交換輸出字樣。

2014年11月25日 星期二

業界老師授課心得


愛迪斯科技,曾經在暑期的時候參與他們的Unity培訓課程,講師分享了許多公司開發的產品及產業合作方面的專案。內容包括了體感互動、大型展場以及投影技術的相關內容。其中大部分的都需要影像處理技術、投影校正和體感辨識等等。不僅是技術也需要經費上的支援。目前國內展覽愈來愈多使用到擴增實境,例如:家具展覽等。投影則常用在汽車展上。市面上也會有更多相關技術需求。

2014年11月24日 星期一

ardunio 體驗 霹靂燈(?)

今天第一次拿到傳說中便宜又大碗的 ardunio 設備,給的設備有點豐富,
所以一開始就來玩LED接燈泡,用簡單幾行程式就可以寫出來閃亮亮的燈泡喔呼呼!

叁式心得

這次請外師來介紹有關業界的作品,除了自己公司的作品外也有介紹國內外的傑出作品。
其實不能不多去看業界作品,這樣會很沒有概念,要多面對社會上新穎的技術才能充實還在讀書的自己。
像是廣告產業最近加入很多互動的元素,

還有美術館裡也加入互動的設備來讓參觀者更有參與感,


再來表演活動也加入互動讓觀眾不再是觀眾也是表演者。


另外還有介紹下半學期要製作的arduino相關設計產品,ardunio的資源很多可以多加利用;再加上ardunio不會很貴,可以用很簡單的指令做出看起來很厲害的作品,因此廣受大家喜,希望期末時我也可以做出很棒的成品!

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月6日 星期一

2014年9月29日 星期一

Week03

讀圖後跟著滑鼠(使用center)可以把圖的中心跟隨滑鼠。
background的部分注意* 如果圖片檔案大於開檔size就可能壞掉!
音效部分使用預設好函式,MP3、WAV都可以讀
(這 個 是 上 個 禮 拜 教 的)