顯示具有 04160551_劉宛俞 標籤的文章。 顯示所有文章
顯示具有 04160551_劉宛俞 標籤的文章。 顯示所有文章

2018年1月22日 星期一

Week 19 : 普通的ㄒㄆ的普通的筆記_ 期末展示



主題:小精靈
組員:04160152 謝佩軒 04160551 劉宛俞
說明:利用方向鍵控是小精靈移動,吃掉白點點,吃掉全部的白點點遊戲就獲勝。同時還要躲避鬼怪,如果被鬼怪碰到的話遊戲就結束了。

Youtube 影片


遊戲畫面


Processing 

import processing.serial.*;
Serial myPort;
int [][]map={ {9,9,9,9,9,9,9,9,9 ,9,9,9,9,9,9,9,9,9,9 ,9,9,9,9,9,9,9,9,9,9},//9,10,10
              {9,5,5,5,5,5,5,5,5 ,9,5,5,5,5,5,5,5,5,5 ,9,5,5,5,5,5,5,5,5,9},
              {9,5,0,1,1,1,1,1,1 ,9,5,1,1,1,1,1,1,1,1 ,9,5,1,1,1,1,1,1,1,9},
              {9,5,1,9,9,9,9,5,1 ,9,9,5,1,0,0,0,0,1,9 ,9,5,1,9,9,9,9,5,1,9},
              {9,5,1,9,5,5,5,5,1 ,5,5,5,1,0,0,0,0,1,5 ,5,5,1,5,5,5,9,5,1,9}, //5
              {9,5,1,9,5,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,9,5,1,9},
              {9,5,1,9,5,1,1,1,9 ,5,1,9,9,9,9,9,9,9,5 ,1,9,5,1,1,1,9,5,1,9},
              {9,5,1,9,9,9,5,1,9 ,5,1,9,9,9,9,9,9,9,5 ,1,9,5,1,9,9,9,5,1,9},
              {9,5,1,5,5,5,5,1,5 ,5,1,5,5,5,5,5,5,5,0 ,1,5,5,1,5,5,5,5,1,9},
              {9,5,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,1 ,1,1,1,1,1,1,1,1,1,9}, //10
              {9,9,9,9,9,9,9,9,9 ,9,9,9,9,9,9,9,9,9,9 ,9,9,9,9,9,9,9,9,9,9} };
              /// 9=wall , 5= no pass , 0=pacman , 1=food
import ddf.minim.*;
Minim minim;
AudioPlayer music;
AudioPlayer game;
AudioPlayer end;
AudioPlayer over;

PImage imgUP, imgDOWN, imgLEFT , imgRIGHT;
PImage imgMG, imgMP, imgMR , imgMY;
int dir=0,dx=0,dy=0;

