乒乓球
import ddf.minim.*;
Minim minim;
AudioPlayer bgm;
AudioPlayer song;
float ballX,ballY;
float ballSize;
float centerX,centerY;
float paddleW,paddleH;
float rightPaddleX,rightPaddleY;
float leftPaddleX,leftPaddleY;
float speedX,speedY;
boolean isPlaying;
boolean songing;
final int TOTAL_LIFE = 3;
int score;
int life;
void setup(){
size(640,400);
background(255);
minim = new Minim(this);
bgm =minim.loadFile("");
song =minim.loadFile("");
bgm.play();
bgm.loop();
songing = false;
centerX = width/2;
centerY = height/2;
ballX = centerX;
ballY = centerY;
ballSize = 15;
paddleW = 10;
paddleH = 50;
rightPaddleX = width-paddleW*2;
rightPaddleY = centerY-paddleH/2;
leftPaddleX = paddleW;
leftPaddleY = centerY-paddleH/2;
score = 0;
life = TOTAL_LIFE;
//middle line
stroke(128);
line(centerX,0,centerX,height);
//ball
noStroke();
fill(255,0,0);
ellipse(centerX,centerY,ballSize,ballSize);
speedX = random(-5,5);
speedY = random(-5,5);
//paddles
fill(0,0,255);
rect(rightPaddleX,rightPaddleY,paddleW,paddleH);
rect(leftPaddleX,leftPaddleY,paddleW,paddleH);
isPlaying=false;
}
void draw(){
if(isPlaying){
background(255);
//middle line
stroke(128);
line(centerX,0,centerX,height);
//ball
noStroke();
fill(255,0,0);
ellipse(ballX,ballY,ballSize,ballSize);
ballX +=speedX;
ballY +=speedY;
//boundary detection
if(ballX<leftPaddleX+paddleW ){
speedX *=-1;
}
if(ballY<0 ||ballY>height){
speedY *=-1;
}
//hit detection
if(ballX>=rightPaddleX){
if(ballY>=rightPaddleY && ballY <= rightPaddleY+paddleH){
speedX *= -1 ;
score+=10;
song.play();
println("score:"+score);
}else{
isPlaying = false;
life--;
if(life<=0){
println("game over");
}else{
println("life:"+life);
}
}
}
//paddles
fill(0,0,255);
//right
rightPaddleY=mouseY-paddleH/2;
rect(rightPaddleX,rightPaddleY,paddleW,paddleH);
//left
leftPaddleY = ballY - paddleH/2;
rect(leftPaddleX,leftPaddleY,paddleW,paddleH);
}
}
void keyPressed(){
isPlaying =true;
//restart
ballX = centerX;
ballY = centerY;
speedX = random(-5,5);
speedY = random(-5,5);
}