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 canvasHeight = 650;
var c = undefined; var c = undefined;
var ctx = 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 = { var game = {
level: 1, level: 1,
@ -33,14 +39,30 @@ bg1.src = "img/bg_1.png";
var bg2 = new Image(); var bg2 = new Image();
bg2.src = "img/bg_2.png"; bg2.src = "img/bg_2.png";
var enemyImgArray = [];
enemyImgArray.length = 7;
var enemy1 = new Image(); var enemy1 = new Image();
enemy1.src = "img/alien_0.png"; 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 missilesArray = [];
var enemyShipArray = [];
var backgroundMusic = document.createElement("audio"); var backgroundMusic = document.createElement("audio");
backgroundMusic.src = "music/Muriel-BobbyRichards.mp3"; backgroundMusic.src = "music/Muriel-BobbyRichards.mp3";
@ -91,14 +113,21 @@ function init() {
}; };
} }
function gameLoop() { //Aku ganti function game loop that follows the 90FPS Cap rule
if (!gameStarted) return; function gameLoop(timestamp) {
if (!gameStarted) return;
clearGame(); if (timestamp - lastFrameTime >= frameInterval) {
updateGame(); lastFrameTime = timestamp;
drawGame();
requestAnimationFrame(gameLoop); clearGame();
updateGame();
drawGame();
}
requestAnimationFrame(gameLoop);
} }
// End of 90fps mark
function keyDownPressed(e) { function keyDownPressed(e) {
if (e.keyCode == 87) { if (e.keyCode == 87) {
@ -154,6 +183,8 @@ function clearGame() {
function updateGame() { function updateGame() {
addStarField(); addStarField();
addShips();
player1.update(); player1.update();
spawnPlanet(); spawnPlanet();
if (currentPlanet) currentPlanet.update(); if (currentPlanet) currentPlanet.update();
@ -161,21 +192,38 @@ function updateGame() {
} }
function drawGame() { function drawGame() {
if (currentPlanet) currentPlanet.draw(); // planet sekarang di background if (currentPlanet) currentPlanet.draw();
player1.draw(); player1.draw();
enemy.draw();
enemy.update();
for (var i = 0; i < missilesArray.length; i++) { // Enemy ships
var m = missilesArray[i]; for (var i = 0; i < enemyShipArray.length; i++) {
m.draw(); var s = enemyShipArray[i];
m.update(); 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) { function gameLoop(timestamp) {
@ -319,12 +367,13 @@ class LaserBullet {
class EnemyObj { class EnemyObj {
constructor(x, y, speed) { constructor(x, y, speed, img) {
this.x = x; this.x = x;
this.y = y; this.y = y;
this.width = 170; this.width = 170;
this.height = 105; this.height = 105;
this.image = enemy1; //gambar
this.image = img;
this.speed = speed; this.speed = speed;
this.health = 100; this.health = 100;
this.damage = 10; 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 { class Planet {
constructor(img) { constructor(img) {
@ -374,3 +423,16 @@ function spawnPlanet() {
currentPlanet = new Planet(randomImg); 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]));
}
}
}