Stanley's update

This commit is contained in:
Stanley 2025-12-07 23:56:51 +07:00
parent 807dbe828b
commit 64dae6aa8c

108
Script.js
View File

@ -4,6 +4,12 @@ var canvasWidth = 1280;
var canvasHeight = 650;
var c = undefined;
var ctx = undefined;
var gameStarted = false;
var musicMuted = false;
/// 90 FPS (Cause I got motion sickness while playing our game fr)
let lastFrameTime = 0;
const frameInterval = 1000 / 30; // 90 FPS limit
// 90 FPS mark (change the const x/x to what fps you want)
var game = {
level: 1,
@ -33,14 +39,30 @@ bg1.src = "img/bg_1.png";
var bg2 = new Image();
bg2.src = "img/bg_2.png";
var enemyImgArray = [];
enemyImgArray.length = 7;
var enemy1 = new Image();
enemy1.src = "img/alien_0.png";
var enemyImgArray = [];
enemyImgArray.length = 4;
//Stanley
for (var i = 0; i < enemyImgArray.length; i++) {
enemyImgArray[i] = new Image();
enemyImgArray[i].src = 'img/alien_' + [i] + '.png';
}
var missilesArray = [];
var enemyShipArray = [];
var backgroundMusic = document.createElement("audio");
backgroundMusic.src = "music/Muriel-BobbyRichards.mp3";
@ -91,14 +113,21 @@ function init() {
};
}
function gameLoop() {
if (!gameStarted) return;
//Aku ganti function game loop that follows the 90FPS Cap rule
function gameLoop(timestamp) {
if (!gameStarted) return;
clearGame();
updateGame();
drawGame();
requestAnimationFrame(gameLoop);
if (timestamp - lastFrameTime >= frameInterval) {
lastFrameTime = timestamp;
clearGame();
updateGame();
drawGame();
}
requestAnimationFrame(gameLoop);
}
// End of 90fps mark
function keyDownPressed(e) {
if (e.keyCode == 87) {
@ -154,6 +183,8 @@ function clearGame() {
function updateGame() {
addStarField();
addShips();
player1.update();
spawnPlanet();
if (currentPlanet) currentPlanet.update();
@ -161,21 +192,38 @@ function updateGame() {
}
function drawGame() {
if (currentPlanet) currentPlanet.draw(); // planet sekarang di background
if (currentPlanet) currentPlanet.draw();
player1.draw();
enemy.draw();
enemy.update();
player1.draw();
for (var i = 0; i < missilesArray.length; i++) {
var m = missilesArray[i];
m.draw();
m.update();
}
// Enemy ships
for (var i = 0; i < enemyShipArray.length; i++) {
var s = enemyShipArray[i];
s.draw();
s.update();
if (s.x < -200) {
enemyShipArray.splice(i, 1);
i--;
}
}
// Missiles
for (var i = 0; i < missilesArray.length; i++) {
var m = missilesArray[i];
m.draw();
m.update();
if (m.x > canvasWidth) {
missilesArray.splice(i, 1);
i--;
}
}
drawNewText("Score: " + player1.score, 30, 610, "white");
drawNewText("Player Lives: " + player1.lives, 1100, 610, "white");
}
drawNewText("Score: " + player1.score, 30, 610, "white");
drawNewText("Player Lives: " + player1.lives, 1100, 610, "white");
}
function gameLoop(timestamp) {
@ -319,12 +367,13 @@ class LaserBullet {
class EnemyObj {
constructor(x, y, speed) {
constructor(x, y, speed, img) {
this.x = x;
this.y = y;
this.width = 170;
this.height = 105;
this.image = enemy1;
//gambar
this.image = img;
this.speed = speed;
this.health = 100;
this.damage = 10;
@ -340,7 +389,7 @@ class EnemyObj {
}
}
let enemy = new EnemyObj(800, 200, 12);
let enemy = new EnemyObj(800, 200, 12, enemyImgArray[0]);
class Planet {
constructor(img) {
@ -374,3 +423,16 @@ function spawnPlanet() {
currentPlanet = new Planet(randomImg);
}
}
function addShips() {
if (game.frames > 200) {
if (game.frames % 150 == 0) {
var randomY = Math.floor(Math.random() * 500) + 20;
var randomSpeed = Math.floor(Math.random() * 10) + 1;
var randomShip = Math.floor(Math.random() * enemyImgArray.length);
enemyShipArray.push(new EnemyObj(1300, randomY, randomSpeed, enemyImgArray[randomShip]));
}
}
}