Your browser does not support the canvas tag.

previous        Show / Hide Source        Download        next
float x = 1;//knight x-axis
float x1= 1;//samurai x-axis
float y ;// Condition of injury area
float y1;// Condition of injury area
float cloudx1 =300;
float cloudx2 =20;
float cloudx3 =180;
float wf1 = 200;//waterfall animation
float wf11 = 240;
float wf12 = 265;
float wf2 = 195;
float wf21 = 220;
float wf22 = 250;
float wf3 = 205;
float wf31 = 230;
float wf32 = 260;
float wf33 = 275;
float wf4 =200;
float wf41=215;
float wf42=235;
float wf43=245;
float wf44=265;
float space=10;
float shealth=-150;//samurai health
float khealth=150;//knight health

boolean kdamage = false;//damages cast by knight
boolean sdamage =false;//damages cast by knight
boolean kright = false; //knight movement
boolean kleft = false;
boolean sright= false; //samurai movement
boolean sleft=false;
boolean kup =false; //knight weapon
boolean kdown =false;
boolean kattack = false;//attack
boolean sup =false;//samurai weapon
boolean sdown = false;
boolean sattack = false;//samurai attack
int kweapon =0;
int sweapon =0;
int movement = 0;
int movement1 =0;
//////////////////////////////////
//////////player2/////////////////
//////////////////////////////////
void player2() {

  //head
  noStroke();
  fill(0, 0, 0);
  rect(290+x1, 140+sin(0.03*(frameCount))*3, 25, 5);
  fill(33, 150, 253);
  rect(290+x1, 145+sin(0.03*(frameCount))*3, 25, 5);
  fill(255, 224, 178);
  rect(290+x1, 150+sin(0.03*(frameCount))*3, 25, 20);
  fill(255, 183, 77);
  rect(290+x1, 150+sin(0.03*(frameCount))*3, 5, 5);
  rect(300+x1, 150+sin(0.03*(frameCount))*3, 5, 5);
  fill(255, 204, 128);
  rect(295+x1, 150+sin(0.03*(frameCount))*3, 5, 10);
  rect(305+x1, 150+sin(0.03*(frameCount))*3, 10, 20);

  //body
  fill(33, 150, 243);
  rect(295+x1, 170+sin(0.03*(frameCount))*3, 30, 115);//layer1
  rect(290+x1, 175+sin(0.03*(frameCount))*3, 30, 110);//layer2
  rect(325+x1, 225+5+sin(0.03*(frameCount))*3, 10,55);//layer3
  //body detail
  fill(1, 87, 155);
  rect(315+x1, 170+sin(0.03*(frameCount))*3, 5, 15);
  rect(310+x1, 185+sin(0.03*(frameCount))*3, 5, 15);
  rect(305+x1, 200+sin(0.03*(frameCount))*3, 5, 15);
  rect(300+x1, 215+sin(0.03*(frameCount))*3, 5, 5);
  fill(60, 60, 60);
  rect(290+x1, 220+sin(0.03*(frameCount))*3, 35, 5);
  rect(290+x1, 225+sin(0.03*(frameCount))*3, 40, 5);



}



/////////////////////////////////
///////////player1///////////////
/////////////////////////////////  


void player1() {
  //left arm
    
  fill(219, 219, 219);
  rect(x+25, 180+sin(0.03*(frameCount))*3, 5, 20);//left arm layer1
  fill(167, 167, 167);
  rect(x+25, 190+sin(0.03*(frameCount))*3, 5, 10);//left arm shade1
  fill(219, 219, 219);
  rect(x+20, 185+sin(0.03*(frameCount))*3, 5, 20);//left arm layer2
  fill(219, 219, 219);
  rect(x+15, 190+sin(0.03*(frameCount))*3, 5, 25);//left arm layer3
  fill(219, 219, 219);
  rect(x+10, 195+sin(0.03*(frameCount))*3, 5, 20);//left arm layer3  
  fill(219, 219, 219);
  rect(x+5, 200+sin(0.03*(frameCount))*3, 5, 10);//left arm layer5 
  fill(219, 219, 219);
  rect(x+20, 205+sin(0.03*(frameCount))*3, 10, 15);//left hand
  fill(167, 167, 167);
  rect(x+20, 195+sin(0.03*(frameCount))*3, 5, 15);//left arm shade2
  fill(167, 167, 167);
  rect(x+15, 200+sin(0.03*(frameCount))*3, 5, 5);//left arm shade3
  fill(167, 167, 167);
  rect(x+25, 205+sin(0.03*(frameCount))*3, 5, 10);//left arm shade4
 

 


  //body
  fill(176, 176, 176);
  rect(x+40, 140+sin(0.03*(frameCount))*3, 25, 25);//head
  fill(143, 143, 143);
  rect(x+55, 140+sin(0.03*(frameCount))*3, 5, 20);//head detail 1
  rect(x+45, 145+sin(0.03*(frameCount))*3, 20, 5);//head detail 2
  fill(193, 193, 193);
  rect(x+40, 165+sin(0.03*(frameCount))*3, 20, 5);//neck
  fill(255, 255, 255);
  rect(x+35, 170+sin(0.03*(frameCount))*3, 30, 80);//body layer1
  fill(255, 255, 255);
  rect(x+30, 175+sin(0.03*(frameCount))*3, 35, 55);//body layer2




  //cloth detail
  fill(255, 255, 255);
  rect(x+35, 230+sin(0.03*(frameCount))*3, 30, 50);//cloth
  fill(235, 235, 235);
  rect(x+35, 230+sin(0.03*(frameCount))*3, 5, 50);// cloth shade
  rect(x+30, 175+sin(0.03*(frameCount))*3, 5, 50);// body shade
  rect(x+35, 170+sin(0.03*(frameCount))*3, 5, 5);// body shade 2
  rect(x+35, 210+sin(0.03*(frameCount))*3, 5, 20);// body shade 3
  fill(129, 1, 1);
  rect(x+40, 195+sin(0.03*(frameCount))*3, 25, 5);//player 1 red cross  1
  rect(x+55, 175+sin(0.03*(frameCount))*3, 5, 50);//player 1 red cross 2
  fill(70, 37, 1);
  rect(x+30, 225+sin(0.03*(frameCount))*3, 35, 5);//belt
}

