2017年1月7日 星期六

期末作品 火柴人格鬥 2.0


Processing

import processing.serial.*;
Serial myPort;  // Create object from Serial class
int val; 

PImage []player=new PImage[10];
PImage []gamer=new PImage[10];
PImage bg;
int playerNow=0,gamerNow=0;
int life1=100,life2=100;
void setup(){
  size(700,393);
  bg=loadImage("321.png");
  for(int i=0;i<=4;i++)
    player[i]=loadImage("player"+i+".png");
  for(int j=0;j<=4;j++)
    gamer[j]=loadImage("gamer"+j+".png");
  imageMode(CENTER);
 
  myPort = new Serial(this, "COM3", 9600);
 
}
float playerX=150,playerY=300, gamerX=550,gamerY=300;
int state=0;
void draw(){
 
   while (myPort.available ()>0) {
    val=myPort.read();
    if (val==48) {//up
      playerNow=3;
      playerY-=100;
    }
    else if (val==49) {//down
      playerNow=4;
      playerY+=50;
    }
    else if (val==50) {//left
      playerX-=1;
    }
    else if (val==51) {//right
      playerX+=1;
    }
    else if (val==52) {//hand
      playerNow=1;
      if(dist(playerX,playerY,gamerX,gamerY)<100)
        life2-=10;
    }
    else if (val==53){ //foot
      playerNow=2;
      if(dist(playerX,playerY,gamerX,gamerY)<100)
        life2-=10;
    }
    else if (val==54) {//relaese
      playerNow=0;
      playerY=300;
    }
    else if (val==65) {//up
      gamerNow=3;
      gamerY-=100;
    }
    else if (val==66) {//down
      gamerNow=4;
      gamerY+=50;
    }
    else if (val==67) {//left
      gamerX-=1;
    }
    else if (val==68) {//right
      gamerX+=1;
    }
    else if (val==69) {//hand
      gamerNow=1;
      if(dist(playerX,playerY,gamerX,gamerY)<100)
        life1-=10;
    }
    else if (val==70){ //foot
      gamerNow=2;
      if(dist(playerX,playerY,gamerX,gamerY)<100)
        life1-=10;
    }
    else if (val==71) {//relaese
      gamerNow=0;
      gamerY=300;
    }
  }
 
  println(val);
 
 
  if(state==0){
    fill(255,0,0);
    background(bg);
    image(player[playerNow],playerX,playerY,200,200);
    image(gamer[gamerNow],gamerX,gamerY,200,200);
    textSize(30);
    text("Player1 : "+life1+"%",20,50);
    text("Player2 : "+life2+"%",470,50);
  }
  if(life1<=0) state=1; if(life2<=0) state=2;
  if(state==1){
    background(0);
    fill(255); textSize(50); text("Player2 Win!!!",175,175);
    textSize(30); text("Click Mouse to Restart.",175,225);
  }
  if(state==2){
    background(0);
    fill(255); textSize(50); text("Player1 Win!!!",175,175);
    textSize(30); text("Click Mouse to Restart.",175,225);
  }
}
boolean playerattack=true;
boolean gamerattack=true;
void keyPressed(){
  if(keyPressed && keyCode=='A'){
    playerX-=20;
  }
  if(keyPressed && keyCode=='D'){
    playerX+=20;
  }
  if(keyPressed && keyCode=='W'){
    playerNow=3;
    playerY-=100;
    playerattack=false;
  }
  if(keyPressed && keyCode=='S'){
    playerNow=4;
    playerY+=80;
    playerattack=false;
  }
  if(keyPressed && keyCode=='F'){
    playerNow=1;
    if(playerattack=true && dist(playerX,playerY,gamerX,gamerY)<100){
      life2-=10;
    }
  }
  if(keyPressed && keyCode=='G'){
    playerNow=2;
    if(playerattack=true && dist(playerX,playerY,gamerX,gamerY)<100){
      life2-=10;
    }
  }
  if(keyPressed && keyCode==LEFT){
    gamerX-=20;
  }
  if(keyPressed && keyCode==RIGHT){
    gamerX+=20;
  }
  if(keyPressed && keyCode==UP){
    gamerNow=3;
    gamerY-=100;
    gamerattack=false;
  }
  if(keyPressed && keyCode==DOWN){
    gamerNow=4;
    gamerY+=80;
    gamerattack=false;
  }
  if(keyPressed && keyCode=='.'){
    gamerNow=1;
    if(gamerattack=true && dist(playerX,playerY,gamerX,gamerY)<100){
      life1-=10;
    }
  }
  if(keyPressed && keyCode=='/'){
    gamerNow=2;
    if(gamerattack=true && dist(playerX,playerY,gamerX,gamerY)<100){
      life1-=10;
    }
  }
}
void keyReleased(){
  playerNow=0;
  gamerNow=0;
  playerY=300;
  gamerY=300;
  playerattack=true;
  gamerattack=true;
}
void mouseClicked(){
  if(state==1 || state==2){
    state=0;
    life1=100;
    life2=100;
    playerX=150; playerY=300; gamerX=550; gamerY=300;
  }
}

