Week 15 10160783
---------------正式開始-------------------
增加了第二關(速度變快)還有音樂
ArrayList<PVector> floor = new ArrayList<PVector>();
int st = 0, state = 0;
float marioX = 100, marioY = 180, vx = 0, vy = 0;
void setup() {
size(400 ,600 );
floor.add(new PVector(50, 100));
floor.add(new PVector(50, 200));
floor.add(new PVector(random(100, 200), 300));
floor.add(new PVector(random(100, 200), 400));
floor.add(new PVector(random(100, 200), 500));
}
void draw() {
if (state == 0) {
drawStartScreen();
} else if (state == 1) {
if (st == 0) {
flying = true;
st += 1;
}
gamePlay();
} else if (state == 2) {
background(255, 0, 0);
textSize(40);
fill(255);
text("Game Over", 100, 250);
}
}
void drawStartScreen() {
background(0, 0, 255);
textSize(40);
fill(0);
text("Push Space to Start", 30, 250);
textSize(20);
fill(0);
text(" LEFT=left\n RIGHT=right\n SPACE=jump", 250, 350);
}
void gamePlay() {
background(#F7DCDC);
updateMario();
drawMario();
for (PVector p : floor) {
rect(p.x, p.y, 100, 20);
p.y -= 2;
}
if (floor.get(0).y < -20) floor.remove(0);
if (frameCount % 100 == 1) {
floor.add(new PVector(random(1, 300), 600));
}
}
void updateMario() {
marioX += vx;
marioY += vy;
vy += 0.98;
for (PVector p : floor) {
if (marioY > p.y && marioY < p.y + 20 && marioX > p.x && marioX < p.x + 100) {
marioY = p.y - 10;
vy = 0;
flying = false;
}
}
if (marioY > height || marioY < 1) {
state = 2; // Set game over state
}
}
void drawMario() {
fill(255, 0, 0);
ellipse(marioX, marioY, 15, 25);
}
boolean hitBox(int x, int y, int w, int h) {
if (x-7 < marioX && marioX <x + w+7 && y - 10 < marioY && marioY < y + h + 10) return true;
else return false;
}
boolean flying = false;
void keyPressed() {
if (keyCode == RIGHT) vx = 4;
if (keyCode == LEFT) vx = -4;
if (keyCode == 32 && !flying) {
vy = -13;
flying = true;
}
if (state == 0 && keyCode == 32) {
state = 1;
}
}
void keyReleased() {
if (keyCode == RIGHT || keyCode == LEFT) vx = 0;
}
void mousePressed() {
resetGame();
}
void resetGame() {
marioX = 100;
marioY = 180;
vx = 0;
vy = 0;
state = 0;
floor.clear();
floor.add(new PVector(50, 100));
floor.add(new PVector(50, 200));
floor.add(new PVector(random(100, 200), 300));
floor.add(new PVector(random(100, 200), 400));
floor.add(new PVector(random(100, 200), 500));
}
沒有留言:
張貼留言