void movementControl(){
  ////knight movement animation//////

  if (movement <0) {//reset when it = 0
    movement = 30;
  }
  if (movement >30) {//reset
    movement = 0;
  }
  if (movement >=0 && movement <=6) {//movement*1
    //left legs
  fill(219, 219, 219);
  rect(x+25, 230+sin(0.03*(frameCount))*3, 20, 25);//left leg layer1
  fill(219, 219, 219);
  rect(x+20, 240+sin(0.03*(frameCount))*2, 20, 20);//left leg layer2//speed increased by 1.5 times 
  fill(219, 219, 219);
  rect(x+15, 250+sin(0.03*(frameCount))*1, 20, 20);//left leg layer3//speed increased by 1.5 times 
  fill(219, 219, 219);
  rect(x+10, 260, 20, 20);//left leg layer4//speed increased by 1.5 times 
  fill(219, 219, 219);
  rect(x+5, 270, 20, 20);//left leg layer5//
  fill(219, 219, 219);
  rect(x+0, 285, 20, 15);//foot
  fill(167, 167, 167);
  rect(x+30, 260+sin(0.03*(frameCount))*2, 5, 11.5);//left leg shade1
  rect(x+25, 270+sin(0.03*(frameCount))*1, 5, 11.5);//left leg shade2
  rect(x+20, 280, 5, 10);//left leg shade3
  rect(x+15, 285, 5, 15);//left leg shade4


  //right legs
  fill(219, 219, 219);
  rect(x+55, 235+sin(0.03*(frameCount))*3, 15, 20);//right leg layer1
  fill(219, 219, 219);
  rect(x+60, 240+sin(0.03*(frameCount))*2, 15, 20);//right leg layer2
  fill(219, 219, 219);
  rect(x+65, 245+sin(0.03*(frameCount))*1, 15, 20);//right leg layer3
  fill(219, 219, 219);
  rect(x+70, 255, 15, 40);//right leg layer4
  fill(219, 219, 219);
  rect(x+75, 295, 10, 5);//right leg layer5
  fill(167, 167, 167);
  rect(x+65, 260+sin(0.03*(frameCount))*2, 5, 6.5);//right leg shade1
  rect(x+70, 265+sin(0.03*(frameCount))*1, 5, 31.5);//right leg shade2
  
  } else if (movement >=7 && movement <=12) {//movement*2
      //left legs
  fill(219, 219, 219);
  rect(x+25+0.83333, 230+sin(0.03*(frameCount))*3, 20, 25);//left leg layer1
  fill(219, 219, 219);
  rect(x+20+1.25, 240+sin(0.03*(frameCount))*2, 20, 20);//left leg layer2
  fill(219, 219, 219);
  rect(x+15+1.875, 250+sin(0.03*(frameCount))*1, 20, 20);//left leg layer3
  fill(219, 219, 219);
  rect(x+10+2.8125, 260, 20, 20);//left leg layer4
  fill(219, 219, 219);
  rect(x+5+2.8125, 270, 20, 20);//left leg layer5
  fill(219, 219, 219);
  rect(x+0+2.8125, 285, 20, 15);//foot
  fill(167, 167, 167);
  rect(x+30+2.8125, 260+sin(0.03*(frameCount))*2, 5, 11.5);//left leg shade1
  rect(x+25+2.8125, 270+sin(0.03*(frameCount))*1, 5, 11.5);//left leg shade2
  rect(x+20+2.8125, 280, 5, 10);//left leg shade3
  rect(x+15+2.8125, 285, 5, 15);//left leg shade4


  //right legs
  fill(219, 219, 219);
  rect(x+55+0.75, 235+sin(0.03*(frameCount))*3, 15, 20);//right leg layer1
  fill(219, 219, 219);
  rect(x+60+0.75, 240+sin(0.03*(frameCount))*2, 15, 20);//right leg layer2
  fill(219, 219, 219);
  rect(x+65+0.75, 245+sin(0.03*(frameCount))*1, 15, 20);//right leg layer3
  fill(219, 219, 219);
  rect(x+70+0.75, 255, 15, 40);//right leg layer4
  fill(219, 219, 219);
  rect(x+75+0.75, 295, 10, 5);//right leg layer5
  fill(167, 167, 167);
  rect(x+65+0.75, 260+sin(0.03*(frameCount))*2, 5, 6.5);//right leg shade1
  rect(x+70+0.75, 265+sin(0.03*(frameCount))*1, 5, 31.5);//right leg shade2  
  
  } else if (movement >=13 && movement <=18) {//movement*3
  //left legs
  fill(219, 219, 219);
  rect(x+25+0.83333*2, 230+sin(0.03*(frameCount))*3, 20, 25);//left leg layer1
  fill(219, 219, 219);
  rect(x+20+1.25*2, 240+sin(0.03*(frameCount))*2, 20, 20);//left leg layer2
  fill(219, 219, 219);
  rect(x+15+1.875*2, 250+sin(0.03*(frameCount))*1, 20, 20);//left leg layer3
  fill(219, 219, 219);
  rect(x+10+2.8125*2, 260, 20, 20);//left leg layer4
  fill(219, 219, 219);
  rect(x+5+2.8125*2, 270, 20, 20);//left leg layer5
  fill(219, 219, 219);
  rect(x+0+2.8125*2, 285, 20, 15);//foot
  fill(167, 167, 167);
  rect(x+30+2.8125*2, 260+sin(0.03*(frameCount))*2, 5, 11.5);//left leg shade1
  rect(x+25+2.8125*2, 270+sin(0.03*(frameCount))*1, 5, 11.5);//left leg shade2
  rect(x+20+2.8125*2, 280, 5, 10);//left leg shade3
  rect(x+15+2.8125*2, 285, 5, 15);//left leg shade4


  //right legs
  fill(219, 219, 219);
  rect(x+55+0.75*2, 235+sin(0.03*(frameCount))*3, 15, 20);//right leg layer1
  fill(219, 219, 219);
  rect(x+60+0.75*2, 240+sin(0.03*(frameCount))*2, 15, 20);//right leg layer2
  fill(219, 219, 219);
  rect(x+65+0.75*2, 245+sin(0.03*(frameCount))*1, 15, 20);//right leg layer3
  fill(219, 219, 219);
  rect(x+70+0.75*2, 255, 15, 40);//right leg layer4
  fill(219, 219, 219);
  rect(x+75+0.75*2, 295, 10, 5);//right leg layer5
  fill(167, 167, 167);
  rect(x+65+0.75*2, 260+sin(0.03*(frameCount))*2, 5, 6.5);//right leg shade1
  rect(x+70+0.75*2, 265+sin(0.03*(frameCount))*1, 5, 31.5);//right leg shade2  
  } else if (movement >=19 && movement <=24) {//movement*2
      //left legs
  fill(219, 219, 219);
  rect(x+25+0.83333*2, 230+sin(0.03*(frameCount))*3, 20, 25);//left leg layer1
  fill(219, 219, 219);
  rect(x+20+1.25, 240+sin(0.03*(frameCount))*2, 20, 20);//left leg layer2
  fill(219, 219, 219);
  rect(x+15+1.875, 250+sin(0.03*(frameCount))*1, 20, 20);//left leg layer3
  fill(219, 219, 219);
  rect(x+10+2.8125, 260, 20, 20);//left leg layer4
  fill(219, 219, 219);
  rect(x+5+2.8125, 270, 20, 20);//left leg layer5
  fill(219, 219, 219);
  rect(x+0+2.8125, 285, 20, 15);//foot
  fill(167, 167, 167);
  rect(x+30+2.8125, 260+sin(0.03*(frameCount))*2, 5, 11.5);//left leg shade1
  rect(x+25+2.8125, 270+sin(0.03*(frameCount))*1, 5, 11.5);//left leg shade2
  rect(x+20+2.8125, 280, 5, 10);//left leg shade3
  rect(x+15+2.8125, 285, 5, 15);//left leg shade4


  //right legs
  fill(219, 219, 219);
  rect(x+55+0.75, 235+sin(0.03*(frameCount))*3, 15, 20);//right leg layer1
  fill(219, 219, 219);
  rect(x+60+0.75, 240+sin(0.03*(frameCount))*2, 15, 20);//right leg layer2
  fill(219, 219, 219);
  rect(x+65+0.75, 245+sin(0.03*(frameCount))*1, 15, 20);//right leg layer3
  fill(219, 219, 219);
  rect(x+70+0.75, 255, 15, 40);//right leg layer4
  fill(219, 219, 219);
  rect(x+75+0.75, 295, 10, 5);//right leg layer5
  fill(167, 167, 167);
  rect(x+65+0.75, 260+sin(0.03*(frameCount))*2, 5, 6.5);//right leg shade1
  rect(x+70+0.75, 265+sin(0.03*(frameCount))*1, 5, 31.5);//right leg shade2  
  } else if (movement >=25 && movement <=30) {//movement*1
  
        //left legs
  fill(219, 219, 219);
  rect(x+25, 230+sin(0.03*(frameCount))*3, 20, 25);//left leg layer1
  fill(219, 219, 219);
  rect(x+20, 240+sin(0.03*(frameCount))*2, 20, 20);//left leg layer2
  fill(219, 219, 219);
  rect(x+15, 250+sin(0.03*(frameCount))*1, 20, 20);//left leg layer3
  fill(219, 219, 219);
  rect(x+10, 260, 20, 20);//left leg layer4
  fill(219, 219, 219);
  rect(x+5, 270, 20, 20);//left leg layer5
  fill(219, 219, 219);
  rect(x+0, 285, 20, 15);//foot
  fill(167, 167, 167);
  rect(x+30, 260+sin(0.03*(frameCount))*2, 5, 11.5);//left leg shade1
  rect(x+25, 270+sin(0.03*(frameCount))*1, 5, 11.5);//left leg shade2
  rect(x+20, 280, 5, 10);//left leg shade3
  rect(x+15, 285, 5, 15);//left leg shade4


  //right legs
  fill(219, 219, 219);
  rect(x+55, 235+sin(0.03*(frameCount))*3, 15, 20);//right leg layer1
  fill(219, 219, 219);
  rect(x+60, 240+sin(0.03*(frameCount))*2, 15, 20);//right leg layer2
  fill(219, 219, 219);
  rect(x+65, 245+sin(0.03*(frameCount))*1, 15, 20);//right leg layer3
  fill(219, 219, 219);
  rect(x+70, 255, 15, 40);//right leg layer4
  fill(219, 219, 219);
  rect(x+75, 295, 10, 5);//right leg layer5
  fill(167, 167, 167);
  rect(x+65, 260+sin(0.03*(frameCount))*2, 5, 6.5);//right leg shade1
  rect(x+70, 265+sin(0.03*(frameCount))*1, 5, 31.5);//right leg shade2 
  }
  
  
  ////sumurai movement animation//////

  if (movement1 <0) {//reset when it = 0
    movement1 = 30;
  }
  if (movement1 >30) {//reset
    movement1 = 0;
  }
  if (movement1 >=0 && movement1 <=6) {//movement
    //left leg
  fill(97, 97, 97);
  rect(265+x1, 275, 15, 25);//foot
  fill(33, 150, 243);
  rect(285+x1, 235+sin(0.03*(frameCount))*3, 5, 50);//layer1
  rect(280+x1, 240+sin(0.03*(frameCount))*3, 5, 45);//layer2
  rect(275+x1, 245+sin(0.03*(frameCount))*3, 5, 40);//layer3
  rect(270+x1, 250+sin(0.03*(frameCount))*3, 5, 35);//layer4
  rect(265+x1, 260+sin(0.03*(frameCount))*3, 5, 25);//layer5

  //right leg
  fill(97, 97, 97);
  rect(350+x1, 275, 15, 25);//foot
  fill(33, 150, 243);
  rect(325+x1, 230+sin(0.03*(frameCount))*3, 5, 55);//layer1
  rect(330+x1, 230+sin(0.03*(frameCount))*3, 5, 55);//layer2
  rect(335+x1, 235+sin(0.03*(frameCount))*3, 5, 50);//layer3
  rect(340+x1, 240+sin(0.03*(frameCount))*3, 5, 45);//layer4
  rect(345+x1, 245+sin(0.03*(frameCount))*3, 5, 40);//layer5
  rect(350+x1, 250+sin(0.03*(frameCount))*3, 5, 35);//layer6
  rect(355+x1, 255+sin(0.03*(frameCount))*3, 5, 30);//layer7
  rect(360+x1, 265+sin(0.03*(frameCount))*3, 5, 20);//layer8
  } else if (movement1 >=7 && movement1 <=12) {//movement*2
      //left leg
  fill(97, 97, 97);
  rect(265+x1, 275, 15, 25);//foot
  fill(33, 150, 243);
  rect(285+x1, 235+sin(0.03*(frameCount))*3, 5, 50);//layer1
  rect(280+x1, 240+sin(0.03*(frameCount))*3, 5, 45);//layer2
  rect(275+x1, 245+sin(0.03*(frameCount))*3, 5, 40);//layer3
  rect(270+x1, 250+sin(0.03*(frameCount))*3, 5, 35);//layer4
  rect(265+x1, 260+sin(0.03*(frameCount))*3, 5, 25);//layer5

  //right leg
  fill(97, 97, 97);
  rect(350+x1, 275, 15, 25);//foot
  fill(33, 150, 243);
  rect(325+x1+0.83333, 230+sin(0.03*(frameCount))*3, 5, 55);//layer1
  rect(330+x1, 230+sin(0.03*(frameCount))*3, 5, 55);//layer2
  rect(335+x1, 235+sin(0.03*(frameCount))*3, 5, 50);//layer3
  rect(340+x1, 240+sin(0.03*(frameCount))*3, 5, 45);//layer4
  rect(345+x1, 245+sin(0.03*(frameCount))*3, 5, 40);//layer5
  rect(350+x1, 250+sin(0.03*(frameCount))*3, 5, 35);//layer6
  rect(355+x1, 255+sin(0.03*(frameCount))*3, 5, 30);//layer7
  rect(360+x1, 265+sin(0.03*(frameCount))*3, 5, 20);//layer8
  } else if (movement1 >=13 && movement1 <=18) {//movement*3
      //left leg
  fill(97, 97, 97);
  rect(265+x1, 275, 15, 25);//foot
  fill(33, 150, 243);
  rect(285+x1, 235+sin(0.03*(frameCount))*3, 5, 50);//layer1
  rect(280+x1, 240+sin(0.03*(frameCount))*3, 5, 45);//layer2
  rect(275+x1, 245+sin(0.03*(frameCount))*3, 5, 40);//layer3
  rect(270+x1, 250+sin(0.03*(frameCount))*3, 5, 35);//layer4
  rect(265+x1, 260+sin(0.03*(frameCount))*3, 5, 25);//layer5

  //right leg
  fill(97, 97, 97);
  rect(350+x1, 275, 15, 25);//foot
  fill(33, 150, 243);
  rect(325+x1+1*2, 230+sin(0.03*(frameCount))*3, 5, 55);//layer1
  rect(330+x1+1*2, 230+sin(0.03*(frameCount))*3, 5, 55);//layer2
  rect(335+x1+1*2, 235+sin(0.03*(frameCount))*3, 5, 50);//layer3
  rect(340+x1+1*2, 240+sin(0.03*(frameCount))*3, 5, 45);//layer4
  rect(345+x1+1*2, 245+sin(0.03*(frameCount))*3, 5, 40);//layer5
  rect(350+x1+1*2, 250+sin(0.03*(frameCount))*3, 5, 35);//layer6
  rect(355+x1+1*2, 255+sin(0.03*(frameCount))*3, 5, 30);//layer7
  rect(360+x1+1*2, 265+sin(0.03*(frameCount))*3, 5, 20);//layer8
  } else if (movement1 >=19 && movement1 <=24) {//movement*2
     //left leg
  fill(97, 97, 97);
  rect(265+x1, 275, 15, 25);//foot
  fill(33, 150, 243);
  rect(285+x1, 235+sin(0.03*(frameCount))*3, 5, 50);//layer1
  rect(280+x1, 240+sin(0.03*(frameCount))*3, 5, 45);//layer2
  rect(275+x1, 245+sin(0.03*(frameCount))*3, 5, 40);//layer3
  rect(270+x1, 250+sin(0.03*(frameCount))*3, 5, 35);//layer4
  rect(265+x1, 260+sin(0.03*(frameCount))*3, 5, 25);//layer5

  //right leg
  fill(97, 97, 97);
  rect(350+x1, 275, 15, 25);//foot
  fill(33, 150, 243);
  rect(325+x1+0.83333, 230+sin(0.03*(frameCount))*3, 5, 55);//layer1
  rect(330+x1+0.83333, 230+sin(0.03*(frameCount))*3, 5, 55);//layer2
  rect(335+x1+0.83333, 235+sin(0.03*(frameCount))*3, 5, 50);//layer3
  rect(340+x1+0.83333, 240+sin(0.03*(frameCount))*3, 5, 45);//layer4
  rect(345+x1+0.83333, 245+sin(0.03*(frameCount))*3, 5, 40);//layer5
  rect(350+x1+0.83333, 250+sin(0.03*(frameCount))*3, 5, 35);//layer6
  rect(355+x1+0.83333, 255+sin(0.03*(frameCount))*3, 5, 30);//layer7
  rect(360+x1+0.83333, 265+sin(0.03*(frameCount))*3, 5, 20);//layer8 
  } else if (movement1 >=25 && movement1 <=30) {//movement
       //left leg
  fill(97, 97, 97);
  rect(265+x1, 275, 15, 25);//foot
  fill(33, 150, 243);
  rect(285+x1, 235+sin(0.03*(frameCount))*3, 5, 50);//layer1
  rect(280+x1, 240+sin(0.03*(frameCount))*3, 5, 45);//layer2
  rect(275+x1, 245+sin(0.03*(frameCount))*3, 5, 40);//layer3
  rect(270+x1, 250+sin(0.03*(frameCount))*3, 5, 35);//layer4
  rect(265+x1, 260+sin(0.03*(frameCount))*3, 5, 25);//layer5

  //right leg
  fill(97, 97, 97);
  rect(350+x1, 275, 15, 25);//foot
  fill(33, 150, 243);
  rect(325+x1, 230+sin(0.03*(frameCount))*3, 5, 55);//layer1
  rect(330+x1, 230+sin(0.03*(frameCount))*3, 5, 55);//layer2
  rect(335+x1, 235+sin(0.03*(frameCount))*3, 5, 50);//layer3
  rect(340+x1, 240+sin(0.03*(frameCount))*3, 5, 45);//layer4
  rect(345+x1, 245+sin(0.03*(frameCount))*3, 5, 40);//layer5
  rect(350+x1, 250+sin(0.03*(frameCount))*3, 5, 35);//layer6
  rect(355+x1, 255+sin(0.03*(frameCount))*3, 5, 30);//layer7
  rect(360+x1, 265+sin(0.03*(frameCount))*3, 5, 20);//layer8 
  }
}

