2017年12月25日 星期一

Week 15 邱

#第15週

期末作品:皮卡丘打排球-------------------------------------------------------------------------------------------------------------------------

◎接上搖桿

程式碼:

const int SW_pin = 2; // digital pin connected to switch output
const int X_pin = 0; // analog pin connected to X output
const int Y_pin = 1; // analog pin connected to Y output

void setup() {
  pinMode(SW_pin, INPUT);
  digitalWrite(SW_pin, HIGH);
  Serial.begin(115200);
}

void loop() {
  Serial.print("Switch:  ");
  Serial.print(digitalRead(SW_pin));
  Serial.print("\n");
  Serial.print("X-axis: ");
  Serial.print(analogRead(X_pin));
  Serial.print("\n");
  Serial.print("Y-axis: ");
  Serial.println(analogRead(Y_pin));
  Serial.print("\n\n");
  delay(500);
}

  • 沒有按:1
  • 按下去:0





◎數值簡單化



程式碼:



const int SW_pin = 2; // digital pin connected to switch output
const int X_pin = 0; // analog pin connected to X output
const int Y_pin = 1; // analog pin connected to Y output
void setup() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
Serial.begin(115200);
}
void loop() {
int s=digitalRead(SW_pin);
int x=analogRead(X_pin);
int y=analogRead(Y_pin);
Serial.print("w");
Serial.print(s);
Serial.print("x");
if(x/4=='w' || x/4=='x' || x/4=='y' ) Serial.write('v');
else Serial.write(x/4);
Serial.print("y");
if(y/4=='w' || y/4=='x' || y/4=='y' ) Serial.write('v');
else Serial.write(y/4);
delay(50);
// Serial.print("Switch: ");
// Serial.print(digitalRead(SW_pin));
/* Serial.print("\n");
Serial.print("X-axis: ");
Serial.print(analogRead(X_pin));
Serial.print("\n");
Serial.print("Y-axis: ");
Serial.println(analogRead(Y_pin));
Serial.print("\n\n");*/
// delay(500);
}





◎連到Processing


程式碼:

import processing.serial.*;
Serial myPort;
void setup(){
size(300,300);
myPort = new Serial(this, "COM7", 115200);
}
int t=0, s=48, x=128, y=128;
void draw(){
background(255);
while(myPort.available() > 0){
t = myPort.read();
if(t=='w') s = myPort.read();
else if(t=='x') x=myPort.read();
else if(t=='y') y=myPort.read();
}
if(s==49)fill(255,0,0);
else fill(0,255,0);
ellipse(x, y, 30,30);
}





◎代入之前期中的程式碼

程式碼:
import processing.serial.*;
Serial myPort;
//import ddf.minim.*;
//Minim minim;
//AudioPlayer bgm;
PImage imgBall,imgP1,imgP2;
void setup(){
   size(800,600);
   textSize(50);
   myPort = new Serial(this, "COM7", 115200);
   imgBall=loadImage("Ball.png");
   imgP1=loadImage("P1.png");
   imgP2=loadImage("P2.png");
   imageMode(CENTER);
   //minim=new Minim(this);
   //bgm=minim.loadFile("pika.mp3",2048);
   //bgm.play();
   //bgm.loop();
}
int t=0, s=48, x=128, y=128;
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
  while(myPort.available() > 0){
    t = myPort.read();
  if(t=='w') s = myPort.read();
  else if(t=='x') x=myPort.read();
  else if(t=='y') y=myPort.read();
  }
  //if(s==49)fill(255,0,0);
  //else fill(0,255,0);
  //ellipse(x, y, 30,30);
   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(p1S==15){
    bGG=true;
    String p1win = "p1 is winner !!";
    fill(#E85050);
    text(p1win, 230, 150, 500, 200);
   }
   if(p2S==15){
    bGG=true;
    String p2win = "p2 is winner !!";
    fill(#E85050);
    text(p2win, 230, 150, 500, 200);
   }
   
   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(330<ballX && ballX<470 && 270<ballY &&ballY<560)
     {ballVX=-ballVX;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-ballVX)/6.0;
   if(dist(p2X,p2Y,ballX,ballY)<=80) ballVX=-(80-ballVX)/6.0;
}








沒有留言:

張貼留言