2018年10月31日 星期三

week08 期中作品

我們這組的組題是打磚塊
這個遊戲共有三個頁面



一開啟遊戲會出現遊戲的首頁,背景音樂就會撥放
畫面有三個五顏六色的球,球反彈時會發出聲音
按下箭頭圖案,就遊戲開始

第一個畫面


之後就會出現第二個畫面,就要開始打磚塊了
規則:
1.每個磚塊都有自己個生命值,磚塊生命值小於1時,磚塊才會消失
2.當任一個磚塊碰到下面那條黃線時,遊戲就會結束
3.每層都會自動多一顆球
操作:
當滑鼠點擊時,球會就會發射,會有個聲音
當球撞到磚塊時,磚塊生命值減一,在磚塊消失時,磚塊會發出爆裂聲

如果玩家不小心或沒注意,導致某磚塊觸碰到警戒線,遊戲就會結束,跳至最後一個畫面

第二個畫面

最後一個畫面
上方 顯示你最後到第幾Level
中間 有個排行榜,會紀錄TOP 5玩家玩的層數,關起能記住資料
下方 有兩個圖案
1.按下左邊圖案是離開這個遊戲
2.按下右邊圖案是會回到遊戲的首頁

最後一個畫面

賣點:
1.有開始遊戲、玩遊戲和遊戲結束三個不同的畫面
2.幾乎都有互動的聲音
3.磚塊都有自己的生命值
4.有紀錄成績的功能
5.這程式有用到class

困難點:
1.磚塊的邊界處理

2018年10月25日 星期四

Week07_黃惠嘉

🔺血量

int life=10;
boolean gameOver=false;
void setup(){
  size(500,500);
}
void draw(){
  background(0,0,205);
  fill(255);rect(50,50,100,20);
  fill(255,0,0); rect(50,50,life*10,20);
  if(gameOver){
    textSize(40);
    text("Game Over",150,150);
  }
}
void mousePressed(){
  life--;
  if(life<=0) gameOver=true;
}

🔺倒數

