-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmaze.js
More file actions
96 lines (92 loc) · 3.7 KB
/
maze.js
File metadata and controls
96 lines (92 loc) · 3.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
var game;
var maze = [];
var mazeWidth = 81;
var mazeHeight = 61;
var tileSize = 10;
var mazeGraphics;
window.onload = function() {
game = new Phaser.Game(810, 610, Phaser.CANVAS, "");
game.state.add("PlayGame",playGame);
game.state.start("PlayGame");
}
var playGame = function(game){};
playGame.prototype = {
create: function(){
mazeGraphics = game.add.graphics(0, 0);
var moves = [];
for(var i = 0; i < mazeHeight; i ++){
maze[i] = [];
for(var j = 0; j < mazeWidth; j ++){
maze[i][j] = 1;
}
}
var posX = 1;
var posY = 1;
maze[posX][posY] = 0;
moves.push(posY + posY * mazeWidth);
game.time.events.loop(Phaser.Timer.SECOND/25, function(){
if(moves.length){
var possibleDirections = "";
if(posX+2 > 0 && posX + 2 < mazeHeight - 1 && maze[posX + 2][posY] == 1){
possibleDirections += "S";
}
if(posX-2 > 0 && posX - 2 < mazeHeight - 1 && maze[posX - 2][posY] == 1){
possibleDirections += "N";
}
if(posY-2 > 0 && posY - 2 < mazeWidth - 1 && maze[posX][posY - 2] == 1){
possibleDirections += "W";
}
if(posY+2 > 0 && posY + 2 < mazeWidth - 1 && maze[posX][posY + 2] == 1){
possibleDirections += "E";
}
if(possibleDirections){
var move = game.rnd.between(0, possibleDirections.length - 1);
switch (possibleDirections[move]){
case "N":
maze[posX - 2][posY] = 0;
maze[posX - 1][posY] = 0;
posX -= 2;
break;
case "S":
maze[posX + 2][posY] = 0;
maze[posX + 1][posY] = 0;
posX += 2;
break;
case "W":
maze[posX][posY - 2] = 0;
maze[posX][posY - 1] = 0;
posY -= 2;
break;
case "E":
maze[posX][posY + 2]=0;
maze[posX][posY + 1]=0;
posY += 2;
break;
}
moves.push(posY + posX * mazeWidth);
}
else{
var back = moves.pop();
posX = Math.floor(back / mazeWidth);
posY = back % mazeWidth;
}
drawMaze(posX, posY);
}
}, this);
}
}
function drawMaze(posX, posY){
mazeGraphics.clear();
mazeGraphics.beginFill(0xcccccc);
for(i = 0; i < mazeHeight; i ++){
for(j = 0; j < mazeWidth; j ++){
if(maze[i][j] == 1){
mazeGraphics.drawRect(j * tileSize, i * tileSize, tileSize, tileSize);
}
}
}
mazeGraphics.endFill();
mazeGraphics.beginFill(0xff0000);
mazeGraphics.drawRect(posY * tileSize, posX * tileSize, tileSize, tileSize);
mazeGraphics.endFill();
}