void setup(){
  size(870,330);
  background(0);
  imgUP=loadImage("up.JPG");
  imgDOWN=loadImage("down.JPG");
  imgRIGHT=loadImage("right.JPG");
  imgLEFT=loadImage("left.JPG");
  imgMG=loadImage("mos_green.png");
  imgMR=loadImage("mos_red.png");
  myPort = new Serial(this, "COM3", 115200);
 
  minim = new Minim(this);
  music = minim.loadFile("Intro.mp3",1024);//new SoundFile(this, "Intro.mp3");
  game = minim.loadFile("PacMan.mp3",1024);
  end = minim.loadFile("End.mp3",1024);
  over = minim.loadFile("gameover.mp3",1024);
  music.play();
  game.pause();
  end.pause();
  over.pause();
}
float open=1, angle=0;
int now=0;
int pacX=2, pacY=2, pacVX=50 , pacVY=120;
int mX=14,mY=3,MX=16,MY=3;
int food=0, eatfood=0;
int time=0 , time0=0;
int state=0;
void draw(){
  if(state==0){ ///homepage
  ///========pacman=========
    background(0);
    fill(255,255,0);
    noStroke(); arc(pacVX,pacVY,70,70,0+angle+open,PI*2+angle-open);
    pacVX+=1;
    if(pacVX>=940) {pacVX=-70;}
    now++;
    open=abs ((now%60)/60.0-0.5);
  ///=======how to play button=========
    fill(255);
    textSize(28);
    text("How To Play",350,220);
    if(mousePressed && mouseX>350 && mouseX<520 && mouseY>200 && mouseY<225){
       state=3;
    }
  ///=======play game button=========
    fill(255);
    textSize(28);
    text("Play Game",360,275);
    if(mousePressed && mouseX>360 && mouseX<500 && mouseY>255 && mouseY<280){
       state=1;
    } 
  }///State_0, homepage
 
  ///========game Start=========
  if(state==1){
    music.pause();
    game.play();
    //------------around_wall---------
    background(0);
    for(int i=0;i<11;i++){
      for(int j=0;j<29;j++){
         if(map[i][j]==9) {fill(0,0,255); noStroke(); rect(j*30,i*30,30,30);}
      }
    } 
    //------------pacman---------
    fill(255,255,0);
    noStroke(); arc(pacX*30,pacY*30,30,30,0+angle+open,PI*2+angle-open);
    now++;
    open=abs ((now%60)/60.0-0.5);
    //-----------monster----------
    image(imgMG,mX*30-15,mY*30-15,40,40);
    float a, b,c,d;
    a=mX-pacX; b=mY-pacY;
    c=abs(mX-pacX); d=abs(mY-pacY);
    if(a>0 && c>d && map[mY][mX-1]<=1) mX--; //mos to left
    else if(a<=0 && c>d && map[mY][mX+1]<=1) mX++; //mos to right
    else if(b>0 && c<d && map[mY-1][mX]<=1) mY--; //mos to up
    else if(b<=0 && c<d && map[mY+1][mX]<=1) mY++; //mos to down
   
    //-----------Game over----------
      if(mX==pacX && mY==pacY)
      {state=4;}
     
    ///========pacman move=========
    if(dx>0) dx-=3;
    if(dx<0) dx+=3;
    if(dy>0) dy-=3;
    if(dy<0) dy+=3;
    if(dx==0 && dy==0 && dir==1 && pacY-1<11 && map[pacY-1][pacX]<=1) {pacY--; angle=radians(270);dy=-30;} //up
    if(dx==0 && dy==0 && dir==2 && pacY+1>1 && map[pacY+1][pacX]<=1) {pacY++;angle=radians(90);dy=30;}//down
    if(dx==0 && dy==0 && dir==3 && pacX-1>1 && map[pacY][pacX-1]<=1) {pacX--;angle=radians(180);dx=-30;}//left
    if(dx==0 && dy==0 && dir==4 && pacX+1<29 && map[pacY][pacX+1]<=1) {pacX++;angle=0;dx=30;}//right
    if(map[pacY][pacX]==1) {map[pacY][pacX]=0; eatfood++;}
    //-----------food----------
    for(int i=0;i<11;i++){
      for(int j=0;j<29;j++){
        if(map[i][j]==1) {fill(255); noStroke(); ellipse(j*30,i*30, 10, 10);}
      }
    }  ///eatfood=103 
   
    if(eatfood>=103) {state=2;}
  }///state_1 game;
 
   ///========game End(state 2)=========
   if(state==2){
     game.pause();
     end.play();
     fill(255,0,0);
     textSize(100);
     ///text("TIME:"+time, 250, 180);
     text("WIN!!",330,180);   
    }
   
    ///========Game   Over(state 4)=========
      if(state==4){
       game.pause();
       over.play();
       fill(255,0,0);
       textSize(100);
       ///text("TIME:"+time, 250, 180);
       text("GameOver!!",150,180);   
    }
   
   
    ///========how to Play(state 3)=========
    if(state==3){
      background(0);
      fill(255); textSize(24);
      text("Use the keybroad to control pacman move", 80, 80);
      image(imgUP,400,120,60,60);
      image(imgDOWN,400,190,60,60);
      image(imgLEFT,330,190,60,60);
      image(imgRIGHT,470,190,60,60);

      fill(255,255,0); textSize(20);
      text("Back", 800, 300);
      if(mousePressed && mouseX>800 && mouseX<850 && mouseY>280 && mouseY<305){
       state=0;
      } 
    }/// state 3 how to play
   
  }