void samuraiWin(){//Victory screen
  if ( khealth <= 0){
  println("SAMURAI WIN!!!!!!!!!!");
  
    /////G///////
  fill(0, 0, 0);
  rect(0, 0, 400, 400);
  fill(255, 255, 255);
  rect(75, 90, 40, 10);
  rect(70, 95, 10, 55);
  rect(110, 95, 10, 10);
  rect(115, 105, 5, 5);
  rect(75, 145, 40, 10);
  rect(110, 130, 10, 20);
  rect(110, 125, 15, 10);
  rect(105, 120, 10, 10);
  rect(100, 120, 5, 5);
  /////////A////////
  rect(130, 90, 10, 60);
  rect(130, 90, 45, 5);
  rect(170, 90, 10, 60);
  rect(130, 115, 45, 5);
  rect(140, 120, 5, 5);
  rect(165, 120, 5, 5);
  rect(130, 150, 5, 5);
  rect(175, 150, 5, 5);
  ////////M/////////
  rect(190, 90, 5, 65);
  rect(195, 95, 5, 60);
  rect(200, 105, 5, 20);
  rect(205, 115, 5, 20);
  rect(210, 125, 5, 20);
  rect(215, 135, 5, 20);
  rect(220, 125, 5, 20);
  rect(225, 115, 5, 20);
  rect(230, 105, 5, 20);
  rect(235, 95, 5, 60);
  rect(240, 90, 5, 65);
  ////////E//////////
  rect(255, 90, 55, 5);
  rect(255, 95, 45, 5);
  rect(255, 90, 10, 65);
  rect(255, 120, 50, 5);
  rect(255, 145, 45, 5);
  rect(255, 150, 55, 5);
  ////////o//////////
  rect(80, 165, 35, 10);
  rect(75, 170, 10, 10);
  rect(70, 175, 5, 15);
  rect(65, 190, 5, 25);
  rect(70, 215, 5, 15);
  rect(75, 225, 10, 10);
  rect(80, 230, 35, 10);
  rect(110, 225, 10, 10);
  rect(120, 215, 5, 15);
  rect(125, 190, 5, 25);
  rect(120, 175, 5, 15);
  rect(110, 170, 10, 10);
  ////////v//////////
  rect(130, 165, 5, 5);
  rect(135, 165, 10, 20);
  rect(140, 175, 10, 25);
  rect(145, 195, 20, 30);
  rect(150, 225, 10, 15);
  rect(160, 175, 10, 25);
  rect(165, 165, 10, 20);
  rect(175, 165, 5, 5);
  ////////E//////////
  rect(255-65, 90+80, 55, 5);
  rect(255-65, 95+80, 45, 5);
  rect(255-65, 90+80, 10, 65);
  rect(255-65, 120+80, 50, 5);
  rect(255-65, 145+80, 45, 5);
  rect(255-65, 150+80, 55, 5);
  ///////R///////////
  rect(255, 165, 45, 5);
  rect(255, 165, 10, 70);
  rect(255, 235, 5, 5);
  rect(295, 165, 5, 10);
  rect(300, 170, 5, 10);
  rect(305, 175, 5, 15);
  rect(300, 190, 5, 10);
  rect(295, 195, 5, 10);
  rect(255, 200, 45, 5);
  rect(255, 205, 35, 5);
  rect(280, 210, 15, 5);
  rect(285, 215, 15, 5);
  rect(290, 220, 15, 5);
  rect(295, 225, 15, 5);
  rect(300, 230, 15, 5);
  rect(315, 235, 5, 5);}
}
void knightWin(){//Victory screen
  if ( shealth >=0){
  println("KNIGHT WIN!!!!!!!!!!!");
  
    /////G///////
  fill(0, 0, 0);
  rect(0, 0, 400, 400);
  fill(255, 255, 255);
  rect(75, 90, 40, 10);
  rect(70, 95, 10, 55);
  rect(110, 95, 10, 10);
  rect(115, 105, 5, 5);
  rect(75, 145, 40, 10);
  rect(110, 130, 10, 20);
  rect(110, 125, 15, 10);
  rect(105, 120, 10, 10);
  rect(100, 120, 5, 5);
  /////////A////////
  rect(130, 90, 10, 60);
  rect(130, 90, 45, 5);
  rect(170, 90, 10, 60);
  rect(130, 115, 45, 5);
  rect(140, 120, 5, 5);
  rect(165, 120, 5, 5);
  rect(130, 150, 5, 5);
  rect(175, 150, 5, 5);
  ////////M/////////
  rect(190, 90, 5, 65);
  rect(195, 95, 5, 60);
  rect(200, 105, 5, 20);
  rect(205, 115, 5, 20);
  rect(210, 125, 5, 20);
  rect(215, 135, 5, 20);
  rect(220, 125, 5, 20);
  rect(225, 115, 5, 20);
  rect(230, 105, 5, 20);
  rect(235, 95, 5, 60);
  rect(240, 90, 5, 65);
  ////////E//////////
  rect(255, 90, 55, 5);
  rect(255, 95, 45, 5);
  rect(255, 90, 10, 65);
  rect(255, 120, 50, 5);
  rect(255, 145, 45, 5);
  rect(255, 150, 55, 5);
  ////////o//////////
  rect(80, 165, 35, 10);
  rect(75, 170, 10, 10);
  rect(70, 175, 5, 15);
  rect(65, 190, 5, 25);
  rect(70, 215, 5, 15);
  rect(75, 225, 10, 10);
  rect(80, 230, 35, 10);
  rect(110, 225, 10, 10);
  rect(120, 215, 5, 15);
  rect(125, 190, 5, 25);
  rect(120, 175, 5, 15);
  rect(110, 170, 10, 10);
  ////////v//////////
  rect(130, 165, 5, 5);
  rect(135, 165, 10, 20);
  rect(140, 175, 10, 25);
  rect(145, 195, 20, 30);
  rect(150, 225, 10, 15);
  rect(160, 175, 10, 25);
  rect(165, 165, 10, 20);
  rect(175, 165, 5, 5);
  ////////E//////////
  rect(255-65, 90+80, 55, 5);
  rect(255-65, 95+80, 45, 5);
  rect(255-65, 90+80, 10, 65);
  rect(255-65, 120+80, 50, 5);
  rect(255-65, 145+80, 45, 5);
  rect(255-65, 150+80, 55, 5);
  ///////R///////////
  rect(255, 165, 45, 5);
  rect(255, 165, 10, 70);
  rect(255, 235, 5, 5);
  rect(295, 165, 5, 10);
  rect(300, 170, 5, 10);
  rect(305, 175, 5, 15);
  rect(300, 190, 5, 10);
  rect(295, 195, 5, 10);
  rect(255, 200, 45, 5);
  rect(255, 205, 35, 5);
  rect(280, 210, 15, 5);
  rect(285, 215, 15, 5);
  rect(290, 220, 15, 5);
  rect(295, 225, 15, 5);
  rect(300, 230, 15, 5);
  rect(315, 235, 5, 5);}
  
}
void walldetail() {
  fill(108, 108, 108);
  for (int wy = 295; wy >=235; wy += -15) {
    rect(0, wy, 400, 5);
  }
  for (int wx1 = 0; wx1 <=400; wx1 += 20) {
    rect(wx1, 280, 5, 20);
  }
  for (int wx1 = 10; wx1 <=400; wx1 += 20) {
    rect(wx1, 265, 5, 20);
  }
  for (int wx1 = 0; wx1 <=400; wx1 += 20) {
    rect(wx1, 250, 5, 20);
  }
  for (int wx1 = 10; wx1 <=400; wx1 += 20) {
    rect(wx1, 235, 5, 20);
  }
  fill(234, 234, 234);
  for (int x = 5; x <= 400; x +=10) {
    rect(x, 135, 5, 5);
  }
  fill(55, 71, 79);
  for (int x = 10; x <= 400; x+= 20) {
    rect(x, 115, 5, 5);
  }
  for (int x = 15; x <= 400; x+= 20) {
    rect(x, 120, 5, 5);
  }
  for (int x = 20; x <= 400; x+= 20) {
    rect(x, 125, 5, 5);
  }
}
//////////background animation\\\\\\\\\\
void waterfall() {
  noStroke();
  fill(225, 245, 254);
  rect(190, 190, 20, 95);
  fill(255, 255, 255);
  rect(190, wf1, 5, 25);//waterfall 1
  rect(190, wf11, 5, 5);
  rect(190, wf12, 5, 15);
  rect(195, wf2, 5, 10);//waterfall 2
  rect(195, wf21, 5, 15);
  rect(195, wf22, 5, 15);
  rect(200, wf3, 5, 10);//waterfall 3
  rect(200, wf31, 5, 15);
  rect(200, wf32, 5, 10);
  rect(200, wf33, 5, 5);
  rect(205, wf4, 5, 5);//waterfall 4
  rect(205, wf41, 5, 15);
  rect(205, wf42, 5, 5);
  rect(205, wf43, 5, 10);
  rect(205, wf44, 5, 15);

  wf1=wf1+1;
  wf11=wf11+1;  
  wf12=wf12+1;
  wf2=wf2+1.5;
  wf21=wf21+1.5;
  wf22=wf22+1.5;
  wf3=wf3+0.75;
  wf31=wf31+0.75;
  wf32=wf32+0.75;
  wf33=wf33+0.75;
  wf4=wf4+1.6;
  wf41=wf41+1.6;
  wf42=wf42+1.6;
  wf43=wf43+1.6;
  wf44=wf44+1.6;
}

