目標一:製作雪球大戰
製作進度預覽:
程式碼:
PImage imgBG;
import processing.sound.*;
SoundFile sound;
SoundFile sound1;
SoundFile sound2;
PVector[]enemy=new PVector[5];
PVector[]enemyV=new PVector[5];
int now =0;
int stage=0;
void reborn(int i)
{
enemy[i]=new PVector(random(500), random(500));
float angle=random(2*PI);
enemyV[i]=new PVector(3*cos(angle), 3*sin(angle));
}
void setup()
{
imgBG=loadImage("1.jpg");
fill(0, 0, 0);
size(500, 500);
for (int i=0; i<5; i++)
{
reborn(i);
}
sound = new SoundFile(this,"Battle Theme.mp3");
sound.play();
}
int kidsize=30;
float kidX=250, kidY=250, dir=0;
float [] ballX=new float[5];
float [] ballY=new float[5];
float [] ballVX=new float[5];
float [] ballVY=new float[5];
boolean ballFly=false;
float [] kid= new float[5];
float [] ball= new float[5];
int score=0;
int heart=5;
void draw()
{
if (stage==0)
{
fill(255, 0, 0);
textSize(60);
text("Click to Start", 20, 100);
}
else if (stage==1)
{
background(imgBG);
textSize(30);
fill(0);
text("Score:" + score + " Heart:" + heart, 30, 30);
for (int i=0; i<5; i++)
{
fill(255, 220, 40);
enemy[i].x +=enemyV[i].x;
enemyV[i].y+=enemyV[i].y;
ellipse(enemy[i].x, enemy[i].y, 30, 30);
if (enemy[i].x<0||enemy[i].x>500
||enemy[i].y<30||enemy[i].y>500) reborn(i);
fill(255, 40, 40);
ellipse(kidX, kidY, 50, 50);
beginShape(POLYGON);
vertex(kidX+kidsize*cos(radians(dir+80)), kidY+kidsize*sin(radians(dir+80)));
vertex(kidX+kidsize*cos(radians(dir+100)), kidY+kidsize*sin(radians(dir+100)));
vertex(kidX+kidsize*cos(radians(dir-100)), kidY+kidsize*sin(radians(dir-100)));
vertex(kidX+kidsize*cos(radians(dir-80)), kidY+kidsize*sin(radians(dir-80)));
endShape();
if (ballFly)
{
fill(255);
ellipse(ballX[now], ballY[now], 10, 10);
ballX[now]+=ballVX[now];
ballY[now]+=ballVY[now];
now++;
if (now>=5)now=0;
}
if(dist (enemy[i].x,enemy[i].y,ballX[now],ballY[now])<40)
{
score+=10;
reborn(i);
if(score>=100)stage=3;
}
if(dist(enemy[i].x,enemy[i].x,kidX,kidY)<1)
{
heart--;
if(heart<=0)stage=2;
reborn(i);
}
}
} else if (stage==2) {
background(0, 0, 0);
fill(255);
textSize(80);
text("You lose =(", 30, 250);
sound2 = new SoundFile(this, "Game Over.mp3");
} else if (stage==3) {
background(255, 255, 255);
fill(0);
textSize(80);
text("You win!!", 80, 250);
sound1 = new SoundFile(this, "Victory.mp3");
}
}
void keyPressed()
{
if (keyCode==RIGHT) dir+=20;
if (keyCode==LEFT) dir-=20;
if (keyCode==UP)
{
kidX += 10*cos(radians(dir));
kidY += 10*sin(radians(dir));
}
if (keyCode==DOWN)
{
kidX -= 10*cos(radians(dir));
kidY -= 10*sin(radians(dir));
}
if (key==' ')
{
ballX[now]=kidX;
ballY[now]=kidY;
ballVX[now]=10*cos(radians(dir));
ballVY[now]=10*sin(radians(dir));
ballFly=true;
}
}
void mousePressed() {
if (stage==0) {
stage=1;
}
if (stage==2||stage==3) {
stage=0;
heart=5;
score=0;
}
}
沒有留言:
張貼留言