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

2018年1月22日 星期一

week 08



我們將遊戲介面設計出來,並加入音樂

以下是我們的弓箭剩餘數的提示

加入音樂程式碼參考:
import processing.sound.*;
SoundFile sound;
void setup(){
  sound=new SoundFile(this,"Golly_Gee.mp3");
  sound.play();
  sound.loop();
}

2018年1月20日 星期六

Week08 芷萱的課堂筆記

期中作品持續製作中-太鼓達人

為了讓遊戲更擬真,不想讓紅鼓與藍鼓只是隨機產生
我們這組請教老師後,老師教我們一個讀鼓點的一個方法


  1. 首先在一個白色背景中畫入560個圓圈(陣列需要)
  2. 開啟Youtube中太鼓遊戲影片
  3. 按照該首歌產生的紅鼓節奏即按下enter鍵
  4. 若該首歌結束即按下s鍵,可將鼓譜存檔
程式碼:

byte[] drum=new byte[560];
void setup()
{
  size(800, 800);
}
void draw() {

  background(255);
  stroke(0);
  for (int i=0; i<560; i++)
  {  
    if (drum[i]==0) noFill();
    else fill(255, 0, 0);
    ellipse(25+(i%20)*20, 25+int(i/20*20), 20, 20);
  }
}
void keyPressed()
{
  if (key=='s'||key=='S')
  {
    saveBytes("drum.bin", drum);
  }
  int i=int(frameCount/20);
  drum[i]=-1;
}

產生560個空心圓圈

























模擬讀入鼓點的示意圖

























2017年11月18日 星期六

Week08*互動技術課堂筆記*

【期中作品_介面設計及抓取物件篇】




1.抓取判斷消失<用Boolean>






















主要程式碼:
boolean []poss=new boolean[15];
void draw(){ 
 if(dist(pos[i],posyy[i],xPos+50,yPos+70)<20){
          if(posyy[i]!=180)
          {
            posyy[i]-=2;
          }    

          m=3;
          if(posyy[i]<190)
          {
            poss[i]=false;
            score++;
           }
        }       
}







2017年11月10日 星期五

week08 03160801

期中作品

跑跑薑餅人

程式碼:
int [][]map={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};  //利用矩陣做出畫面
int []coinEat={0,0,0,0,0,0,0,0,0,0,0,}; //金幣矩陣
int bgShift=0;

