-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
118 lines (102 loc) · 2.91 KB
/
main.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
/*
TODO
1. Ball collision off of the ceiling
2. Control (player / computer -- choose one) of paddle two
3. Display and track scores (ball should reset after score)
4. Ball-paddle collisions (tricky!)
*/
var paddle_1_element = document.getElementById("paddle_1");
var paddle_1_model = {
x: 20,
y: 200
};
var paddle_2_element = document.getElementById("paddle_2");
var paddle_2_model = {
x: 760,
y: 200
};
var ball_element = document.getElementById("ball");
var ball_model = {
x: 300,
y: 300,
vx: -5,
vy: 5
}
var player_1_score_element = document.getElementById("player_1_score");
var player_1_score = 0;
var player_2_score_element = document.getElementById("player_2_score");
var player_2_score = 0;
function onMouseMove(evt) {
paddle_1_model.y = evt.pageY - evt.target.offsetTop - 50;
}
function reset(){
paddle_1_model.x = 20;
paddle_2_model.x = 760;
paddle_1_model.y = 200;
paddle_2_model.y = 200;
ball_model.x = 300;
ball_model.y = 300;
ball_model.vy = 5;
ball_model.vx = 5;
}
//update
function update(){
if ((ball_model.x + 20 > paddle_1_model.x) && (ball_model.x < paddle_1_model.x + 20)){
if((ball_model.y < paddle_1_model.y+100) && (ball_model.y
+20 > paddle_1_model.y)){
ball_model.vx = ball_model.vx * -1;
}
}
if ((ball_model.x + 20 > paddle_2_model.x) && (ball_model.x < paddle_2_model.x+20)){
if((ball_model.y < paddle_2_model.y+100) && (ball_model.y +20> paddle_2_model.y)){
ball_model.vx = ball_model.vx * -1;
}
}
//update the ball model position
ball_model.x = ball_model.x + ball_model.vx;
ball_model.y = ball_model.y + ball_model.vy;
//check if the ball is colliding with the edge
if (ball_model.y > 580 || ball_model.y < 20) {
//bottom edge
//flip the y direction
ball_model.vy = ball_model.vy * -1;
}
if (ball_model.x > 799){
player_1_score = player_1_score + 1;
reset();
}
if (ball_model.x < 1){
player_2_score = player_2_score +1;
reset();
}
}
//draw
function draw() {
//draw paddle 1
paddle_1_element.style.top = paddle_1_model.y + "px";
paddle_1_element.style.left = paddle_1_model.x + "px";
//draw paddle 2
paddle_2_element.style.top = paddle_2_model.y + "px";
paddle_2_element.style.left = paddle_2_model.x + "px";
//draw the ball
ball_element.style.top = ball_model.y + "px";
ball_element.style.left = ball_model.x + "px";
//draw the players' scores
player_1_score_element.innerHTML = player_1_score;
player_2_score_element.innerHTML = player_2_score;
}
function loop() {
update();
draw();
}
document.getElementById("screen").onmousemove = onMouseMove;
setInterval(loop, 1000/30);
document.addEventListener('keydown', function(event){
if (event.keyCode === 38){
event.preventDefault();
paddle_2_model.y = paddle_2_model.y-20;
} else if(event.keyCode === 40){
event.preventDefault();
paddle_2_model.y = paddle_2_model.y+20;
}
});