-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
89 lines (68 loc) · 2.22 KB
/
script.js
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
var grid = []
var gridX = 5
var gridY = 5
$(document).ready(function(){
drawGrid()
randomiseGrid()
});
//Places the Grid in the Dom. This will allow me to change gridX and gridY
function drawGrid(){
for(var i=0; i< gridX; i++){
for(var j =0; j < gridY; j++){
grid.push([i,j])
$('.grid').append('<div class="grid-item" id="'+ i + '-' + j +'"></div>')
}
}
};
//Places a random amount of 'on lights' onto the grid for a starting point
function randomiseGrid(){
//how many lights should start on
var startingOn = Math.floor((Math.random() * (gridX*gridY)) +1)
//which lights should start on.
var randArray = []
for(var i = 0; i < startingOn; i++){
randArray.push(Math.floor((Math.random()* gridX*gridY)+1))
}
for(var i = 0; i < startingOn; i++ ){
randArray[i] = grid[randArray[i]]
}
//turns lights on if they are not already on.
for(var i = 0; i < startingOn; i++){
var id = '#' + randArray[i][0] + '-' + randArray[i][1]
if(! $(id).hasClass('lights-on')){
$(id).addClass('lights-on')
}
}
}
//Gets the grid-item clicked and send the coordinates off to toggle lights. Also checks and alerts end case.
$(document).on('click touchstart', '.grid-item', function(){
var id = $(this).attr('id')
id = id.split('-')
var x = parseInt(id[0])
var y = parseInt(id[1])
//toggles the state of center and North, east, south and west.
toggleState(x, y)
toggleState(x, y+1)
toggleState(x+1, y)
toggleState(x, y-1)
toggleState(x-1, y)
var endcaseY = gridY - 1
//alerts when end cases happen.
if($('div.lights-on').length == 2 && $('#'+ endcaseY + '-0').hasClass('lights-on') && $('#'+ endcaseY + '-1').hasClass('lights-on')){
alert("The game is uncompletable from here. To carry on playing, click 'new game'")
}else if($('div.lights-on').length == 0){
alert("CONGRATULATION! You have won the game. Click 'new game' to see if you can do it again!");
}
});
//starts a new game when clicked.
$(document).on('click touchstart', '#new-game', function(){
grid.length = 0
$('.grid').empty()
drawGrid()
randomiseGrid()
});
//Toggles the lights on and off
function toggleState(x, y){
var currentId = '#' + x + '-' + y
$(currentId).toggleClass('lights-on')
}