This repository has been archived on 2025-11-09. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
i2cs-webgame/BreadEat/sources/game.js
蓝冰记忆 97c8f6e38b 初始化
翻到了就再上传一下吧,于我而言意义不大了但或许有人需要呢
2025-11-09 13:49:27 +08:00

135 lines
5.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Patameters for the game
var interv_gen_breads = 200, // How long it takes to generate the next eater, ms
interv_refresh = 20, // Refresh Interval, ms
speed_breads = 10; // px, The move speed of breads per REFRESH
// To set parameters manually
function set(b, c, e) {
interv_gen_breads = b;
interv_refresh = c;
speed_breads = e;
return ({
Interval_Generate_breads : interv_gen_breads,
Interval_Refresh : interv_refresh,
Speed_Of_breads : speed_breads
});
}
function closeIntro() {
document.getElementById('status').style.opacity = 1;
document.getElementById('status').innerText = "Ready...";
document.getElementById('intro').style.opacity = 0;
}
var timeRemain, stopCode_countDown;
function gamemode(mode) {
if (mode === 0) {
timeRemain = 60;
gameInitialize()
gameStart();
document.getElementById('CountDown').style.opacity = .5;
document.getElementById('CountDown').innerText = timeRemain;
document.getElementById('Control').style.display = "none";
document.getElementById('GameMode').style.display = "none";
// setTimeout(function(){
// gameStop();
// }, 60000);
stopCode_countDown = setInterval(function(){
if (timeRemain === 0) {
document.getElementById('CountDown').innerText = "";
document.getElementById('Control').style.display = "block";
document.getElementById('GameMode').style.display = "block";
window.clearInterval(stopCode_countDown);
gameStop();
document.getElementById('status').innerText = "Timed Out !!";
} else {
document.getElementById('CountDown').innerText = timeRemain;
}
timeRemain--;
}, 1000);
}
}
// Necessary varibles
var stopCode_genbreads, stopCode_Refresh,
// Regard items as boxes
round_eater = 108, // px
width_bread = 21.6, // px
height_bread = 36, // px
eater = document.getElementById('eater');
// Necessary functions
document.onmousemove = function(e) {
e = e || window.event;
eater.style.left = e.clientX - round_eater / 2 + "px";
};
// Necessary general varibles
var obj_gameBoard = document.getElementById('gameBoard'),
bread = new Array();
// Core functions
function func_gen_breads() {
var this_bread = document.createElement("div");
this_bread.setAttribute("class", "breads");
this_bread.style.left = Math.random() * (document.body.clientWidth - round_eater) + 'px';
this_bread.style.top = "0";
this_bread.innerHTML = '<img src="./sources/img/bread.png" />';
obj_gameBoard.appendChild(this_bread);
bread.push(this_bread);
}
function func_refresh() {
for (var i = 0; i < bread.length; i++) {
bread[i].style.top = parseInt(bread[i].style.top) + speed_breads + "px";
if ((Math.abs(parseInt(bread[i].style.left) - parseInt(eater.style.left)) <= ((round_eater + width_bread) / 2))
// && (Math.abs(parseInt(bread[i].style.top) - window.outerHeight + parseInt(eater.style.bottom)) <= ((round_eater + width_bread) / 2))) {
&& parseInt(bread[i].style.top) + height_bread >= (window.outerHeight - 50 - parseInt(eater.style.bottom) - round_eater) // 50为误差补偿不一定准确
&& parseInt(bread[i].style.top) < (window.outerHeight - parseInt(eater.style.bottom) - round_eater) ) {
obj_gameBoard.removeChild(bread[i]);
bread.splice(i, 1);
document.getElementById('scoreBoard').innerText = parseInt(document.getElementById('scoreBoard').innerText) + 1;
} else if (parseInt(bread[i].style.top) >= window.outerHeight) {
obj_gameBoard.removeChild(bread[i]);
bread.splice(i, 1);
}
}
}
function gameStart() {
document.getElementById('CountDown').style.opacity = 0;
document.getElementById('CountDown').innerText = "";
gameStop();
// if (document.getElementById('intro').style.opacity != 0) {
// document.getElementById('intro').style.opacity = 0;
// }
document.getElementById('status').innerText = "Game Start !!!";
setTimeout(function(){
document.getElementById('status').style.opacity = 0;
}, 500);
document.getElementById('Control').style.opacity = .3;
stopCode_genbreads = setInterval(function(){func_gen_breads();}, interv_gen_breads);
stopCode_Refresh = setInterval(function(){func_refresh();}, interv_refresh);
}
function gameStop() {
closeIntro();
document.getElementById('status').style.opacity = 1;
document.getElementById('status').innerText = "PAUSE";
document.getElementById('Control').style.opacity = 1;
window.clearInterval(stopCode_genbreads);
window.clearInterval(stopCode_Refresh);
}
function gameInitialize() {
gameStop();
document.getElementById('status').style.opacity = 1;
document.getElementById('status').innerText = "Ready...";
document.getElementById('Control').style.opacity = 1;
while (bread.length) {
obj_gameBoard.removeChild(bread[0]);
bread.splice(0, 1);
}
bread = new Array();
document.getElementById('scoreBoard').innerText = "0";
}