-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
129 lines (93 loc) · 2.91 KB
/
script.js
File metadata and controls
129 lines (93 loc) · 2.91 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
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
var blockSize = 25;
var rows = 20;
var cols = 20;
var board ;
var context;
// ============ Initial Snake Setting ==============
var snakeX = blockSize * 5;
var snakeY = blockSize * 5;
// ============ Initial Food Setting ==============
var foodX;
var foodY;
// ======= Initial Velocity to See Visualization of Moving Snake from Left or Right on Key Press - ShowDirection ===========
var velocityX = 0;
var velocityY = 0;
// ========== Making Sanke Body ==========
var snakeBody = []
var gameOver = false
var score = 0;
var getname;
window.onload = function(){
board = document.getElementById('board')
scorebox = document.getElementById('score')
getname = document.getElementById('name')
board.style.border = '2px solid #fff'
// Taking user Name
let playerName = prompt('Enter Name and Have Fun with Your Friends !')
getname.innerHTML = playerName
board.height = rows * blockSize
board.width = cols * blockSize
context = board.getContext('2d')
foodRandomPosition()
document.addEventListener('keyup', ChangeDirection)
setInterval( update , 1000/10); //100miliseconds
}
function update(){
if(gameOver){
board.style.border = '8px solid red'
return
}
scorebox.innerHTML = score
context.fillStyle = '#1b1b1e'
context.fillRect(0,0, board.width, board.height)
context.fillStyle = 'red'
context.fillRect(foodX, foodY, blockSize , blockSize)
if(foodX === snakeX && foodY === snakeY){
snakeBody.push([snakeX , snakeY])
score +=2
foodRandomPosition()
}
for(let i=snakeBody.length-1 ;i>0;i--){
snakeBody[i] = snakeBody[i-1]
}
if(snakeBody.length){
snakeBody[0] = [snakeX, snakeY]
}
context.fillStyle = 'lime'
snakeX += velocityX * blockSize
snakeY += velocityY * blockSize
context.fillRect(snakeX, snakeY , blockSize , blockSize) //fillRect(x,y, width, height)
for(let i=0;i<snakeBody.length;i++){
context.fillRect(snakeBody[i][0], snakeBody[i][1] , blockSize, blockSize)
}
if(snakeX < 0 || snakeX >= cols* blockSize || snakeY < 0 || snakeY >= rows* blockSize ){
gameOver = true
}
for(let i=0;i<snakeBody.length ;i++){
if(snakeX === snakeBody[i][0] && snakeY === snakeBody[i][1]){
gameOver = true
}
}
}
function ChangeDirection(e){
if(e.code === 'ArrowUp' && velocityY != 1){
velocityX = 0;
velocityY = -1
}
else if(e.code === 'ArrowDown' && velocityY != -1){
velocityX = 0;
velocityY = 1
}
if(e.code === 'ArrowLeft' && velocityX != 1){
velocityX = -1;
velocityY = 0
}
if(e.code === 'ArrowRight' && velocityX != -1){
velocityX = 1;
velocityY = 0
}
}
function foodRandomPosition(){
foodX = Math.floor((Math.random() * cols )) * blockSize
foodY = Math.floor((Math.random() * rows )) * blockSize
}