Initialize game engine
This commit is contained in:
commit
2e6f017adc
119
game.js
Normal file
119
game.js
Normal file
@ -0,0 +1,119 @@
|
||||
var canvas;
|
||||
|
||||
const WAITING = 0;
|
||||
const RUNNING = 1;
|
||||
|
||||
const UP = 0;
|
||||
const RIGHT = 1;
|
||||
const DOWN = 2;
|
||||
const LEFT = 3;
|
||||
|
||||
const RED = 0;
|
||||
const BLUE = 1;
|
||||
const GREEN = 2;
|
||||
const YELLOW = 3;
|
||||
const PURPLE = 4;
|
||||
const PINK = 5;
|
||||
const BLACK = 6;
|
||||
const GRAY = 7;
|
||||
|
||||
var BOT_X = 0
|
||||
var BOT_Y = 0
|
||||
var BOT_DIR = RIGHT
|
||||
|
||||
var BELTDOWN = {type:"BELT",direction:DOWN/*,direction2 - defines a secondary direction. For two belts at once.*/}
|
||||
var BELTRIGHT = {type:"BELT",direction:RIGHT}
|
||||
var BELTUP = {type:"BELT",direction:UP}
|
||||
var BELTLEFT = {type:"BELT",direction:LEFT}
|
||||
var BRANCHDOWN = {type:"BRANCH",direction:DOWN,color1:RED,color2:BLUE} //color 1 points left, color 2 points right
|
||||
var BRANCHLEFT = {type:"BRANCH",direction:LEFT,color1:RED,color2:BLUE}
|
||||
var BRANCHRIGHT = {type:"BRANCH",direction:RIGHT,color1:RED,color2:BLUE}
|
||||
var BRANCHUP = {type:"BRANCH",direction:UP,color1:RED,color2:BLUE}
|
||||
var WRITERDOWN = {type:"WRITER",direction:DOWN,color1:RED,color2:BLUE} //color 1 points left, color 2 points right
|
||||
var WRITERLEFT = {type:"WRITER",direction:LEFT,color1:RED,color2:BLUE}
|
||||
var WRITERRIGHT = {type:"WRITER",direction:RIGHT,color1:RED,color2:BLUE}
|
||||
var WRITERUP = {type:"WRITER",direction:UP,color1:RED,color2:BLUE}
|
||||
|
||||
|
||||
var lastGameUpdate = 0;
|
||||
var gameSpeed = 1000/1;
|
||||
|
||||
var gameState=WAITING;
|
||||
|
||||
var LEVEL1 = [
|
||||
[{},{},{...BELTDOWN},{...BELTLEFT},{...BELTLEFT},],
|
||||
[{},{},{},{},BELTUP,],
|
||||
[{},{...BELTDOWN},{},{},{...BELTUP},],
|
||||
[{},{...BELTRIGHT},{...BELTRIGHT},{...BELTRIGHT},{...BELTUP},],
|
||||
[{},{},{},{},{},],]
|
||||
|
||||
var gameGrid= []
|
||||
|
||||
function createGrid(width,height) {
|
||||
var grid = []
|
||||
for (var i=0;i<width;i++) {
|
||||
var row = []
|
||||
for (var j=0;j<height;j++) {
|
||||
row.push({})
|
||||
}
|
||||
grid.push(row)
|
||||
}
|
||||
return grid
|
||||
}
|
||||
|
||||
function runBot() {
|
||||
//console.log(new Date().getTime())
|
||||
if (lastGameUpdate<new Date().getTime()) {
|
||||
//console.log("Update")
|
||||
lastGameUpdate=new Date().getTime()+gameSpeed
|
||||
|
||||
var nextSquare = {}
|
||||
switch (BOT_DIR) {
|
||||
case UP:{nextSquare = grid[y-1][x];BOT_Y--}break;
|
||||
case LEFT:{nextSquare = grid[y][x-1];BOT_X--}break;
|
||||
case RIGHT:{nextSquare = grid[y][x+1];BOT_X++}break;
|
||||
case DOWN:{nextSquare = grid[y+1][x];BOT_Y++}break;
|
||||
}
|
||||
if (nextSquare.direction) {
|
||||
BOT_DIR = nextSquare.direction
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function placeBot(x,y) {
|
||||
BOT_X = x
|
||||
BOT_Y = y
|
||||
}
|
||||
|
||||
function setupGame() {
|
||||
canvas = document.createElement("CANVAS");
|
||||
canvas.style.width="100%"
|
||||
canvas.style.height="100%"
|
||||
document.getElementById("game").appendChild(canvas)
|
||||
|
||||
gameGrid = [...createGrid(5,5)]
|
||||
placeBot(0,2)
|
||||
console.log(gameGrid)
|
||||
}
|
||||
|
||||
function step() {
|
||||
if (gameState===RUNNING) {
|
||||
runBot()
|
||||
}
|
||||
}
|
||||
|
||||
function draw() {
|
||||
var ctx = canvas.getContext("2d")
|
||||
ctx.fillStyle="#FFF"
|
||||
ctx.fillRect(0,0,canvas.width,canvas.height)
|
||||
ctx.beginPath();
|
||||
|
||||
ctx.stroke();
|
||||
}
|
||||
|
||||
setupGame();
|
||||
setInterval(()=>{
|
||||
step()
|
||||
draw()
|
||||
},1000/60)
|
||||
console.log("Running")
|
4
index.html
Normal file
4
index.html
Normal file
@ -0,0 +1,4 @@
|
||||
<body>
|
||||
<div id="game"></div>
|
||||
<script type="text/javascript" src="game.js"></script>
|
||||
</body>
|
Loading…
x
Reference in New Issue
Block a user