Stanley's update
This commit is contained in:
parent
807dbe828b
commit
64dae6aa8c
108
Script.js
108
Script.js
@ -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]));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user