2023年12月21日 星期四

week 15

 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));

}

沒有留言:

張貼留言