void cloud() {
  noStroke();
  fill(255, 255, 255, 200);
  rect(cloudx1, 50, 90, 30);///cloud 1
  rect(cloudx2, 10, 60, 20);///cloud2
  rect(cloudx3, 30, 70, 34);///cloud3

  cloudx1=cloudx1-0.1;
  cloudx2=cloudx2-0.15;
  cloudx3=cloudx3-0.2;
}

//////////////////////////////////////////  


void setup() {
  size(400, 400);
  println("The Knight use W, A, S, D to control the movement and weapon position, E-key attack.");
  println("The warrior uses the arrow keys to control the movement and weapon position, and the space attack.");
  println("The weapon will not cause damage if the horizntal position is the same");
}
void draw() {
  background(100);




  ///////////////////////////////
  //////////condition////////////
  ///////////////////////////////

  /////////Condition that triggers damage
  if (y == y1) {
    kdamage=false;
    sdamage=false;
  }  
  if (kattack==false) {
    kdamage=false;
  } else if ((x+130)>= (280+x1) && y != y1 && kattack==true) {//condition for damage caused by player's NORMAL attack
    kdamage=true;
  } if (sattack==false) {
    sdamage=false;
  }
  else if ((x+130)>= (280+x1) && y != y1&& sattack==true) {//condition for damage caused by player's NORMAL attack
    sdamage=true;
     }  
  //////////////health bar/////////////
  if(kdamage == false){
    shealth=shealth+0;
  }else if (kdamage == true){
    shealth=shealth+1;
  }
  if(sdamage== false){
    khealth=khealth+0;
  }
  if(sdamage==true){
    khealth=khealth-1;
  }


  //waterfall//

  if ( wf1>=280) {
    wf1 = ( wf1-1) - 90;
  }
  if ( wf11>=280) {
    wf11=( wf11-1)-90;
  }
  if ( wf12>=280) {
    wf12= ( wf12-1)-90;
  }
  if ( wf2 >=280) {
    wf2 = (wf2-1.2)-90;
  }
  if ( wf21>=280) {
    wf21 = (wf21 -1.2)-90;
  }
  if (wf22 >=280) {
    wf22 = ( wf22-1.2)-90;
  }
  if (wf3 >=280) {
    wf3  = ( wf3 -1)-90;
  }
  if (wf31 >=280) {
    wf31  = ( wf31 -1)-90;
  }
  if (wf32 >=280) {
    wf32  = ( wf32 -1)-90;
  }
  if (wf33 >=280) {
    wf33  = ( wf33 -1)-90;
  }
  if (wf4 >=280) {
    wf4  = ( wf4 -1)-90;
  }
  if (wf41 >=280) {
    wf41  = ( wf41 -1)-90;
  }
  if (wf42 >=280) {
    wf42  = ( wf42 -1)-90;
  }
  if (wf43 >=280) {
    wf43  = ( wf43 -1)-90;
  }
  if (wf4 >=280) {
    wf44  = ( wf44 -1)-90;
  }

  ///////////cloud reset/////////////////////

  if (cloudx1 <= -90) {
    cloudx1 = (cloudx1-0.1)+490;
  }
  if (cloudx2 <= -60) {
    cloudx2 = (cloudx2-0.15)+460;
  }
  if (cloudx3 <= -70) {
    cloudx3 = (cloudx3-0.2)+470;
  }

  //////////////control//////////////////
  ///////////////////////////////////////
  if (kup) {//knight weapon movement
    kweapon=kweapon+1;
  }
  if (kdown) {
    kweapon=kweapon-1;
  }  
  if (kright) {//knight movement
    x=x+2;
    movement ++;
  } else if (kleft) {
    x=x-2;
    movement --;
  }
  ///////////////////////////////////////////
  if (sright) {//samurai movement
    x1=x1+2;
    movement1++;
  }
  if (sleft) {
    x1=x1-2;
    movement1--;
  }
  if (sup) {
    sweapon=sweapon+1;
  }
  if (sdown) {
    sweapon=sweapon-1;
  }

  //////////////////////////////////////////////////////////////////////////////
  //////////////////////////////////////background///////////////////////////////
  ///////////////////////////////////////////////////////////////////////////////
  noStroke();
  fill(160, 224, 255);
  rect(0, 0, 400, 400);



  cloud();
  ///wall///
  fill(238, 238, 238);
  rect(0, 110, 400, 400);
  fill(114, 82, 67);
  rect(0, 130, 400, 15);//edge of roof
  fill(37, 50, 50);
  rect(0, 110, 400, 20);//roofbrick
  fill(114, 82, 67);
  rect(0, 105, 400, 5);//roof
  fill(0, 0, 0, 100);//wall shade
  rect(0, 145, 400, 10);
  fill(0, 0, 0, 30);//wall shade 
  rect(0, 155, 400, 20);
  fill(0, 0, 0, 40);//wall shade
  rect(0, 250, 400, 50);
  fill(0, 0, 0, 40);//wall shade
  rect(0, 275, 400, 25);
  ///fountain///
  fill(97, 97, 97);
  rect(195, 160, 10, 5);
  rect(190, 160, 5, 10);
  rect(205, 160, 5, 10);
  rect(185, 165, 5, 10);
  rect(210, 165, 5, 10);
  rect(180, 170, 5, 10);
  rect(215, 170, 5, 10);
  rect(175, 175, 5, 20);
  rect(170, 180, 5, 10);
  rect(220, 175, 5, 20);
  rect(225, 180, 5, 10);
  rect(180, 190, 5, 10);
  rect(215, 190, 5, 10);
  rect(185, 195, 5, 10);
  rect(210, 195, 5, 10);
  rect(190, 175, 5, 5);
  rect(205, 175, 5, 5);
  rect(195, 180, 10, 5);
  rect(190, 185, 5, 5);
  rect(205, 185, 5, 5);




  walldetail();
  ///fountain detail2///
  waterfall();
  fill(65, 65, 65);
  rect(175, 280, 50, 5);
  rect(170, 285, 60, 5);
  rect(160, 290, 80, 5);
  rect(155, 295, 90, 5);



  ///ground
  fill(160, 120, 68);
  rect(0, 300, 400, 100);
  fill(139, 104, 58);
  rect(0, 320, 400, 100);
  fill(118, 89, 49);
  rect(0, 345, 400, 100);
  fill(98, 73, 41);
  rect(0, 375, 400, 100);

  fill(0,84,108);
  rect(width/2-35,350,70,60);
  fill(0,108,139);
  rect(width/2-25,360,50,60);
  fill(0,140,180);
  rect(width/2-15,370,30,60);
  
  movementControl();

  
  
  //////////////////////////////////
  /////////////health///////////////
  //////////////////////////////////
  

  fill(255, 209, 23);
  rect(15, 375, khealth, 10);
  rect(385, 375, shealth, 10);
  rectMode(CENTER);
  fill(255,0,0);
  rect(15+khealth, 380, 5, random(20));
  rect((385+shealth) , 380, 5, random(20));
  rectMode(CORNER);




  /////////////////////////////////
  /////////player1/////////////////
  /////////////////////////////////
  player1();
  
    /////////////////////////////////
  /////////player2/////////////////
  /////////////////////////////////
  player2();
  ////knight weapon animation/////
  if (kweapon >=-15&& kweapon <=15 && kattack == true) {//extend arm when player1 attack
    //right hand controlled by key
    y = 180; //hitbox
    fill(219, 219, 219);
    rect(x+65, 175+sin(0.03*(frameCount))*3, 5+space, 30);//right arm layer1
    fill(219, 219, 219);
    rect(x+70+space, 185+sin(0.03*(frameCount))*3-10, 10, 25);//right arm layer2
    fill(167, 167, 167);
    rect(x+75+space, 205+sin(0.03*(frameCount))*3-10, 5, 5);//right arm shade1
    fill(219, 219, 219);
    rect(x+80+space, 175+sin(0.03*(frameCount))*3, 5, 20);//right arm layer3
    fill(167, 167, 167);
    rect(x+80+space, 190+sin(0.03*(frameCount))*3-10, 5, 15);//right arm shade2
    fill(219, 219, 219);
    rect(x+85+space, 175+sin(0.03*(frameCount))*3, 5, 20);//hand
    fill(167, 167, 167);
    rect(x+85+space, 180+sin(0.03*(frameCount))*3, 5, 15);// hand shade
    //sowrd
    fill(0, 0, 0);
    rect(x+90+space, 175+sin(0.03*(frameCount))*3, 10, 20);//handle
    fill(180, 180, 180);
    rect(x+100+space, 180+sin(0.03*(frameCount))*3, 45, 5);//sword
  } else if (kweapon >= 15 && kattack == true) {// attack above
    y=165;
    fill(219, 219, 219);
    rect(x+65, -10+175+sin(0.03*(frameCount))*3, 5+space, 30);//right arm layer1
    fill(219, 219, 219);
    rect(x+70+space, -15+185+sin(0.03*(frameCount))*3-10, 10, 25);//right arm layer2
    fill(167, 167, 167);
    rect(x+75+space, -15+205+sin(0.03*(frameCount))*3-10, 5, 5);//right arm shade1
    fill(219, 219, 219);
    rect(x+80+space, -15+175+sin(0.03*(frameCount))*3, 5, 20);//right arm layer3
    fill(167, 167, 167);
    rect(x+80+space, -15+190+sin(0.03*(frameCount))*3-10, 5, 15);//right arm shade2
    fill(219, 219, 219);
    rect(x+85+space, -15+175+sin(0.03*(frameCount))*3, 5, 20);//hand
    fill(167, 167, 167);
    rect(x+85+space, -15+180+sin(0.03*(frameCount))*3, 5, 15);// hand shade
    //sowrd
    fill(0, 0, 0);
    rect(x+90+space, -15+175+sin(0.03*(frameCount))*3, 10, 20);//handle
    fill(180, 180, 180);
    rect(x+100+space, -15+180+sin(0.03*(frameCount))*3, 45, 5);//sword
  } else if (kweapon <=-15 && kattack == true) {//attack below
    y=195;
    fill(219, 219, 219);
    rect(x+65, 10+175+sin(0.03*(frameCount))*3, 5+space, 30);//right arm layer1
    fill(219, 219, 219);
    rect(x+70+space, 15+185+sin(0.03*(frameCount))*3-10, 10, 25);//right arm layer2
    fill(167, 167, 167);
    rect(x+75+space, 15+205+sin(0.03*(frameCount))*3-10, 5, 5);//right arm shade1
    fill(219, 219, 219);
    rect(x+80+space, 15+175+sin(0.03*(frameCount))*3, 5, 20);//right arm layer3
    fill(167, 167, 167);
    rect(x+80+space, 15+190+sin(0.03*(frameCount))*3-10, 5, 15);//right arm shade2
    fill(219, 219, 219);
    rect(x+85+space, 15+175+sin(0.03*(frameCount))*3, 5, 20);//hand
    fill(167, 167, 167);
    rect(x+85+space, 15+180+sin(0.03*(frameCount))*3, 5, 15);// hand shade
    //sword
    fill(0, 0, 0);
    rect(x+90+space, 15+175+sin(0.03*(frameCount))*3, 10, 20);//handle
    fill(180, 180, 180);
    rect(x+100+space, 15+180+sin(0.03*(frameCount))*3, 45, 5);//sword
  } else  if (kweapon >= 15 ) {//move up
    y=165;
    fill(219, 219, 219);
    rect(x+65, -10+175+sin(0.03*(frameCount))*3, 5, 30);//right arm layer1
    fill(219, 219, 219);
    rect(x+70, -15+185+sin(0.03*(frameCount))*3, 10, 25);//right arm layer2
    fill(167, 167, 167);
    rect(x+75, -15+205+sin(0.03*(frameCount))*3, 5, 5);//right arm shade1
    fill(219, 219, 219);
    rect(x+80, -15+175+sin(0.03*(frameCount))*3, 5, 30);//right arm layer3
    fill(167, 167, 167);
    rect(x+80, -15+190+sin(0.03*(frameCount))*3, 5, 15);//right arm shade2
    fill(219, 219, 219);
    rect(x+85, -15+175+sin(0.03*(frameCount))*3, 5, 20);//hand
    fill(167, 167, 167);
    rect(x+85, -15+180+sin(0.03*(frameCount))*3, 5, 15);// hand shade
    //sowrd
    fill(0, 0, 0);
    rect(x+90, -15+175+sin(0.03*(frameCount))*3, 10, 20);//handle
    fill(180, 180, 180);
    rect(x+100, -15+180+sin(0.03*(frameCount))*3, 45, 5);//sword
  } else if (kweapon <=-15 ) {//move down
    y=195;
    fill(219, 219, 219);
    rect(x+65, 10+175+sin(0.03*(frameCount))*3, 5, 30);//right arm layer1
    fill(219, 219, 219);
    rect(x+70, 15+185+sin(0.03*(frameCount))*3, 10, 25);//right arm layer2
    fill(167, 167, 167);
    rect(x+75, 15+205+sin(0.03*(frameCount))*3, 5, 5);//right arm shade1
    fill(219, 219, 219);
    rect(x+80, 15+175+sin(0.03*(frameCount))*3, 5, 30);//right arm layer3
    fill(167, 167, 167);
    rect(x+80, 15+190+sin(0.03*(frameCount))*3, 5, 15);//right arm shade2
    fill(219, 219, 219);
    rect(x+85, 15+175+sin(0.03*(frameCount))*3, 5, 20);//hand
    fill(167, 167, 167);
    rect(x+85, 15+180+sin(0.03*(frameCount))*3, 5, 15);// hand shade
    //sowrd
    fill(0, 0, 0);
    rect(x+90, 15+175+sin(0.03*(frameCount))*3, 10, 20);//handle
    fill(180, 180, 180);
    rect(x+100, 15+180+sin(0.03*(frameCount))*3, 45, 5);//sword
  } else if (kweapon >=-15&& kweapon <=15 ) {//normal
    //right hand controlled by key
    y = 180; //hitbox
    fill(219, 219, 219);
    rect(x+65, 175+sin(0.03*(frameCount))*3, 5, 30);//right arm layer1
    fill(219, 219, 219);
    rect(x+70, 185+sin(0.03*(frameCount))*3, 10, 25);//right arm layer2
    fill(167, 167, 167);
    rect(x+75, 205+sin(0.03*(frameCount))*3, 5, 5);//right arm shade1
    fill(219, 219, 219);
    rect(x+80, 175+sin(0.03*(frameCount))*3, 5, 30);//right arm layer3
    fill(167, 167, 167);
    rect(x+80, 190+sin(0.03*(frameCount))*3, 5, 15);//right arm shade2
    fill(219, 219, 219);
    rect(x+85, 175+sin(0.03*(frameCount))*3, 5, 20);//hand
    fill(167, 167, 167);
    rect(x+85, 180+sin(0.03*(frameCount))*3, 5, 15);// hand shade
    //sowrd
    fill(0, 0, 0);
    rect(x+90, 175+sin(0.03*(frameCount))*3, 10, 20);//handle
    fill(180, 180, 180);
    rect(x+100, 180+sin(0.03*(frameCount))*3, 45, 5);//sword
  }
  /////////////////////////////////////////////////////////////////
  ///////////////////samurai weapon animation////////////////
  /////////////////////////////////////////////////////////////////

  if (sweapon >=-15&& sweapon <=15 && sattack == true) {//extend arm when player2 attack

    y1 = 180; //hitbox
    //sword

    fill(0, 0, 0);
    rect(290+x1-space, 175+sin(0.03*(frameCount))*3, 5, 15);//handle
    rect(295+x1-space, 180+sin(0.03*(frameCount))*3, 20, 5);
    fill(180, 180, 180);
    rect(225+x1-space, 180+sin(0.03*(frameCount))*3, 65, 5);//blade

    //left arm
    fill(33, 150, 243);
    rect(285+x1, 185+sin(0.03*(frameCount))*3, 5, 35);//layer1
    rect(280+x1, 195+sin(0.03*(frameCount))*3, 5, 20);//layer2
    fill(1, 87, 155);
    rect(285+x1, 215+sin(0.03*(frameCount))*3, 10, 5);//shade1
    rect(295+x1, 210+sin(0.03*(frameCount))*3, 5, 5);//shade2
    fill(255, 224, 178);
    rect(285+x1, 205+sin(0.03*(frameCount))*3, 10, 10);//left hand1
    rect(290+x1-space/2, 195+sin(0.03*(frameCount))*3, 10, 15);//left hand2
    rect(295+x1-space, 180+sin(0.03*(frameCount))*3, 10, 20);

    //right arm
    fill(33, 150, 243);
    rect(325+x1-space, 175+sin(0.03*(frameCount))*3, 15, 45);//layer1
    rect(340+x1-space, 180+sin(0.03*(frameCount))*3, 5, 50);//layer2
    rect(345+x1-space, 185+sin(0.03*(frameCount))*3, 5, 45);//layer3
    rect(350+x1-space, 195+sin(0.03*(frameCount))*3, 5, 35);//layer4
    rect(330+x1-space, 215+sin(0.03*(frameCount))*3, 5, 10);//;layer5
    rect(335+x1-space, 215+sin(0.03*(frameCount))*3, 5, 15);//layer6
    fill(1, 87, 155); 
    rect(335+x1-space, 180+sin(0.03*(frameCount))*3, 10, 35);//shade1
    rect(340+x1-space, 210+sin(0.03*(frameCount))*3, 5, 10);//shade2
    fill(255, 224, 178);
    rect(320+x1-space, 180+sin(0.03*(frameCount))*3, 20, 10);//right hand1
    rect(315+x1-space, 180+sin(0.03*(frameCount))*3, 5, 5);//right hand2
  } else if (sweapon >= 15 && sattack == true) {// attack above
    y1=165;
    fill(0, 0, 0);
    rect(290+x1-space, -15+175+sin(0.03*(frameCount))*3, 5, 15);//handle
    rect(295+x1-space, -15+180+sin(0.03*(frameCount))*3, 20, 5);
    fill(180, 180, 180);
    rect(225+x1-space, -15+180+sin(0.03*(frameCount))*3, 65, 5);//blade

    //left arm
    fill(33, 150, 243);
    rect(285+x1, -15+185+sin(0.03*(frameCount))*3, 5, 35);//layer1
    rect(280+x1, -15+195+sin(0.03*(frameCount))*3, 5, 20);//layer2
    fill(1, 87, 155);
    rect(285+x1, -15+215+sin(0.03*(frameCount))*3, 10, 5);//shade1
    rect(295+x1, -15+210+sin(0.03*(frameCount))*3, 5, 5);//shade2
    fill(255, 224, 178);
    rect(285+x1, -15+205+sin(0.03*(frameCount))*3, 10, 10);//left hand1
    rect(290+x1-space/2, -15+195+sin(0.03*(frameCount))*3, 10, 15);//left hand2
    rect(295+x1-space, -15+180+sin(0.03*(frameCount))*3, 10, 20);

    //right arm
    fill(33, 150, 243);
    rect(325+x1-space, -15+175+sin(0.03*(frameCount))*3, 15, 45);//layer1
    rect(340+x1-space, -15+180+sin(0.03*(frameCount))*3, 5, 50);//layer2
    rect(345+x1-space, -15+185+sin(0.03*(frameCount))*3, 5, 45);//layer3
    rect(350+x1-space, -15+195+sin(0.03*(frameCount))*3, 5, 35);//layer4
    rect(330+x1-space, -15+215+sin(0.03*(frameCount))*3, 5, 10);//;layer5
    rect(335+x1-space, -15+215+sin(0.03*(frameCount))*3, 5, 15);//layer6
    fill(1, 87, 155); 
    rect(335+x1-space, -15+180+sin(0.03*(frameCount))*3, 10, 35);//shade1
    rect(340+x1-space, -15+210+sin(0.03*(frameCount))*3, 5, 10);//shade2
    fill(255, 224, 178);
    rect(320+x1-space, -15+180+sin(0.03*(frameCount))*3, 20, 10);//right hand1
    rect(315+x1-space, -15+180+sin(0.03*(frameCount))*3, 5, 5);//right hand2
  } else if (sweapon <=-15 && sattack == true) {//attack below
    y1=195;
    //left arm
    fill(33, 150, 243);
    rect(285+x1, 2+185+sin(0.03*(frameCount))*3, 5, 35);//layer1
    rect(280+x1, 5+195+sin(0.03*(frameCount))*3, 5, 20);//layer2
    fill(1, 87, 155);
    rect(285+x1, 5+215+sin(0.03*(frameCount))*3, 10, 5);//shade1
    rect(295+x1, 10+210+sin(0.03*(frameCount))*3, 5, 5);//shade2
    fill(255, 224, 178);
    rect(285+x1, 5+205+sin(0.03*(frameCount))*3, 10, 10);//left hand1
    rect(290+x1-space/2, 10+195+sin(0.03*(frameCount))*3, 10, 15);//left hand2
    rect(295+x1-space, 15+180+sin(0.03*(frameCount))*3, 10, 20);

    //right arm
    fill(33, 150, 243);
    rect(325+x1-space, 5+175+sin(0.03*(frameCount))*3, 15, 45);//layer1
    rect(340+x1-space, 10+180+sin(0.03*(frameCount))*3, 5, 50);//layer2
    rect(345+x1-space, 15+185+sin(0.03*(frameCount))*3, 5, 45);//layer3
    rect(350+x1-space, 15+195+sin(0.03*(frameCount))*3, 5, 35);//layer4
    rect(330+x1-space, 15+215+sin(0.03*(frameCount))*3, 5, 10);//;layer5
    rect(335+x1-space, 15+215+sin(0.03*(frameCount))*3, 5, 15);//layer6
    fill(1, 87, 155); 
    rect(335+x1-space, 15+180+sin(0.03*(frameCount))*3, 10, 35);//shade1
    rect(340+x1-space, 15+210+sin(0.03*(frameCount))*3, 5, 10);//shade2
    fill(255, 224, 178);
    rect(320+x1-space, 15+180+sin(0.03*(frameCount))*3, 20, 10);//right hand1
    rect(315+x1-space, 15+180+sin(0.03*(frameCount))*3, 5, 5);//right hand2
    //sword//
    fill(0, 0, 0);
    rect(290+x1-space, 15+175+sin(0.03*(frameCount))*3, 5, 15);//handle
    rect(295+x1-space, 15+180+sin(0.03*(frameCount))*3, 20, 5);
    fill(180, 180, 180);
    rect(225+x1-space, 15+180+sin(0.03*(frameCount))*3, 65, 5);//blade
  } else if (sweapon >=-15&& sweapon <=15 ) {//normal  

    //sword
    y1 = 180; //hitbox
    fill(0, 0, 0);
    rect(290+x1, 175+sin(0.03*(frameCount))*3, 5, 15);//handle
    rect(295+x1, 180+sin(0.03*(frameCount))*3, 20, 5);
    fill(180, 180, 180);
    rect(225+x1, 180+sin(0.03*(frameCount))*3, 65, 5);//blade

    //left arm
    fill(33, 150, 243);
    rect(285+x1, 185+sin(0.03*(frameCount))*3, 5, 35);//layer1
    rect(280+x1, 195+sin(0.03*(frameCount))*3, 5, 20);//layer2
    fill(1, 87, 155);
    rect(285+x1, 215+sin(0.03*(frameCount))*3, 10, 5);//shade1
    rect(295+x1, 210+sin(0.03*(frameCount))*3, 5, 5);//shade2
    fill(255, 224, 178);
    rect(285+x1, 205+sin(0.03*(frameCount))*3, 10, 10);//left hand1
    rect(290+x1, 195+sin(0.03*(frameCount))*3, 10, 15);//left hand2
    rect(295+x1, 180+sin(0.03*(frameCount))*3, 10, 20);

    //right arm
    fill(33, 150, 243);
    rect(325+x1, 175+sin(0.03*(frameCount))*3, 15, 45);//layer1
    rect(340+x1, 180+sin(0.03*(frameCount))*3, 5, 50);//layer2
    rect(345+x1, 185+sin(0.03*(frameCount))*3, 5, 45);//layer3
    rect(350+x1, 195+sin(0.03*(frameCount))*3, 5, 35);//layer4
    rect(330+x1, 215+sin(0.03*(frameCount))*3, 5, 10);//;layer5
    rect(335+x1, 215+sin(0.03*(frameCount))*3, 5, 15);//layer6
    fill(1, 87, 155); 
    rect(335+x1, 180+sin(0.03*(frameCount))*3, 10, 35);//shade1
    rect(340+x1, 210+sin(0.03*(frameCount))*3, 5, 10);//shade2
    fill(255, 224, 178);
    rect(320+x1, 180+sin(0.03*(frameCount))*3, 20, 10);//right hand1
    rect(315+x1, 180+sin(0.03*(frameCount))*3, 5, 5);//right hand2
  } else  if (sweapon >= 15 ) {//move up
    y1=165;
    fill(0, 0, 0);
    rect(290+x1, -15+175+sin(0.03*(frameCount))*3, 5, 15);//handle
    rect(295+x1, -15+180+sin(0.03*(frameCount))*3, 20, 5);
    fill(180, 180, 180);
    rect(225+x1, -15+180+sin(0.03*(frameCount))*3, 65, 5);//blade

    //left arm
    fill(33, 150, 243);
    rect(285+x1, -15+185+sin(0.03*(frameCount))*3, 5, 35);//layer1
    rect(280+x1, -15+195+sin(0.03*(frameCount))*3, 5, 20);//layer2
    fill(1, 87, 155);
    rect(285+x1, -15+215+sin(0.03*(frameCount))*3, 10, 5);//shade1
    rect(295+x1, -15+210+sin(0.03*(frameCount))*3, 5, 5);//shade2
    fill(255, 224, 178);
    rect(285+x1, -15+205+sin(0.03*(frameCount))*3, 10, 10);//left hand1
    rect(290+x1, -15+195+sin(0.03*(frameCount))*3, 10, 15);//left hand2
    rect(295+x1, -15+180+sin(0.03*(frameCount))*3, 10, 20);

    //right arm
    fill(33, 150, 243);
    rect(325+x1, -15+175+sin(0.03*(frameCount))*3, 15, 45);//layer1
    rect(340+x1, -15+180+sin(0.03*(frameCount))*3, 5, 50);//layer2
    rect(345+x1, -15+185+sin(0.03*(frameCount))*3, 5, 45);//layer3
    rect(350+x1, -15+195+sin(0.03*(frameCount))*3, 5, 35);//layer4
    rect(330+x1, -15+215+sin(0.03*(frameCount))*3, 5, 10);//;layer5
    rect(335+x1, -15+215+sin(0.03*(frameCount))*3, 5, 15);//layer6
    fill(1, 87, 155); 
    rect(335+x1, -15+180+sin(0.03*(frameCount))*3, 10, 35);//shade1
    rect(340+x1, -15+210+sin(0.03*(frameCount))*3, 5, 10);//shade2
    fill(255, 224, 178);
    rect(320+x1, -15+180+sin(0.03*(frameCount))*3, 20, 10);//right hand1
    rect(315+x1, -15+180+sin(0.03*(frameCount))*3, 5, 5);//right hand2
  } else if (sweapon <=-15 ) {//move down
    y1=195;
    //left arm
    fill(33, 150, 243);
    rect(285+x1, 2+185+sin(0.03*(frameCount))*3, 5, 35);//layer1
    rect(280+x1, 5+195+sin(0.03*(frameCount))*3, 5, 20);//layer2
    fill(1, 87, 155);
    rect(285+x1, 5+215+sin(0.03*(frameCount))*3, 10, 5);//shade1
    rect(295+x1, 10+210+sin(0.03*(frameCount))*3, 5, 5);//shade2
    fill(255, 224, 178);
    rect(285+x1, 5+205+sin(0.03*(frameCount))*3, 10, 10);//left hand1
    rect(290+x1, 10+195+sin(0.03*(frameCount))*3, 10, 15);//left hand2
    rect(295+x1, 15+180+sin(0.03*(frameCount))*3, 10, 20);

    //right arm
    fill(33, 150, 243);
    rect(325+x1, 5+175+sin(0.03*(frameCount))*3, 15, 45);//layer1
    rect(340+x1, 10+180+sin(0.03*(frameCount))*3, 5, 50);//layer2
    rect(345+x1, 15+185+sin(0.03*(frameCount))*3, 5, 45);//layer3
    rect(350+x1, 15+195+sin(0.03*(frameCount))*3, 5, 35);//layer4
    rect(330+x1, 15+215+sin(0.03*(frameCount))*3, 5, 10);//;layer5
    rect(335+x1, 15+215+sin(0.03*(frameCount))*3, 5, 15);//layer6
    fill(1, 87, 155); 
    rect(335+x1, 15+180+sin(0.03*(frameCount))*3, 10, 35);//shade1
    rect(340+x1, 15+210+sin(0.03*(frameCount))*3, 5, 10);//shade2
    fill(255, 224, 178);
    rect(320+x1, 15+180+sin(0.03*(frameCount))*3, 20, 10);//right hand1
    rect(315+x1, 15+180+sin(0.03*(frameCount))*3, 5, 5);//right hand2
    //sword//
    fill(0, 0, 0);
    rect(290+x1, 15+175+sin(0.03*(frameCount))*3, 5, 15);//handle
    rect(295+x1, 15+180+sin(0.03*(frameCount))*3, 20, 5);
    fill(180, 180, 180);
    rect(225+x1, 15+180+sin(0.03*(frameCount))*3, 65, 5);//blade
  }
  samuraiWin();
  knightWin();
}
void keyPressed() {


  /////////////////////////////////
  ////////////control//////////////
  /////////////////////////////////

  ///////1.movement///////////
  if (key == ' ') {
    sattack = true;
  }

  if (key == CODED) {//samurai control
    if (keyCode == RIGHT) {
      sright=true;
    } else if (keyCode== LEFT) {
      sleft=true;
    } else if (keyCode== UP) {//samurai weapon control
      sup=true;
    } else if (keyCode== DOWN) {
      sdown=true;
    }
  }

  if (key == 'd') {//knight control
    kright = true;
  } else if (key =='a') {
    kleft = true;
  }
  if (key == 'w') {//knight weapon contorl
    kup = true;
  } else if (key =='s') {
    kdown = true;
  }
  if (key =='e') {//KNIGHT ATTACK BUTTON
    kattack=true;
  }

  ///////////////////////////limit//////////////////////////
  if (kweapon > 15) {///knight will not able to press key anymore
    kup = false;
  }
  if (kweapon < -15) {
    kdown = false;
  }  
  if (sweapon > 15) {///samurai will not able to press key anymore
    sup = false;
  }
  if (sweapon < -15) {
    sdown = false;
  }
  if (x>x1+150) {//When the players come together, they can stop.
    kright =false;
    sleft = false;
  }
}

void keyReleased() {
  if (key == ' ') {
    sattack = false;
  }
  if (key == CODED) {//samurai control
    if (keyCode == RIGHT) {
      sright=false;
    } else if (keyCode== LEFT) {
      sleft=false;
    } else if (keyCode== UP) {//samurai weapon control
      sup=false;
    } else if (keyCode== DOWN) {
      sdown=false;
    }
  } 
  if (key == 'd') {//knight control
    kright = false;
  } else if (key =='a') {
    kleft = false;
  }
  if (key == 'w') {//knight weapon control
    kup = false ;
  } else if (key =='s') {
    kdown = false;
  }
  if (key =='e') {//KNIGHT ATTACK BUTTON
    kattack=false;
  }
}