DigitalInputPullup

void setup(){
  //start serial connection
  Serial.begin(9600);
  //configure pin2 as an input and enable the internal pull-up resistor
  pinMode(2, INPUT_PULLUP);//p1 上
  pinMode(3, INPUT_PULLUP);//p1 下
  pinMode(4, INPUT_PULLUP);//p1 左
  pinMode(5, INPUT_PULLUP);//p1 右
  pinMode(6, INPUT_PULLUP);//p1 手
  pinMode(7, INPUT_PULLUP);//p1 腳
 
  pinMode(8, INPUT_PULLUP);//p2 上
  pinMode(9, INPUT_PULLUP);//p2 下
  pinMode(10, INPUT_PULLUP);//p2 左
  pinMode(11, INPUT_PULLUP);//p2 右
  pinMode(12, INPUT_PULLUP);//p2 手
  pinMode(13, INPUT_PULLUP);//p2 腳
  pinMode(14, OUTPUT);

}
int playerattack[4]={0,0,0,0};
int gamerattack[4]={0,0,0,0};
void loop(){
  //read the pushbutton value into a variable
  //player
  int sensorVal2 = digitalRead(2);
  int sensorVal3 = digitalRead(3);
  int sensorVal4 = digitalRead(4);
  int sensorVal5 = digitalRead(5);
  int sensorVal6 = digitalRead(6);
  int sensorVal7 = digitalRead(7);
  //gamer
  int sensorVal8 = digitalRead(8);
  int sensorVal9 = digitalRead(9);
  int sensorVal10 = digitalRead(10);
  int sensorVal11 = digitalRead(11);
  int sensorVal12 = digitalRead(12);
  int sensorVal13 = digitalRead(13);
  //player
  if (playerattack[0]==0 && sensorVal2== LOW){Serial.print('0'); playerattack[0]=1;}
  else if (playerattack[0]==1 && sensorVal2 == HIGH){Serial.print('6');playerattack[0]=0;}
  if (playerattack[1]==0 && sensorVal3== LOW){Serial.print('1'); playerattack[1]=1;}
  else if (playerattack[1]==1 && sensorVal3 == HIGH){Serial.print('6');playerattack[1]=0;}
  if (sensorVal4 == LOW)Serial.print('2');
  if (sensorVal5 == LOW)Serial.print('3');
  if (playerattack[2]==0 && sensorVal6== LOW){Serial.print('4'); playerattack[2]=1;}
  else if (playerattack[2]==1 && sensorVal6 == HIGH){Serial.print('6');playerattack[2]=0;}
  if (playerattack[3]==0 && sensorVal7 == LOW){Serial.print('5');playerattack[3]=1;}
  else if (playerattack[3]==1 && sensorVal7 == HIGH){Serial.print('6');playerattack[3]=0;}
  //gamer
  if (gamerattack[0]==0 && sensorVal8== LOW){Serial.print('A'); gamerattack[0]=1;}
  else if (gamerattack[0]==1 && sensorVal8 == HIGH){Serial.print('G');gamerattack[0]=0;}
  if (gamerattack[1]==0 && sensorVal9== LOW){Serial.print('B'); gamerattack[1]=1;}
  else if (gamerattack[1]==1 && sensorVal9 == HIGH){Serial.print('G');gamerattack[1]=0;}
  if (sensorVal10 == LOW)Serial.print('C');
  if (sensorVal11 == LOW)Serial.print('D');
  if (gamerattack[2]==0 && sensorVal12== LOW){Serial.print('E'); gamerattack[2]=1;}
  else if (gamerattack[2]==1 && sensorVal12 == HIGH){Serial.print('G');gamerattack[2]=0;}
  if (gamerattack[3]==0 && sensorVal13 == LOW){Serial.print('F');gamerattack[3]=1;}
  else if (gamerattack[3]==1 && sensorVal13 == HIGH){Serial.print('G');gamerattack[3]=0;}
}

沒有留言:

張貼留言