PImage imgBrick ,imgMan;
void setup(){
  size(600,400);
  imgBrick=loadImage("floor.png");
  imgMan=loadImage("man.png");
}
boolean manJumping=false;
int manX=100,manY=200;
float manVX=0,manVY=0;
void draw(){
  background(#91EEF7);
  for(int i=0;i<8;i++){
    for(int j=0;j<15;j++){
      if(map[i][j]==1) image(imgBrick, j*40,i*40,40,40);
   
    }
  }
  for(int i=0;i<10;i++){
    if(coinEat[i]==0){
      fill(255,255,0);ellipse(i*50+300-bgShift,100,50,50);
    }
    if(dist(manX,manY,i*50+300-bgShift,100)<50)coinEat[i]=1;
  }
  ellipse(manX,manY,0,0);
  bgShift++; //讓金幣自己移動

  image(imgMan, manX, manY,40,40);
  manX+=manVX;manY+=manVY;
  if(manJumping) manVY+=0.98;
  testManOnFloor();
}
void testManOnFloor(){
  int i=int(manY/40),j=int(manX/40);
  if(i>=8 || j>=15)return;
  if( map[i+1][j]!=0){manJumping=false;manY=i*40; manVY=0;}
}
void keyPressed(){
  if(keyCode==UP) {manVY=-10;manJumping=true;}
   if(keyCode==DOWN){ }
}














薑餅人跳起來會吃金幣














2017年11月6日 星期一

Week08 ShiRo

期中作品試做(二)

➤製作關卡圖樣 

 利用world 來圖制20x20的關卡圖樣

把圖案數值化記錄在陣列中#把陣列順時針轉90存在關卡陣列中
ex:教堂


























Week 08 邱

#第08週
-------------------------------------------------------------------------------------------------------------------------

◎計算分數&邊界反彈&皮卡丘不超過欄杆

程式碼:
PImage imgBall,imgP1,imgP2;
void setup(){
   size(800,600); 
   textSize(50);
   imgBall=loadImage("Ball.png");
   imgP1=loadImage("P1.png");
   imgP2=loadImage("P2.png");
   imageMode(CENTER);
}
float ballX=120,ballY=150,ballVX=0,ballVY=0;
float p1X=100,p1Y=430,p1VX=0,p1VY=0;
float p2X=700,p2Y=430,p2VX=0,p2VY=0;
Boolean bGG=false;
int p1S=0,p2S=0; ///Score
void draw(){
   background(#BFEAFF); ///sky
   noStroke();fill(#D1C0A6);rect(0,500,800,100); ///floor
   fill(#A6ACAF);rect(400,320,10,240); ///cylider
   image(imgP1,p1X,p1Y,200,200);
   image(imgP2,p2X,p2Y,200,200);
   image(imgBall,ballX,ballY,80,80);

   fill(#484646);
   text(p1S,100,70);
   text(p2S,700,70);
   if(ballX<=360 && ballY>=500-40){
       bGG=true; ///if ball touch the floor : GameOver
       if(bGG)
       {
         p2S++;
         ballX=680;ballY=150;
         p1X=100;p1Y=450;
         p2X=700;p2Y=450;
         ballVX=0;ballVY=0;
         p1VX=0;p1VY=0;
         p2VX=0;p2VY=0;
         bGG=false;
       }
   }
   if(ballX>=450 && ballY>=500-40){
      bGG=true; ///if ball touch the floor : GameOver
      if(bGG)
       {
         p1S++;
         ballX=120;ballY=150;
         p1X=100;p1Y=450;
         p2X=700;p2Y=450;
         ballVX=0;ballVY=0;
         p1VX=0;p1VY=0;
         p2VX=0;p2VY=0;
         bGG=false;
       }
   }
   
   if(bGG)return;
   ballX += ballVX; ballY += ballVY;
   ballVY += 0.98;
   
   p1X+=p1VX;
   if(p1X<80) p1X=80; 
   if(p1X>300) p1X=300;
   p1Y += p1VY; p1VY+=0.98;
   
   p2X+=p2VX;
   if(p2X<500) p2X=500;
   if(p2X>720) p2X=720;
   p2Y += p2VY; p2VY+=0.98;

   if(ballX<50){ballX=50;ballVX=-ballVX;} 
   if(ballX>800-50){ballX=800-50;ballVX=-ballVX;}
   if(ballY<50){ballY=50;ballVY=-ballVY;}
   if(ballY>800-50){ballY=800-50;ballVY=-ballVY;}
  
   if(p1Y>=500-50) {p1VY=0; p1Y=500-50;}
   if(p2Y>=500-50) {p2VY=0; p2Y=500-50;}
   if(dist(p1X,p1Y,ballX,ballY)<=80)ballVY=-ballVY;
   if(dist(p2X,p2Y,ballX,ballY)<=80)ballVY=-ballVY;
   if(dist(p1X,p1Y,ballX,ballY)<=80) ballVX=(80-ballVY)/5.0;
   if(dist(p2X,p2Y,ballX,ballY)<=80) ballVX=-(80-ballVY)/5.0;
}
void keyPressed(){
  if(key=='a') p1VX=-3;
  if(key=='s') p1VY=0;
  if(key=='d') p1VX=3;
  if(key=='w') p1VY=-20;

  if(keyCode==LEFT) p2VX=-3;
  if(keyCode==DOWN) p2VY=0;
  if(keyCode==RIGHT) p2VX=3;
  if(keyCode==UP) p2VY=-20;
}
void keyReleased(){
  if(key=='a') p1VX=0;
  if(key=='s') p1VY=0;
  if(key=='d') p1VX=0;
  if(key=='w') p1VY=0;
  
  if(keyCode==LEFT) p2VX=0;
  if(keyCode==DOWN) p2VY=0;
  if(keyCode==RIGHT) p2VX=0;
  if(keyCode==UP) p2VY=0;
}


Week 8 - 文郁上課誌

                  2017互動技術

2017 / 11 / 6

桌上曲棍球

















void setup(){
  size(700,800);
}
float ballX=250, ballY=450, ballVX=0,ballVY=0;
float ball2X=350, ball2Y=50;
float ball3X=350, ball3Y=748;
void draw(){
  if( dist(ballX,ballY,ball2X,ball2Y)<100){
    float cx=(ballX+ball2X)/2, cy=(ballY+ball2Y)/2;
    float nx=ballX-ball2X, ny=ballY-ball2Y;
    PVector N=new PVector(nx,ny);
    N.normalize();
    PVector v0=new PVector(ballVX,ballVY);
    float len= -N.dot(v0);
    v0.add(N.mult(len*2));
    ellipse(cx,cy,10,10);
    stroke(0); line(ballX, ballY, ball2X, ball2Y);
    stroke(255,128,0); line(cx,cy, cx+5*ballVX, cy+5*ballVY);
    stroke(255,128,0); line(cx,cy, cx+5*v0.x, cy+5*v0.y);
    stroke(255,0,0); line(cx,cy, cx+N.x, cy+N.y);
   
     ballVX=v0.x;  ballVY=v0.y;
   
    if(ball3X<50) {ball3X=50; ballVX =-ballVX;}
    if(ball3X>width-50) {ball3X=width-50; ballVX=-ballVX;}
    if(ball3Y<50) {ball3Y=50; ballVY =-ballVY;}
    if(ball3Y>width-50) {ball3Y=width-50; ballVY=-ballVY;}
  }
  background(255);
  ballX+=ballVX; ballY+=ballVY;
  fill(#AEE8F2); ellipse(ballX, ballY, 100,100);
  fill(#74B73F); ellipse(ball2X,ball2Y, 100,100);
  fill(#74B73F); ellipse(ball3X,ball3Y, 100,100);
}

void mouseDragged(){
  ball3X=mouseX; ball3Y=mouseY;
  ballVX=ballVY=0;
}
void mouseReleased(){
  ballVX = (350-mouseX)/ 10.0;
  ballVY = (400-mouseY)/ 10.0;
}

第八週

WEEK8  課堂der筆記筆記


作業
1.
程式碼:
void setup(){
  size(850,500);
}
int gameover=0;
int userJ=9,userI=5;
float userX,userY;
int waterN=0;
int []waterJ=new int[100];
int []waterI=new int[100];
int []waterS=new int[100];
int []waterT=new int[100];


int user2J=3,user2I=5;
float user2X,user2Y;

void draw(){
  background(#80BF47);
  noStroke();
  for(int i=0;i<10;i++){
    for(int j=0;j<17;j++){
      if((j-i)%2 ==0) fill(#AFE380);
      else fill(#80BF47);
      rect(j*50,i*50,50,50);
    }
  }
  for(int i=0 ; i<10 ; i+=3){
    for(int j=0 ; j<17 ; j+=4)
    {
      fill(#AA8215);
      rect(j*50,i*50,50,50);
    }
  }

  fill(255,0,0);  ellipse(userJ*50+25,userI*50+25,50,50);  // User
  fill(0,0,255);  ellipse(user2J*50+25,user2I*50+25,50,50);  // User2
  for(int i=0; i<waterN; i++){
    if(waterT[i]>0){
    fill(#9EE7F5);  ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);
    waterT[i]--;
    if(waterT[i]==0)  waterT[i]=-60;
    }
    
    if(gameover==1)   background(255,0,0);
    if(gameover==2)   background(0,0,255);
    
    if(waterT[i]<0){
      for(int k=-waterS[i]+3;k<=waterS[i]-3;k++){
        fill(255);  rect((waterJ[i]+k)*50,(waterI[i])*50,50,50);
        fill(255);  rect((waterJ[i])*50,(waterI[i]+k)*50,50,50);
        if(dist(waterJ[i]+k,waterI[i], userJ,userI)==0)  gameover=1;
        if(dist(waterJ[i],waterI[i]+k, userJ,userI)==0)  gameover=1;
        if(dist(waterJ[i]+k,waterI[i], user2J,user2I)==0)  gameover=2;
        if(dist(waterJ[i],waterI[i]+k, user2J,user2I)==0)  gameover=2;
      }
      waterT[i]++;
    }
  }
  
}

void keyPressed(){
  if(keyCode==LEFT) userJ--;
  if(keyCode==RIGHT) userJ++;
  if(keyCode==UP) userI--;
  if(keyCode==DOWN) userI++;
  if(key=='0'){
    waterI[waterN]=userI;  waterJ[waterN]=userJ;
    waterS[waterN]=5;  waterT[waterN]=120;
    waterN++;
  }
  
  if(keyCode=='A') user2J--;
  if(keyCode=='D') user2J++;
  if(keyCode=='W') user2I--;
  if(keyCode=='S') user2I++;
  if(key==' '){
    waterI[waterN]=user2I;  waterJ[waterN]=user2J;
    waterS[waterN]=5;  waterT[waterN]=120;
    waterN++;
  }
}




154654351321321352416546546541354324


void setup(){
  size(850,500);
}
int gameover=0;
int userJ=9,userI=5;
float userX,userY;
int waterN=0;
int []waterJ=new int[100];
int []waterI=new int[100];
int []waterS=new int[100];
int []waterT=new int[100];
int map[][]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
             {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
             {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};

int user2J=3,user2I=5;
float user2X,user2Y;

void draw(){
  background(#80BF47);
  noStroke();
  for(int i=0;i<10;i++){
    for(int j=0;j<17;j++){
      if((j-i)%2 ==0) fill(#AFE380);
      else fill(#80BF47);
      rect(j*50,i*50,50,50);
      if(map[i][j]==1) fill(#7E610F);
      rect(j*50,i*50,50,50);
    }
  }

  fill(255,0,0);  ellipse(userJ*50+25,userI*50+25,50,50);  // User
  fill(0,0,255);  ellipse(user2J*50+25,user2I*50+25,50,50);  // User2
  for(int i=0; i<waterN; i++){
    if(waterT[i]>0){
    fill(#9EE7F5);  ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);
    waterT[i]--;
    if(waterT[i]==0)  waterT[i]=-60;
    }
    
    if(gameover==1)   background(255,0,0);
    if(gameover==2)   background(0,0,255);
    
    if(waterT[i]<0){
      for(int k=-waterS[i]+3;k<=waterS[i]-3;k++){
        fill(255);  rect((waterJ[i]+k)*50,(waterI[i])*50,50,50);
        fill(255);  rect((waterJ[i])*50,(waterI[i]+k)*50,50,50);
        if(dist(waterJ[i]+k,waterI[i], userJ,userI)==0)  gameover=1;
        if(dist(waterJ[i],waterI[i]+k, userJ,userI)==0)  gameover=1;
        if(dist(waterJ[i]+k,waterI[i], user2J,user2I)==0)  gameover=2;
        if(dist(waterJ[i],waterI[i]+k, user2J,user2I)==0)  gameover=2;
      }
      waterT[i]++;
    }
  }
  
}

void keyPressed(){
  if(keyCode==LEFT && map[userI][userJ-1]==0) userJ--;
  if(keyCode==RIGHT && map[userI][userJ+1]==0) userJ++;
  if(keyCode==UP && map[userI-1][userJ]==0) userI--;
  if(keyCode==DOWN && map[userI+1][userJ]==0) userI++;
  if(key=='0'){
    waterI[waterN]=userI;  waterJ[waterN]=userJ;
    waterS[waterN]=5;  waterT[waterN]=120;
    waterN++;
  }
  
  if(keyCode=='A') user2J--;
  if(keyCode=='D') user2J++;
  if(keyCode=='W') user2I--;
  if(keyCode=='S') user2I++;
  if(key==' '){
    waterI[waterN]=user2I;  waterJ[waterN]=user2J;
    waterS[waterN]=5;  waterT[waterN]=120;
    waterN++;
  }
}




-----------------------------------------------------------------------------------------------
import ddf.minim.*;
Minim minim;
AudioPlayer player;
void setup(){
  size(850,500);
  wall=loadImage("1.png");
  wall2=loadImage("2.png");
  wall3=loadImage("3.png");
  play1=loadImage("play1.png");
  play2=loadImage("play2.png");
  water=loadImage("water1.png");
  minim=new Minim(this);
  player = minim.loadFile("music1.mp3",2048);
  player.play();
  
  /*sound=new SoundFile(this,"music1.mp3");
  sound.play();
  sound.loop();*/
}

PImage wall,wall2,wall3;
PImage play1;
PImage play2;
PImage water;
int gameover=0;
int userJ=9,userI=5;
float userX,userY;
int waterN=0;
int []waterJ=new int[100];
int []waterI=new int[100];
int []waterS=new int[100];
int []waterT=new int[100];
int map[][]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,2,0,2,0,0,0,0,0,0,0,0,3,0,3,0,3},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,2,0,2,0,0,0,0,0,0,0,0,3,0,3,0,3},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,1,0,1,0,0,0,0,0,0,0,2,0,2,0,2},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,1,0,1,0,0,0,0,0,0,0,2,0,2,0,2},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,0,1,0,1,0,0,0,0,0,0,0,2,0,2,0,2}};

int user2J=3,user2I=5;
float user2X,user2Y;

void draw(){
  background(#80BF47);
  noStroke();
  for(int i=0;i<10;i++){
    for(int j=0;j<17;j++){
      if((j-i)%2 ==0) fill(#AFE380);
      else fill(#80BF47);
      rect(j*50,i*50,50,50);
      if(map[i][j]==1) 
      image(wall,j*50,i*50,50,50);
      if(map[i][j]==2) 
      image(wall2,j*50,i*50,50,50);
      if(map[i][j]==3) 
      image(wall3,j*50,i*50,50,50);
      /*fill(#7E610F);
      rect(j*50,i*50,50,50);*/
    }
  }
  
  image(play1,userJ*50-10,userI*50-10,70,70);
  image(play2,user2J*50-25,user2I*50-25,90,90);

 /* fill(255,0,0);  ellipse(userJ*50+25,userI*50+25,50,50);  // User
  fill(0,0,255);  ellipse(user2J*50+25,user2I*50+25,50,50);  // User2*/
  for(int i=0; i<waterN; i++){
    if(waterT[i]>0){
      
      image(water,waterJ[i]*50-25,waterI[i]*50-25,100,100);
      /*fill(#9EE7F5);  ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);*/
      waterT[i]--;
      if(waterT[i]==0)  waterT[i]=-60;
    }
    
    if(gameover==1)   background(255,0,0);
    if(gameover==2)   background(0,0,255);
    
    if(waterT[i]<0){
      for(int k=-waterS[i]+3;k<=waterS[i]-3;k++){
        fill(255);  rect((waterJ[i]+k)*50,(waterI[i])*50,50,50);
        fill(255);  rect((waterJ[i])*50,(waterI[i]+k)*50,50,50);
        if(dist(waterJ[i]+k,waterI[i], userJ,userI)==0)  gameover=1;
        if(dist(waterJ[i],waterI[i]+k, userJ,userI)==0)  gameover=1;
        if(dist(waterJ[i]+k,waterI[i], user2J,user2I)==0)  gameover=2;
        if(dist(waterJ[i],waterI[i]+k, user2J,user2I)==0)  gameover=2;
      }
      waterT[i]++;
    }
  }
  
}

void keyPressed(){
  if(keyCode==LEFT && map[userI][userJ-1]==0) userJ--;
  if(keyCode==RIGHT && map[userI][userJ+1]==0) userJ++;
  if(keyCode==UP && map[userI-1][userJ]==0) userI--;
  if(keyCode==DOWN && map[userI+1][userJ]==0) userI++;
  if(key=='0'){
    waterI[waterN]=userI;  waterJ[waterN]=userJ;
    waterS[waterN]=5;  waterT[waterN]=120;
    waterN++;
  }
  
  if(keyCode=='A'&& map[user2I][user2J-1]==0) user2J--;
  if(keyCode=='D'&& map[user2I][user2J+1]==0) user2J++;
  if(keyCode=='W'&& map[user2I-1][user2J]==0) user2I--;
  if(keyCode=='S'&& map[user2I+1][user2J]==0) user2I++;
  if(key==' '){
    waterI[waterN]=user2I;  waterJ[waterN]=user2J;
    waterS[waterN]=5;  waterT[waterN]=120;
    waterN++;
  }

}


-----------------------------------------------------------------------------------------------

import ddf.minim.*;
Minim minim;
AudioPlayer player;
void setup(){
  size(850,500);
  wall=loadImage("1.png");
  wall2=loadImage("2.png");
  wall3=loadImage("3.png");
  play1=loadImage("play1.png");
  play2=loadImage("play2.png");
  water=loadImage("water1.png");
  minim=new Minim(this);
  player = minim.loadFile("music1.mp3",2048);
  player.play();

  /*sound=new SoundFile(this,"music1.mp3");
  sound.play();
  sound.loop();*/
}
PImage wall,wall2,wall3;
PImage play1;
PImage play2;
PImage water;
int stage=0;
//int gameover=0;
int userJ=9,userI=5;
float userX,userY;
int waterN=0;
int []waterJ=new int[100];
int []waterI=new int[100];
int []waterS=new int[100];
int []waterT=new int[100];
int map[][]={{2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2},
             {1,2,0,2,0,0,0,3,2,0,0,0,3,0,2,0,1},
             {2,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,2},
             {1,2,0,2,0,0,0,3,3,0,0,0,3,0,3,0,1},
             {2,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,2},
             {1,0,1,0,1,0,0,3,3,0,0,0,2,0,2,0,1},
             {2,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,2},
             {1,0,2,0,1,0,0,3,2,0,0,0,2,0,2,0,1},
             {2,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,2},
             {1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1}};

int user2J=3,user2I=5;
float user2X,user2Y;

void draw(){
  background(#80BF47);
  noStroke();
  for(int i=0;i<10;i++){
    for(int j=0;j<17;j++){
      if((j-i)%2 ==0) fill(#AFE380);
      else fill(#80BF47);
      rect(j*50,i*50,50,50);
      if(map[i][j]==1)
      image(wall,j*50,i*50,50,50);
      if(map[i][j]==2)
      image(wall2,j*50,i*50,50,50);
      if(map[i][j]==3)
      image(wall3,j*50,i*50,50,50);
      /*fill(#7E610F);
      rect(j*50,i*50,50,50);*/
    }
  }

  image(play1,userJ*50-10,userI*50-10,70,70);
  image(play2,user2J*50-25,user2I*50-25,90,90);

 /* fill(255,0,0);  ellipse(userJ*50+25,userI*50+25,50,50);  // User
  fill(0,0,255);  ellipse(user2J*50+25,user2I*50+25,50,50);  // User2*/
  for(int i=0; i<waterN; i++){
    if(waterT[i]>0){
     
      image(water,waterJ[i]*50-25,waterI[i]*50-25,100,100);
      /*fill(#9EE7F5);  ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);*/
      waterT[i]--;
      if(waterT[i]==0)  waterT[i]=-60;
    }
   
    //if(gameover==1)   background(255,0,0);
    //if(gameover==2)   background(0,0,255);
    if(stage==1){
      background(0,0,0);
      fill(#FF2121);  textSize(80);
      text("Red Game Over",130,200);
    }
    if(stage==2){
      background(0,0,0);
      fill(#212AFF);  textSize(80);
      text("Blue Game Over",130,200);
    }
    if(waterT[i]<0){
       for(int k=0;k<2;k++){  
         
          if(waterI[i]>=0 && waterI[i]<=9 && waterJ[i]+k>=0 && waterJ[i]+k<=16 && (map[waterI[i]][waterJ[i]+k]==2 || map[waterI[i]][waterJ[i]+k]==1)) break;
          fill(255);  rect((waterJ[i]+k)*50,(waterI[i])*50,50,50);
          if(dist(waterJ[i]+k,waterI[i], userJ,userI)==0)  stage=1;
          if(dist(waterJ[i],waterI[i]+k, userJ,userI)==0)  stage=1;
          if(dist(waterJ[i]-k,waterI[i], user2J,user2I)==0)  stage=2;
          if(dist(waterJ[i],waterI[i]-k, user2J,user2I)==0)  stage=2;
          if(waterI[i]>=0 && waterI[i]<=9 && waterJ[i]+k>=0 && waterJ[i]+k<=16 && map[waterI[i]][waterJ[i]+k]==3)
            map[waterI[i]][waterJ[i]+k]=0;
       }
       for(int k=0;k<2;k++){  
        
         if(waterI[i]+k>=0 && waterI[i]+k<=9 && waterJ[i]>=0 && waterJ[i]<=16 &&  (map[waterI[i]+k][waterJ[i]]==2 || map[waterI[i]+k][waterJ[i]]==1)) break;
         fill(255);  rect((waterJ[i])*50,(waterI[i]+k)*50,50,50);
          if(dist(waterJ[i]+k,waterI[i], userJ,userI)==0)  stage=1;
          if(dist(waterJ[i],waterI[i]+k, userJ,userI)==0)  stage=1;
          if(dist(waterJ[i]-k,waterI[i], user2J,user2I)==0)  stage=2;
          if(dist(waterJ[i],waterI[i]-k, user2J,user2I)==0)  stage=2;
          if(waterI[i]+k>=0 && waterI[i]+k<=9 && waterJ[i]>=0 && waterJ[i]<=16 &&  map[waterI[i]+k][waterJ[i]]==3)
            map[waterI[i]+k][waterJ[i]]=0;
         
       }
       for(int k=0;k<2;k++){  
         
          if(waterI[i]>=0 && waterI[i]<=9 && waterJ[i]-k>=0 && waterJ[i]-k<=16 && (map[waterI[i]][waterJ[i]-k]==2 || map[waterI[i]][waterJ[i]-k]==1)) break;
          fill(255);  rect((waterJ[i]-k)*50,(waterI[i])*50,50,50);
          if(dist(waterJ[i]+k,waterI[i], userJ,userI)==0)  stage=1;
          if(dist(waterJ[i],waterI[i]+k, userJ,userI)==0)  stage=1;
          if(dist(waterJ[i]+k,waterI[i], user2J,user2I)==0)  stage=2;
          if(dist(waterJ[i],waterI[i]+k, user2J,user2I)==0)  stage=2;
          if(waterI[i]>=0 && waterI[i]<=9 && waterJ[i]-k>=0 && waterJ[i]-k<=16 && map[waterI[i]][waterJ[i]-k]==3)
          map[waterI[i]][waterJ[i]-k]=0;
       }
       for(int k=0;k<2;k++){  
         
          if(waterI[i]-k>=0 && waterI[i]-k<=9 && waterJ[i]>=0 && waterJ[i]<=16 && (map[waterI[i]-k][waterJ[i]]==2 || map[waterI[i]-k][waterJ[i]]==1)) break;
          fill(255);  rect((waterJ[i])*50,(waterI[i]-k)*50,50,50);
          if(dist(waterJ[i]+k,waterI[i], userJ,userI)==0)  stage=1;
          if(dist(waterJ[i],waterI[i]+k, userJ,userI)==0)  stage=1;
          if(dist(waterJ[i]+k,waterI[i], user2J,user2I)==0)  stage=2;
          if(dist(waterJ[i],waterI[i]+k, user2J,user2I)==0)  stage=2;      
          if(waterI[i]-k>=0 && waterI[i]-k<=9 && waterJ[i]>=0 && waterJ[i]<=16 && map[waterI[i]-k][waterJ[i]]==3)
            map[waterI[i]-k][waterJ[i]]=0;
       }
         waterT[i]++; 

    }
  }
}

void keyPressed(){
  if(keyCode==LEFT && map[userI][userJ-1]==0) userJ--;
  if(keyCode==RIGHT && map[userI][userJ+1]==0) userJ++;
  if(keyCode==UP && map[userI-1][userJ]==0) userI--;
  if(keyCode==DOWN && map[userI+1][userJ]==0) userI++;
  if(key=='0'){
    waterI[waterN]=userI;  waterJ[waterN]=userJ;
    waterS[waterN]=5;  waterT[waterN]=120;
    waterN++;
  }

  if(keyCode=='A'&& map[user2I][user2J-1]==0) user2J--;
  if(keyCode=='D'&& map[user2I][user2J+1]==0) user2J++;
  if(keyCode=='W'&& map[user2I-1][user2J]==0) user2I--;
  if(keyCode=='S'&& map[user2I+1][user2J]==0) user2I++;
  if(key==' '){
    waterI[waterN]=user2I;  waterJ[waterN]=user2J;
    waterS[waterN]=5;  waterT[waterN]=120;
    waterN++;
  }
}
void mousePressed(){
  if(stage==1 || stage==2)  stage=0;

}