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

2013年11月10日 星期日

第八週上課內容

完成期中作品:神之小朋友下樓梯


第八週 課堂作業

1.起始畫面  倒數計時





2.結束畫面 game over



第十週期中作品展示



我們是像水果忍者的方式,計時20秒切到水果會計分,有背景音樂是我難過(但影片沒有錄製聲音)
我是和盧泰佑一組

第八週

老師示範血條

99163116鄭祥斌

int N=4;
int score=0;
int []sequence=new int[1000];
int bloodA=125;
int bloodB=125;
float CarX=150;
float CarY=500;
float []thingX= new float[4], thingY= new float[4], thingType= new float[4];
PImage imgZombie;
PImage imgCar;
PImage imgStop;
PImage imgWork;
PImage imgRoad;
PImage imgPolice;
int stage=0;
void setup() {
  size(500, 600);
  imgZombie=loadImage("zombie.png");
  imgCar=loadImage("car.gif");
  imgWork=loadImage("work.gif");
  imgStop=loadImage("http://www.jiaotongbiaopai.com/upfile/article/201362622221081709468.gif");
  imgRoad=loadImage("http://image.cn.made-in-china.com/2f0j01hBuQCfSPJlrW/%E9%A9%AC%E8%B7%AF%E5%88%92%E7%BA%BF%E6%BC%86.jpg");
  imgPolice=loadImage("http://pic3.nipic.com/20090602/2801713_220519017_2.jpg");
  image(imgPolice, 500, 600);
  image(imgRoad, 500, 600);
  for (int i=0;i<N;i++) {
    //sequence[i]=int (random(3)) ;
    newThing(i);
  }
}
//int now=0;
int countDown=5*30;

void keyPressed() {
    if (keyCode==RIGHT) CarX+=40;
    if (keyCode==LEFT) CarX-=40;
  }
 
void newThing(int i) {
    thingY[i]=-random(200);
    thingX[i]=random(400);
    thingType[i]=int(random(3))+1;
  }

void drawZombie(int i ) {
    fill(255, 0, 0);
    image (imgZombie, thingX[i], thingY[i], 40, 60);
  }
void drawStop (int i) {
    fill (0);
    image (imgStop, thingX[i], thingY[i], 40, 60);
  }
