目標一:製作雪球大戰
原遊戲參考:
http://anan.game.tw/ettc/6263.html
遊戲玩法:
本遊戲中間的紅球為主角,可以發射雪球攻擊敵人,敵人則會衝撞主角扣血。
在血歸零前則到100分,則獲勝。若歸零未達到分數則失敗。
本遊戲操控方法如下:
上鍵: 向前
下鍵: 向後
右鍵: 順時針
左鍵 : 逆時針
空白鍵: 發射雪球
程式碼:
PImage imgBG;
PVector[]enemy=new PVector[5];
PVector[]enemyV=new PVector[5];
int stage=1;
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);
}
}
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];
void draw()
{
else if (stage==1)
{
background(imgBG);
textSize(30);
fill(0);
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];
}
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);
}
}
}
}
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;
}
}
沒有留言:
張貼留言