void keyPressed(){
  if(keyCode==UP) {dir=1;}
  if(keyCode==DOWN) {dir=2;}
  if(keyCode==LEFT) {dir=3;}
  if(keyCode==RIGHT) {dir=4;} 

}


2017年12月11日 星期一

2017年11月20日 星期一

2017年10月23日 星期一

找筆記?

Week06


1.做出爆爆王的地圖


程式碼:
void setup()
{
  size(850,500);
}
void draw()
{
  background(#92AD28);
  noStroke();
  for(int x=0;x<17;x++)
  {
    for(int y=0;y<10;y++)
    {
      if((x-y)%2==0) fill(#7E9819);
      else fill(#92AD28);
      rect(x*50,y*50,50,50);
    }
  }
}


2.畫出可移動的主角

程式碼:
void setup()
{
  size(850,500);
}
int userJ=9,userI=5;
float userX,userY;
void draw()
{
  background(#92AD28);
  noStroke();
  for(int i=0;i<10;i++)
  {
    for(int j=0;j<17;j++)
    {
      if((j-i)%2==0) fill(#7E9819);
      else fill(#92AD28);
      rect(j*50,i*50,50,50);
    }
  }
  fill(255,0,0);
  ellipse(userJ*50+25,userI*50+25,50,50);
}
void keyPressed()
{
  if(keyCode==LEFT)userJ--;
  if(keyCode==RIGHT)userJ++;
  if(keyCode==UP)userI--;
  if(keyCode==DOWN)userI++;
}

3.可以放水球


程式碼:
void setup()
{
  size(850,500);
}
int userJ=9,userI=5;
float userX,userY;
int waterN=0;
int[]waterJ=new int[100];
int[]waterI=new int[100];
void draw()
{
  background(#92AD28);
  noStroke();
  for(int i=0;i<10;i++)
  {
    for(int j=0;j<17;j++)
    {
      if((j-i)%2==0) fill(#7E9819);
      else fill(#92AD28);
      rect(j*50,i*50,50,50);
    }
  }
  fill(255,0,0);
  ellipse(userJ*50+25,userI*50+25,50,50);
  for(int i=0;i<waterN;i++)
  {
    fill(#93E1F7);
    ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);
  }
}
void keyPressed()
{
  if(keyCode==LEFT)userJ--;
  if(keyCode==RIGHT)userJ++;
  if(keyCode==UP)userI--;
  if(keyCode==DOWN)userI++;
  if(key==' '){waterI[waterN]=userI; waterJ[waterN]=userJ; waterN++; }
}


2017年10月16日 星期一

找筆記?

week05



void setup(){
  size(400,800);
}
float ballX=200,ballY=600;
float ballVX=0,ballVY=0;
float angle=0;
void draw(){
  background(0,128,0);
  fill(#FA9703);ellipse(200,600,100,100);
  line(mouseX,mouseY,200,600);
  fill(#F9FA03);ellipse(ballX,ballY,30,30);
  angle=atan2(mouseY-600,mouseX-200);
  
  ballX+=ballVX;
  ballY+=ballVY;
}
void mouseMoved(){
  ballX=200+50*cos(angle);
  ballY=600+50*sin(angle);
}
void mouseMovePressed(){
  ballVX=cos(angle);
  ballVY=sin(angle);

}

2017年9月30日 星期六

找筆記?

week 03
1.做一個angry bird遊戲
用滑鼠控制bird


2.讓圓能夠跟著線的方向走

3.把bird丟上來啦~


4.攻擊小豬啦



2017年9月18日 星期一

week01 找筆記?

課程介紹:

(一)
使用processing寫程式
寫出視窗大小、線、矩形


(二)
小畫家雛形
void setup(){
  size(800,600);///視窗大小
}
void draw(){
 line(mouseX,mouseY,pmouseX,pmouseY);
}

(三)
改畫筆顏色、粗細
void setup(){
  size(800,600);
}
void draw(){
  if(key=='1') {strokeWeight(10); stroke(#F548AF);}
if(key=='2') {strokeWeight(3); stroke(#5CF0D7);}
 line(mouseX,mouseY,pmouseX,pmouseY);
}

open processing