期末作品實作
目前進度:兩隻皮卡丘能跳動
PImage imgBall,imgP1,imgP2;
void setup(){size(800,600);
imgBall=loadImage("Ball.png");
imgP1=loadImage("P1.png");
imgP2=loadImage("P2.png");
imageMode(CENTER);
}
float ballX=120,ballY=300,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;
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);
if(bGG)return;
ballX += ballVX; ballY += ballVY;
ballVY += 0.98;
p1X+=p1VX; p1Y += p1VY; p1VY+=0.98;
p2X+=p2VX; p2Y += p2VY; p2VY+=0.98;
if(ballY>=500-40)bGG=true; ///if ball touch the floor : GameOver
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;
}
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;
}
目前進度:有分數計算、球碰到邊界會反彈、皮卡丘不會走超過邊界
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);
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;
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(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;
}
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;
}
沒有留言:
張貼留言