int state=0;
int remainTime=0;
void setup(){
  size(800,600);
}
void draw(){
  if(state==0){
    drawOP();
    if(key=='1'){
      state=1;
      remainTime=5*60;
    }
  }else if(state==1){
    drawPlayer();
  }else if(state==2){
    drawED();
  }
}
void drawED(){
  background(#A2BCFF);
  fill(#112AF7);
  textSize(30);text("Game Over",100,100);
}
void drawPlayer(){
  background(#ECFF5D);
  fill(#0FFFFD);
  textSize(30);text("Playing.. You can press 2 to play",10,100);
  text("remail: "+remainTime,10,200);
  remainTime--;
  if(remainTime<=0) state=2;
}
void drawOP(){
  background(0);
  fill(#C61C1C);
  textSize(30);text("Opening.. You can press 1 to play",10,100);
}

week07

血量程式碼:

int life=10;
boolean gameOver=false;
void setup(){
 size(500,500);
}
void draw(){
 background(0,0,205);
 fill(255);rect(50,50,100,20);
 fill(255,0,0);rect(50,50,life*10,20);
 if(gameOver){
   textSize(40);
   text("Game Over",150,150);
 }
}
void mousePressed(){
 life--;
 if(life<=0)gameOver=true;
}

Week07劉峻宇

                                         上課實做


期中作品討論

今天上課我和同組組員討論如何製作一個射擊遊戲,
我們打算運用老師所教的 計時器的程式碼
當遊戲開始,將開始倒數秒,一分鐘限時內,擊中的目標越多,分數越高

還有運用背景圖的程式碼,來製作

PImage imgCB;
void setup(){
  size(800,600);
  imgCB = loadImage(" xxx.jpg");
}
void draw(){
  image(imgCB, 0,0, width,height);






Week07_黃登煜

血量
點一下扣一格血



倒數
按1進去玩,時間跑完就GG

week7 Steven課堂筆記

籃球機
import ddf.minim.*;
Minim minim;
AudioPlayer player;
PImage imgBullet,imgBG,imgB;
float []ballX=new float[2000];
float []ballY=new float[2000];
float []ballVX=new float[2000];
float []ballVY=new float[2000];
float a,b;
int score=0,state=0;
int Time=3600;
void setup(){
  size(480,800);
  imgBG=loadImage("out.png");
  imgBullet=loadImage("ball.png");
  imgB=loadImage("BG.jpg");
  imageMode(CENTER);
   a=240;b=300;
   minim=new Minim(this);
   player=minim.loadFile("music.mp3");
   player.play();
}
void draw(){
 
  image(imgB,width/2,height/2,width,height);
  if(score>=10)
    a++;
  if(a>=400)
    a= random(width - 10);
  image(imgBG,a,b,300,300); 
  for(int i=0;i<2000;i++){
    if(dist(ballX[i],ballY[i],a,b)<=10&&sco[i]==true){
      sco[i]=false;
      score++;
    }
    if(ball[i]){
      image(imgBullet,ballX[i],ballY[i],100,100);
      ballY[i]+=ballVY[i];
      ballVY[i]+=.98;
    }
}
Time--;
image(imgBullet,mouseX,mouseY,100,100);
fill(255,0,0);textSize(40);text(+(Time+59)/60,320,135);
fill(255,0,0);textSize(40);text(+score,120,135);
}
int i=0; 
boolean []ball=new boolean[2000];
boolean []sco=new boolean[2000];
void mousePressed(){
  ball[i]=true;
  sco[i]=true;
  ballX[i]=mouseX; ///ballVX[i]=random(3);
  ballY[i]=mouseY;ballVY[i]=-35;
  i++;
}

week07 作品範例展示_2

這週也跟上週一樣 
在作品範例展示和老師下來幫忙學生的問題
我有些問題在網路上解決
但還有些bug

Week07

血條的製作
//float fruitX, fruitY, fruitVX, fruitVY;
float [] fruitX=new float[20];
int life=10;
boolean gameOver=false;
void setup(){
  size(500,500);
}
void draw(){
  background(0,0,205);
  fill(255); rect(50,50, 100,20);
  fill(255,0,0); rect(50,50, life*10,20);
  if(gameOver){
    textSize(40);
    text("Game Over",150,150);
  }
}
void mousePressed(){
  life--;
  if(life<=0) gameOver=true;
}


開始畫面
 遊戲畫面
GameOver畫面
int state=0;
int remainTime=0;
void setup(){
  size(800,600);
}
void draw(){
  if(state==0){
    drawOP();
    if(key=='1'){
      state=1;
      remainTime=5*60;
    }
  }else if(state==1){
    drawPlayer();
  }else if(state==2){
    drawED();
  }
}
void drawED(){
  background(0);
  fill(#F0D90C);
  textSize(30);text("Game Over",100,100);
}
void drawPlayer(){
  background(#F0D90C);
  fill(#161FF2);
  textSize(30);text("Playing.. You can press 2 to End",10,100);
  text("remail: "+remainTime,10,200);
  remainTime--;
  if(remainTime<=0) state=2;
}
void drawOP(){
  background(0);
  fill(#F5DE07);
  textSize(30);text("Opening.. You can press 1 to play",10,100);
}

week7

顯示血條
//float fruitX, fruitY, fruitVX, fruitVY;
float [] fruitX=new float[20];//用陣列
int life=10;
boolean gameOver=false;
void setup(){
  size(500,500);
}
void draw(){
  background(0,0,205);
  fill(255); rect(50,50, 100,20);
  fill(255,0,0); rect(50,50, life*10,20);
  if(gameOver){
    textSize(40);
    text("Game Over",150,150);
  }
}
void mousePressed(){
  life--;
  if(life<=0) gameOver=true;
}

遊戲開始畫面
按1開始遊戲,並開始計時。
遊戲結束顯示GameOver
 int state=0;
int remainTime=0;
void setup(){
  size(800,600);
}
void draw(){
  if(state==0){
    drawOP();
    if(key=='1'){
      state=1;
      remainTime=5*60;
    }
  }else if(state==1){
    drawPlayer();
  }else if(state==2){
    drawED();
  }
}
void drawED(){
  background(0);
  fill(#F0D90C);
  textSize(30);text("Game Over",100,100);
}
void drawPlayer(){
  background(#F0D90C);
  fill(#161FF2);
  textSize(30);text("Playing.. You can press 2 to End",10,100);
  text("remail: "+remainTime,10,200);
  remainTime--;
  if(remainTime<=0) state=2;
}
void drawOP(){
  background(0);
  fill(#F5DE07);
  textSize(30);text("Opening.. You can press 1 to play",10,100);
}

Week07 光

第七週
血條


int life=10;
boolean gameOver=false;
void setup(){
  size(500,500);
}
void draw(){
  background(0,0,205);
  fill(255); rect(50,50, 100,20);
  fill(255,0,0); rect(50,50, life*10,20);
  if(gameOver){
    textSize(40);
    text("Game Over",150,150);
  }
}
void mousePressed(){
  life--;
  if(life<=0) gameOver=true;
}
點擊滑鼠血條減少,問題:會低於血條

week07


int life=10;
boolean gameover=false;
void setup(){
  size(500,500);
}
void draw(){
  background(0,0,205);
  fill(255);rect(50,50,life*10,20);
  if(gameover){
    textSize(40);
    text("GameOver",150,150);
  }
}
void mousePressed(){
  life--;
  if(life<=0) gameover=true;
}

QAQ筆記 WEEK07

1.做血條(按滑鼠右鍵會一格一格減少血量)

如下圖:






2.期中作業初期想法(產生一些方塊當固定的障礙物,無法消除)
可以用鍵盤上下左右控制海綿寶寶


PImage p1;
float p1X=100,p1Y=100, p1VX=0, p1VY=0;
void setup(){
  size(830,610);
  p1=loadImage("p1.png");

}
void draw(){
  background(107,142,35);
  p1X+=p1VX;
  p1Y+=p1VY;
  image(p1,p1X,p1Y,60,60);

  fill(0,0,0); rect(60,60,50,50);
  fill(0,0,0); rect(60,170,50,50);
  fill(0,0,0); rect(60,280,50,50);
  fill(0,0,0); rect(60,390,50,50);
  fill(0,0,0); rect(60,500,50,50);

  fill(0,0,0); rect(170,60,50,50);
  fill(0,0,0); rect(170,170,50,50);
  fill(0,0,0); rect(170,280,50,50);
  fill(0,0,0); rect(170,390,50,50);
  fill(0,0,0); rect(170,500,50,50);

  fill(0,0,0); rect(280,60,50,50);
  fill(0,0,0); rect(280,170,50,50);
  fill(0,0,0); rect(280,280,50,50);
  fill(0,0,0); rect(280,390,50,50);
  fill(0,0,0); rect(280,500,50,50);

  fill(0,0,0); rect(390,60,50,50);
  fill(0,0,0); rect(390,170,50,50);
  fill(0,0,0); rect(390,280,50,50);
  fill(0,0,0); rect(390,390,50,50);
  fill(0,0,0); rect(390,500,50,50);

  fill(0,0,0); rect(500,60,50,50);
  fill(0,0,0); rect(500,170,50,50);
  fill(0,0,0); rect(500,280,50,50);
  fill(0,0,0); rect(500,390,50,50);
  fill(0,0,0); rect(500,500,50,50);

  fill(0,0,0); rect(610,60,50,50);
  fill(0,0,0); rect(610,170,50,50);
  fill(0,0,0); rect(610,280,50,50);
  fill(0,0,0); rect(610,390,50,50);
  fill(0,0,0); rect(610,500,50,50);

  fill(0,0,0); rect(720,60,50,50);
  fill(0,0,0); rect(720,170,50,50);
  fill(0,0,0); rect(720,280,50,50);
  fill(0,0,0); rect(720,390,50,50);
  fill(0,0,0); rect(720,500,50,50);

  textSize(30);
  fill(0,0,0); text("Round 1", 360, 40);
}
void keyPressed(){
  if(keyCode==LEFT)  p1VX= -2;
  if(keyCode==RIGHT) p1VX= +2;
  if(keyCode==UP) p1VY= -2;
  if(keyCode==DOWN) p1VY= +2;
}
void keyReleased(){
  if(keyCode==LEFT)  p1VX= 0;
  if(keyCode==RIGHT)  p1VX= 0;
  if(keyCode==UP)  p1VY= 0;
  if(keyCode==DOWN)  p1VY= 0;
}

Week07昱霖的筆記

做出血條(HP0)
int life=10;
void setup(){
  size(500,500);
}
void draw(){
  background(0,0,205);
  rect(50,50,100,20);
}
血條(HP100)
int life=10;
void setup(){
  size(500,500);
}
void draw(){
  background(0,0,205);
  fill(255); rect(50,50,100,20);
  fill(255,0,0); rect(50,50,life*10,20);
}
點擊滑鼠會造成扣血
void mousePressed(){
  life--;
}

HP歸零顯示Game Over
int life=10;
boolean gameOver=false;
void setup(){
  size(500,500);
}
void draw(){
  background(0,0,205);
  fill(255); rect(50,50,100,20);
  fill(255,0,0); rect(50,50,life*10,20);
  if(gameOver){
    textSize(40);
    text("Game Over",150,150);
}
}
void mousePressed(){
  life--;
  if(life<=0) gameOver=true;
}

Week07 愷

小朋友下樓梯設定

week07矮矮的筆記

其中進度
float[] brickY=new float[80];
float[] brickX=new float[80];
int [] bricklife=new int[80];

float ballX=400, ballY=560, ballVX=0, ballVY=0;
void setup()
{
  size(800,600);
  fill(255,60,53);
  
  for(int i = 0 ; i < 80 ; i++ )
  {
      brickX[i] = (i%10)*90 ;
      brickY[i] =int (i/10)*35;
      bricklife[i]=1;
  }
}
boolean flying =false,gameover=false;
void draw()
{
  background(0);
  fill(255,0,255);
  rect (mouseX-50,580, 150,20);
  fill(123,123,156);
  for(int i=0;i<80;i++)
  {
    if(bricklife[i]==0) continue;
    rect (brickX[i],brickY[i], 80,30);
    if(brickX[i] < ballX && ballX < brickX[i]+75 && abs(ballY-brickY[i])<20)
    bricklife[i]=0;
    if(bricklife[i]==0)
    {
      if(ballX>=brickX[i]) ballVX=10;
      if(ballX<=brickX[i]) ballVX=-10;
      if(ballY>=brickY[i]) ballVY=10;
      if(ballY<=brickY[i]) ballVY=-10;
    }
  }
  fill(123,213,0);
  ellipse(ballX,ballY,50,50);
  if(flying &&!gameover)
  {
    ballX+=ballVX; 
    ballY+=ballVY; 
    if(ballY>560 && abs(mouseX-ballX)<75)
    {
      ballVY=-abs(ballVY);
      ballY=500;
    }
    if(ballY>580) gameover=true;
    if(ballY<0)
    {
      ballVY=-ballVY;
      ballY=0;
    }
    if(ballX>780) 
    {
      ballX=780-(ballX-780);
      ballVX=-abs(ballVX);
    }
    if(ballX<0) 
    {
      ballX=abs(ballX);
      ballVX=abs(ballVX);
    }
  }
  else ballX=mouseX;
}
void mousePressed()
{
  flying=true; ballVY=-20; ballVX=3;
}

Week 07 宋侑恩

Week 07 Part1 - 血量

程式碼:

int life=10;
boolean gameOver=false;
void setup(){
  size(500,500);
}
void draw(){
  background(0);
  fill(255);rect(50,50,100,20);
  fill(255,0,0);rect(50,50,life*10,20);
  if(gameOver){
    textSize(40);
    text("GameOver",150,150);
  }
}
void mousePressed(){
  life--;
  if(life<=0) gameOver=true;
}


Week 07 Part2-1 - 切換場景+時間倒數

程式碼:

PImage imgBG;
int remainTime=0;
int state=0;//0:OP opening, 1:playing, 2:ED end
void setup(){
  size(600,600);
  imgBG=loadImage("background.png");
}
void draw(){
  if(state==0){
    drawOP();
    if(key=='1'){
      state=1; remainTime=5*60;
    }
  }else if (state==1){
    drawPlaying();
  }else if(state==2){
    drawED();
  }
}
void drawOP(){
  image(imgBG,0,0,width,height);
  fill(255,255,0);
  textSize(30); text("Press 1 To Play",180,300);
}
void drawPlaying(){
  image(imgBG,0,0,width,height);
  fill(255,255,0);
  textSize(30); text("Press 2 To End",190,200);
  text("remainTime: "+remainTime,180,300);
  remainTime--;
  if(remainTime<=0) state=2;
}
void drawED(){
  image(imgBG,0,0,width,height);
  fill(255,255,0);
  textSize(30); text("GameOver",225,300);
}




Week 07 Part2-2 - 以秒數時間倒數

程式碼:

PImage imgBG;
int remainTime=0;
int state=0;//0:OP opening, 1:playing, 2:ED end
void setup(){
  size(600,600);
  imgBG=loadImage("background.png");
}
void draw(){
  if(state==0){
    drawOP();
    if(key=='1'){
      state=1; remainTime=5*60;
    }
  }else if (state==1){
    if(key=='2') state=2;
    drawPlaying();
  }else if(state==2){
    drawED();
  }
}
void drawOP(){
  image(imgBG,0,0,width,height);
  fill(255,255,0);
  textSize(30); text("Press 1 To Play",180,300);
}
void drawPlaying(){
  image(imgBG,0,0,width,height);
  fill(255,255,0);
  textSize(30); text("Press 2 To End",190,200);
  text("remainTime: "+(remainTime+59)/60,180,300);
  remainTime--;
  if(remainTime<=0) state=2;
}
void drawED(){
  image(imgBG,0,0,width,height);
  fill(255,255,0);
  textSize(30); text("GameOver",220,300);
}



week07 互動技術筆記@

1.製作血條

利用布林變數控制遊戲是否結束

int life=10;
boolean gg=false;
void setup(){
  size(500,500);
}

void draw(){
  background(0,0,205);
  fill(255); rect(50,50,100,20);
  fill(255,0,0); rect(50,50,life*10,20);
  if(gg){
    textSize(40);
    text("Game Over",150,150);
  }
}

void mousePressed(){
  life--;
  if(life<=0) gg=true;
}

2.開場畫面切換






int state=0;
int remaintime=0;
void setup(){
  size(800,600);
}
void draw(){
  if (state==0){
    op();
    if(key=='1')  {state=1; remaintime=5*60;}
  }
  else if(state==1){
    play();
  }
  else if(state==2){
    ed();
  }
}
void op(){
  background(0);
  fill(#F5DE07);
  textSize(30); text("Press 1 to play",10,100);
}
void play(){
  background(#F0D90C);
  fill(#161FF2);  text("Press 2 to end",10,100);
  text("remain: "+remaintime,10,150);
  remaintime--;
  if(remaintime<=0) state=2;
}
void ed(){
  background(0);
  fill(#F0D90C);  text("Game Over",10,100);
}

將(remaintime+59)/60 可以換成一般秒數
沒+59的話會和實際秒數延遲一秒

Week07_阿天筆記

小朋友下樓梯
一:
做出一個平面


 換成紅色

滑鼠點就會扣命 LIFE設10

扣完就會出現GAME OVER

二:
期中 上下左右移動

float bombmanX=100,bombmanY=100, bombmanVX=0, bombmanVY=0;
void setup(){
  size(600,400);
}
void draw(){
  background(255);
  fill(255); ellipse(bombmanX,bombmanY, 50,50);
  bombmanX+=bombmanVX;
  bombmanY+=bombmanVY;
}
void keyPressed(){
  if(keyCode==LEFT)  bombmanVX= -2;
  if(keyCode==RIGHT) bombmanVX= +2;
  if(keyCode==UP) bombmanVY= -2;
  if(keyCode==DOWN) bombmanVY= +2;
}
void keyReleased(){
  if(keyCode==LEFT)  bombmanVX= 0;
  if(keyCode==RIGHT)  bombmanVX= 0;
  if(keyCode==UP)  bombmanVY= 0;
  if(keyCode==DOWN)  bombmanVY= 0;
}

week07

製作血條

int life=10;///一格血量為10
boolean gameOver=false;
void setup(){
  size(500,500);
}
void draw(){
  background(0,0,200);
  fill(255);rect(50,50,100,20);///底色為白色
  fill(255,0,0);rect(50,50,life*10,20);///上層為紅色
  if(gameOver){
    textSize(40);
    text("Game Over",150,150);
  }
}
void mousePressed(){
  life--;
  if(life<=0)gameOver=true;
}
























畫面切換

int state=0;
int remainTime=0;
void setup(){
  size(800,600);
}
void draw(){
  if(state==0){
    drawOP();
    if(key=='1'){state=1;remainTime=5*60;}///1/60秒,所以要乘60
  }
  else if(state==1){ 
    drawPlayer();
  }
  else if(state==2){
    drawED();
  }
}
void drawED(){
  background(0);
  fill(#F0D90C);text("Game Over",100,100);
}
void drawPlayer(){
  background(#F0D90C);
  fill(#120FF2);text("Playing... You can press 2 to End",10,100);
  text("remain:"+remainTime,10,200);
  remainTime--;
  if(remainTime<=0)state=2;
}
void drawOP(){
  background(0);
  fill(#F5DE07);
  textSize(30);text("Opening... You can press 1 to play",10,100);
}












 text("remain:"+(remainTime+59)/60,10,200);
///+59在除60能自動進位成1