void drawWork(int i) {
    fill(#FF6803);
    image (imgWork, thingX[i], thingY[i], 60, 60);
  }

void draw() {
  background(255);
 
  switch(stage) {
  case 0:
    if (countDown>0) {
      image(imgPolice, 0, 0, 500, 600) ;
      countDown--;
      textSize(30);
      text("Are you ready?", 150, 250);
      text("Start: "+countDown/30, 180, 300);
      return ;
    }
    image(imgRoad, 0, 0, 500, 600);

    //   for(int i=0;i<N;i++){
    //    //image(imgZombie, sequence[i]*100, 400-(i-now)*100);
    //  }
    for (int i=0;i<N;i++) {
      if (thingType[i]==1)drawZombie(i);
      else if (thingType[i]==2)drawStop(i);
      else if (thingType[i]==3)drawWork(i);
      thingY[i]+=4;
      if (thingY[i]>500) newThing(i);
    }
    image(imgCar, CarX, CarY, 100, 100);
    //for(int i=0;i<4;i++){
    //score(i);
    //}
    fill(255,0,0);
  rect(0,0,bloodA*2,50);
  rect(250,0,bloodB*2,50);
  }
}

李惠筠、李翌琦 期中作業

1.遊戲玩法:
從上到下共六個子彈通道,分別代表鍵盤,A、S、D、J、K、L (大小寫都可),
目標是打隨機出現的小豬,打到一隻算一分,如果小豬到底線,及遊戲結束

2.遊戲畫面:

Week08

今週完成事項
1.火柴人跳耀
2.碰撞欄干設定
3.欄杆與雲朵速度設定

Week08魏正

期中展示:
作品名稱:手勢辨識天體觀測
本作品為突破觸控與平面的互動操作模式,
藉由Xtion PRO的感測搭配PrimeSense的手部抓取辨識功能,
讓使用者可以直覺的使用手部拖曳、旋轉與抓取縮放展示畫面,
Demo影像中將此軟體應用於google earth與stellarium,
給使用者如科幻片中探索地標與星空的操作情境。



作品名稱:XtionPaint
使用Xtion的手部辨識搭配Processing所撰寫的體感繪圖板,
讓使用者可以藉由類似提筆、落筆的肢體動作進行繪畫。
作品名稱:XtionJazz
使用Xtion的手部辨識搭配Processing所撰寫的幻想爵士鼓,
讓使用者可以藉由手部捶打鼓面來進行打擊樂。

2013年10月28日 星期一

Week8 期中進度練習


練習老師操作的掉金幣的程式碼。

week08














遊戲名稱:太鼓達人
遊戲玩法:當紅色或藍色的圓圈跑到指定的白色圓圈中時,會變成綠色
當按下指定的按鈕(藍色"x",紅色"y")獲取分數,
跟著節奏訓練自己的手眼協調力,也可以在好聽的歌曲中加入自己的鼓聲
使遊戲更好玩。






和楊舒婷一起做

Week8

##進度_第一關答案判定
PImage starS;

int []muc=new int[5];
int Z,i=0;
int D1=0,D2=6,D3=6;
int []Ponx={100,500,300,100,500};
int []Pony={500,500,300,100,100};
int []PPx={125,525,325,125,525};
int []PPy={525,525,325,125,125};

int []x={6,6,6,6,6,6,6,6};
int []y={0,2,4,1,2,3,0,1};
int W;

void setup()
{
   size(1000,750);
   background(255,255,255);
   starS=loadImage("http://i.imgur.com/Oxs9TWM.png?1");
   image(starS,Ponx[0],Pony[0],50,50);
    image(starS,Ponx[1],Pony[1],50,50);
   image(starS,Ponx[2],Pony[2],50,50);
   image(starS,Ponx[3],Pony[3],50,50);
   image(starS,Ponx[4],Pony[4],50,50);
}

void mouseClicked()
{
for(i=1;i<=8;i++)
{
if(Ponx[0]<=mouseX&&mouseX<=Ponx[0]+50&&Pony[0]<=mouseY&&mouseY<=Pony[0]+50)
{
 Z=0;
}
else if(Ponx[1]<=mouseX&&mouseX<=Ponx[1]+50&&Pony[1]<=mouseY&&mouseY<=Pony[1]+50)
{
Z=1;
}
else if(Ponx[2]<=mouseX&&mouseX<=Ponx[2]+50&&Pony[2]<=mouseY&&mouseY<=Pony[2]+50)
{
 Z=2;
}
else if(Ponx[3]<=mouseX&&mouseX<=Ponx[3]+50&&Pony[3]<=mouseY&&mouseY<=Pony[3]+50)
{
 Z=3;
 }
else if(Ponx[4]<=mouseX&&mouseX<=Ponx[4]+50&&Pony[4]<=mouseY&&mouseY<=Pony[4]+50)
{
 Z=4;
 }


if(D1!=6)
{
D2=Z;
//x[i]=Z;
draw();
D1=D2;
D2=6;
}
}

//check();
}

void draw()
{
if(D1==0 && D2==1 || D1==1 && D2==0)
line(PPx[0],PPy[0],PPx[1],PPy[1]);

else if(D1==0 && D2==3 ||D1==3 && D2==0 )
line(PPx[0],PPy[0],PPx[3],PPy[3]);

else if(D1==2 && D2==0 ||D1==0 && D2==2 )
line(PPx[0],PPy[0],PPx[2],PPy[2]);

else if(D1==1 && D2==2 ||D1==2 && D2==1 )
line(PPx[1],PPy[1],PPx[2],PPy[2]);

else if(D1==1 && D2==4 ||D1==4 && D2==1 )
line(PPx[1],PPy[1],PPx[4],PPy[4]);

else if(D1==2 && D2==3 ||D1==3 && D2==2 )
line(PPx[2],PPy[2],PPx[3],PPy[3]);

else if(D1==2 && D2==4 ||D1==4 && D2==2 )
line(PPx[2],PPy[2],PPx[4],PPy[4]);

else if(D1==3 && D2==4 ||D1==4 && D2==3 )
line(PPx[3],PPy[3],PPx[4],PPy[4]);
}

/*void check()
{
for(i=0;i<8;i++)
{
if(x[i]==y[i])W=1;
else W=0;i=8;
}
if(W==1)
{
 image(starS,Ponx[0],Pony[0],200,200);
}
else if(W==0)
{
 image(starS,Ponx[0],Pony[0],500,500);
}
}*/



Week8 葉玉婷

今日進度

Week 08


week8 期中作業

今天莫名其妙的學會了寫程式
有點開心


                                 
1遊戲倒數


2.遊戲開始畫面

按a及s怪獸會往右跑

按o及p會往左跑

血量歸零後 會顯事結束畫面

week 08

WEEK08,期中作業

組員: 99163072盧彥佑
          99163134簡尉倫
遊戲名稱:BALLS BOMB!!


第一節
討論期中作業以及想法

第二節、第三節
將程式碼修改,新增封面和結束畫面、可以選取按鈕、跑分數。

float [] ballX = new float [50];
float [] ballY = new float [50];
float [] ballVX = new float [50];
float [] ballVY = new float [50];
float [] ballR = new float [50];
int h = 600;
int w = 600;
int test = 0;
int aa = 0, bb = 0;
int stage =0;   //控制目前場景位置
PImage [] game = new PImage [11];
PImage bkImage ;
String [] name = new String [11];
int moteX = 0, moteY = 0, mote = 0;   //切割按鈕位置用
int checkanswer = 0;           //title控制按鈕
int checktime = 0;             //讓大球跑一遍
void setup() {
  size(h, w);
  for (int i = 0 ; i < 11; i++) {
    name[i] = "title"+ i + ".png";
    game[i] = loadImage(name[i]);
  }
  bkImage = loadImage("bk.png");
}
void draw() {
  switch(stage) {
  case 0:
    image(bkImage, 0, 0, w, h);
    image(game[0], w/8, h/8, w/8*6, h/8);
    for (int i=1 ; i<=4;i++) {
      image(game[i], w/4 + w/8, h/8*(2+i), w/2-(w/4), h/16);
    }
    moteX = mouseX - w/4 - w/8;
    moteY = mouseY - h/8*3;
    if ( moteX >= 0 && moteX /(w/4) == 0 ) {
      mote = moteY /  (h/8/2)+2;
      if ( mote%2 == 0 && mote < 9 && moteY > 0) {
        image(game[mote/2+4], w/4+ w/8, h/8*(2+mote/2), w/2-(w/4), h/16);
        checkanswer = mote/2;
      }
      else checkanswer =0;
    }
    checktime = 0;
    aa = 0;
    bb = 0;
    break;
  case 1:
    background(255);
    noStroke();
    fill(0, 255, 255);
    if (checktime==0) {
      ballX[0] = w/8*4 ;
      ballY[0] = w/8*3/2;
      ballVX[0] = 0 ;
      ballVY[0] = 0.5;
      ballR[0] = w/8*3;
      checktime++;
    }
    for (int i = 0;i<50;i++) {
      ellipse(ballX[i], ballY[i], ballR[i], ballR[i]);
      if (ballX[i] != 0) ballVY[i] +=0.15;
      ballX[i] += ballVX[i];
      ballY[i] += ballVY[i];
    }
    attack();
    balls();
    releaseball();
    fill(255, 0, 0);
    textSize(20);
    text("grade:" + aa, 20, 20, 100, 50);
    endgame();
    break;
  case 2 :
    break;
  case 3 :
    text("grade:" + aa, 20, 20, 100, 50);
    break;
  case 4:
    exit();
    break;
  case 10 :
    background(0);
    fill(255, 0, 0);
    textSize(100);
    text("GAME OVER!!", w/4, h/4-h/8, w/2, h/2);
    fill(255, 128, 0);
    textSize(50);
    if (bb<aa) {
      bb++;
    }
    if (bb/1000!=0) text("grade:" + bb, w/4, h*4/8+h/16, w/8*7, h/8);
    else if (bb/100!=0) text("grade:0" + bb, w/4, h*4/8+h/16, w/8*7, h/8);
    else if (bb/10!=0) text("grade:00" +bb, w/4, h*4/8+h/16, w/8*7, h/8);
    else  text("grade:000" + bb, w/4, h*4/8+h/16, w/8*7, h/8);
    image(game[10],w/4-w/8, h/8*6, w/2-(w/4), h/16);
    image(game[8],w/2+w/8, h/8*6, w/2-(w/4), h/16);
    if (mouseX >= w/4-w/8 && mouseX <= w/2 - w/8 && mouseY >= h/8*6 && mouseY <= h/8*6 + h/16){
      image(game[9],w/4-w/8, h/8*6, w/2-(w/4), h/16);
      checkanswer =1;
    }else if(mouseX >= w/2+w/8 && mouseX <= w - w/8 && mouseY >= h/8*6 && mouseY <= h/8*6 + h/16){
      image(game[4],w/2+w/8, h/8*6, w/2-(w/4), h/16);
      checkanswer =2;
    }else checkanswer =0;
    break;
  }
}
void keyPressed() {
  switch(stage) {
  case 1:
    break;
  }
}
void mousePressed() {
  switch(stage) {
  case 0:
    if (checkanswer == 1) stage =1;
    if (checkanswer == 2) stage =2;
    if (checkanswer == 3) stage =3;
    if (checkanswer == 4) stage =4;
    break;
  case 1:
    for (int i = 0;i<50;i++) {
      if (dist (ballX[i], ballY[i], mouseX, mouseY)<=(ballR[i]/2)) {
        if (ballR[i]/2 <= 15 && ballR[i]/2 != 0) {
          aa += int (w*9/8/ ballR[i]);
          bigball(i);
        }
        else {
          aa += int (w*9/8 / ballR[i]);
          if ((mouseX - ballR[i]/10) - ballR[i]*1/3 <= 0) {
            ballY[i] = ballY[i];
            ballVY[i] = -ballVY[i] + random(1);
            ballR[i] = ballR[i]*2/3;
          }
          else {
            ballX[i] = mouseX - ballR[i]/10;
            ballY[i] = ballY[i];
            ballVX[i] = -3*cos(random(PI/2));
            ballVY[i] = -ballVY[i] + random(1);
            ballR[i] = ballR[i]*2/3;
          }
          newball(i, 1);
          for (int j = 0 ; j < 50 ; j ++ ) {
            if (ballX[j] == 0.0 && ballY[j] == 0.0 ) {
              test ++ ;
            }
            if (test != 0) {
              if ((mouseX + ballR[i]) + ballR[i]/2 >= w) {
                ballX[j] = ballX[i];
                ballY[j] = ballY[i]+ballR[i];
                ballVY[j] = ballVY[i]+random(1);
                ballVX[j] = 3*cos(random(PI/2)) ;
                ballR[j] = ballR[i];
              }
              else {
                ballX[j] = mouseX + ballR[i];
                ballY[j] = ballY[i];
                ballVX[j] = 3*cos(random(PI/2)) ;
                ballVY[j] = ballVY[i]+random(1);
                ballR[j] = ballR[i];
              }
              newball(j, 1);
              test=0;
              break;
            }
          }
        }
      }
    }
    break;
  case 2:
    stage = 0;
    break;
  case 3:
    stage = 0;
    break;
  case 10:
    if (checkanswer == 1) stage = 0;
    if (checkanswer == 2) exit();
    break;
  }
}
void attack() {
  for (int i=0 ; i <50 ; i++ ) {
    if ( ballX[i] - ballR[i]/2 <= 0 || ballX[i] + ballR[i]/2 >= w) {
      ballVX[i] = -ballVX[i];
    }
  }
}
void balls() {
  for (int i = 0 ; i <50 ;i ++) {
    for (int j = i ; j <50 ; j ++) {
      if (dist(ballX[j], ballY[j], ballX[i], ballY[i]) <= (ballR[i]/2 + ballR[j]/2) ) {
        if (i!=j) {
          if (ballX[j] >= ballX[i]) ballVX[i] = -abs(ballVX[i]+ballVX[j])/2;
          else ballVX[j] = abs(ballVX[i]+ballVX[j])/2;
          if (ballY[j] >= ballY[i]) ballVY[i] = -abs(ballVY[i]+ballVY[j])/2;
          else ballVY[j] = abs(ballVY[j]+ballVY[j])/2;
        }
      }
    }
  }
}
void releaseball() {
  for (int i = 0 ; i <50 ;i ++) {
    if (ballY[i] - ballR[i] / 2 >= h ) {
      ballX[i] = 0;
      ballY[i] = 0;
      ballVX[i] = 0;
      ballVY[i] = 0;
      ballR[i] = 0;
    }
  }
}
void bigball(int i) {
  ballX[i] = int(random(w/8*3)+w/8*3/2);
  ballY[i] = w/8*3/2;
  ballVX[i] = 3*cos(random(PI*2));
  ballVY[i] = 0;
  ballR[i] = w/8*3;
}
int count = 0;
void endgame() {
  for (int i = 0 ; i <50 ;i ++) {
    if (ballR[i] == 0 ) count++;
  }
  if (count == 50) {
    stage = 10;
  }
  else count = 0;
}
void newball(int i, int k) {
  switch (k) {
  case 0 :
    break;
  default :
    k = 0;
    for (int j = 0 ; j < 50 ; j++) {
      if (dist(ballX[j], ballY[j], ballX[i], ballY[i]) <= (ballR[i]/2 + ballR[j]/2)) if ( i != j) {
        ballY[i] +=1;
        k++;
      }
    }
    if ( k != 0 ) newball(i, k);
    else break;
  }
}
遊戲介面


遊戲結束畫面以及算分數



最後還有進階遊戲和遊戲說明還沒有完成,預計還會加背景音樂,讓遊戲更生動有趣。




2013年10月27日 星期日

第8週上課


1.
   吃掉小老鼠
   會有壞老鼠出來
2.
   被壞老鼠碰到~就死掉
3.
   小老鼠碰到牆壁會反彈


float [] msX=new float[5], msY=new float[5];
float []msVX=new float[5], msVY=new float[5];
int []scolor=new int[5];

int top=0, catX=mouseX, catY=mouseY, S=100;
PImage ms, cat, badms;
void setup() {
  size(600, 600);
  ms=loadImage("http://scitech.people.com.cn/mediafile/200807/07/F200807070850442343926401.jpg");
  cat=loadImage("http://max218.com/wp-content/uploads/2013/02/%E8%B2%93.jpg");
  badms=loadImage("http://www.icoou.com/uploadfile_20091016/2010/12/28/20101228125512809.jpg");
  for (int i=0;i<5;i++) {
    newms(i);
    scolor[i]=0;
  }
}
int bad=0;
void draw() {

  if (bad==1) {
    background(255, 0, 0);
    for (int i=0;i<5;i++) {
      msVX[i]=0;
      msVY[i]=0;
    }
  }
  else background(0);
  image(cat, mouseX-50, mouseY-50, 100, 100);
  for (int i=0;i<5;i++) {
    if (scolor[i]==0)                                                       // the ms image
      image(ms, msX[i], msY[i], 50, 50);
    else if (scolor[i]==1)                                                 // the ms image to the bad ms image
      image(badms, msX[i], msY[i], 100, 100);
    msX[i]+=msVX[i];
    msY[i]+=msVY[i];
    if (msX[i]<0 || msX[i]>600 ||msY[i]<0 || msY[i]>600)     //change the direction
    {
      if (msX[i]<0)
      {
        msVX[i]=-msVX[i];
      }
      if (msY[i]<0)
      {
        msVY[i]=-msVY[i];
      }
      if (msX[i]>600)
      {
        msVX[i]=-msVX[i];
      }
      if (msY[i]>600)
      {
        msVY[i]=-msVY[i];
      }

      //newms(i); //call new one
    }
    if (dist(msX[i], msY[i], catX-30, catY-30)<S)     //cat eat the ms and ms become badms
    {
      if (scolor[i]==1)
      {
        bad=1;
      }
      else
        scolor[i]=1;      
      newms(i);
      msVX[i]=-msVX[i];
      msVY[i]=-msVY[i];
    }
    //bad=1;
  }
}
void newms(int i) {

  float angle=random(2*PI);
  msVX[i]=cos(angle);
  msVY[i]=sin(angle);
  int dir=int(random(4));
  if (dir==0) {
    msX[i]=random(600);
    msY[i]=0;
  }
  else if (dir==1) {
    msX[i]=random(600);
    msY[i]=600;
  }
  else if (dir==2) {
    msY[i]=random(600);
    msX[i]=0;
  }
  else if (dir==3) {
    msY[i]=random(600);
    msX[i]=600;
  }
}
void mouseMoved() {
  catX=mouseX;
  catY=mouseY;
}