-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsnake.js
127 lines (123 loc) · 4.38 KB
/
snake.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
window.onload = function() {
var table = document.getElementById("board");
for( var i = 0; i < 10; i++ ){
var row = document.createElement("tr");
for( var j = 0; j < 19; j++ ){
var col = document.createElement("td");
col.innerHTML = ' ';
col.setAttribute("id",i.toString(10)+':'+j.toString(10));
row.appendChild(col);
}
table.appendChild(row);
}
};
var kiirus=500;
function kiire(k){
kiirus = k;
}
var button = 1;
document.addEventListener('keydown', function(event) {
if (event.keyCode == 37) {
button = 4;
} else if (event.keyCode == 38) {
button = 1;
} else if (event.keyCode == 39) {
button = 2;
} else if (event.keyCode == 40) {
button = 3;
}
}, true);
async function game(){
var X = 10;
var Y = 19;
var s = [[5,5]];
var sdir = 0;
var score = 0;
var board = [['X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X'],
['X',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','X'],
['X',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','X'],
['X',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','X'],
['X',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','X'],
['X',' ',' ',' ',' ','S',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','X'],
['X',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','X'],
['X',' ','B',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','X'],
['X',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','X'],
['X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X']];
var over = 0;
while (!over){
var valik = 0;
sdir = button-1;
if (sdir == 0){
var sqval = board[s[0][0]-1][s[0][1]];
if (sqval == 'X' || sqval == 'S'){
over = 1;
} else if (sqval == 'B'){
valik = 1;
s.unshift([s[0][0]-1,s[0][1]]);
} else {
valik = 2;
s.unshift([s[0][0]-1,s[0][1]]);
}
} else if (sdir == 1){
var sqval = board[s[0][0]][s[0][1]+1];
if (sqval == 'X' || sqval == 'S'){
over = 1;
} else if (sqval == 'B'){
valik = 1;
s.unshift([s[0][0],s[0][1]+1]);
} else {
valik = 2;
s.unshift([s[0][0],s[0][1]+1]);
}
} else if (sdir == 2){
var sqval = board[s[0][0]+1][s[0][1]];
if (sqval == 'X' || sqval == 'S'){
over = 1;
} else if (sqval == 'B'){
valik = 1;
s.unshift([s[0][0]+1,s[0][1]]);
} else {
valik = 2;
s.unshift([s[0][0]+1,s[0][1]]);
}
} else if (sdir == 3){
var sqval = board[s[0][0]][s[0][1]-1];
if (sqval == 'X' || sqval == 'S'){
over = 1;
} else if (sqval == 'B'){
valik = 1;
s.unshift([s[0][0],s[0][1]-1]);
} else {
valik = 2;
s.unshift([s[0][0],s[0][1]-1]);
}
}
if (valik == 1){
score = score +1;
board[s[0][0]][s[0][1]] = 'S';
var a = Math.floor((Math.random()*9));
var b = Math.floor((Math.random()*9));
while (board[a+1][b+1]!=' '){
a = Math.floor((Math.random()*9));
b = Math.floor((Math.random()*9));
}
board[a+1][b+1]='B';
} else if (valik == 2){
board[s[0][0]][s[0][1]] = 'S';
board[s[s.length-1][0]][s[s.length-1][1]] = ' ';
s.pop();
}
for (var i=0;i<X;i++){
for (var j=0;j<Y;j++){
var el = document.getElementById(i.toString(10)+":"+j.toString(10));
el.innerHTML = board[i][j];
}
}
var sc = document.getElementById("score");
sc.innerHTML = "Score: "+score.toString(10);
await sleep(kiirus);
}
}