-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
62 lines (57 loc) · 2.58 KB
/
app.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
$(() => {
// Get Element
const $container = $('.container');
const $square = $('.square');
let marker = ['cross', 'circle', 'cross', 'circle', 'cross', 'circle', 'cross', 'circle', 'cross'];
const markerSaved = ['cross', 'circle', 'cross', 'circle', 'cross', 'circle', 'cross', 'circle', 'cross'];
const $reset = $('.reset');
// Event Handlers
const mark = (event) => {
if (!($(event.target).hasClass('cross') || ($(event.target).hasClass('circle')))) {
$(event.target).addClass(marker[0]);
if (winCondition(marker[0])) {
$('.victory').css('display', 'block');
$('.victory strong').text(marker[0]);
$square.unbind('click', mark);
}
marker.shift();
if (marker.length === 0) {
$('.draw').css('display', 'block');
$square.unbind('click', mark);
}
}
}
const winCondition = (i) => {
let won = false;
if($container.children().eq(0).hasClass(i) && $container.children().eq(1).hasClass(i) && $container.children().eq(2).hasClass(i)) {
won = true;
} else if ($container.children().eq(3).hasClass(i) && $container.children().eq(4).hasClass(i) && $container.children().eq(5).hasClass(i)) {
won = true;
} else if ($container.children().eq(6).hasClass(i) && $container.children().eq(7).hasClass(i) && $container.children().eq(8).hasClass(i)) {
won = true;
} else if ($container.children().eq(0).hasClass(i) && $container.children().eq(4).hasClass(i) && $container.children().eq(8).hasClass(i)) {
won = true;
} else if ($container.children().eq(2).hasClass(i) && $container.children().eq(4).hasClass(i) && $container.children().eq(6).hasClass(i)) {
won = true;
} else if ($container.children().eq(0).hasClass(i) && $container.children().eq(3).hasClass(i) && $container.children().eq(6).hasClass(i)) {
won = true;
} else if ($container.children().eq(1).hasClass(i) && $container.children().eq(4).hasClass(i) && $container.children().eq(7).hasClass(i)) {
won = true;
} else if ($container.children().eq(2).hasClass(i) && $container.children().eq(5).hasClass(i) && $container.children().eq(8).hasClass(i)) {
won = true;
}
return won;
}
const reset = () => {
marker = markerSaved.slice(0)
$square
.removeClass('circle')
.removeClass('cross')
.bind('click', mark)
$('.draw').css('display', 'none');
$('.victory').css('display', 'none');
}
// Event Listeners
$square.on('click', mark);
$reset.on('click', reset);
})