ahmadreza13 commited on
Commit
1e02ade
·
verified ·
1 Parent(s): 6856c9a

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +162 -166
index.html CHANGED
@@ -1,169 +1,165 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Pong Game</title>
7
- <style>
8
- body {
9
- margin: 0;
10
- display: flex;
11
- justify-content: center;
12
- align-items: center;
13
- height: 100vh;
14
- background-color: #000;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  }
16
- canvas {
17
- border: 2px solid #fff;
18
  }
19
- </style>
20
- </head>
21
- <body>
22
- <canvas id="pongCanvas"></canvas>
23
- <script>
24
- const canvas = document.getElementById('pongCanvas');
25
- const ctx = canvas.getContext('2d');
26
-
27
- // Set canvas dimensions
28
- canvas.width = 800;
29
- canvas.height = 600;
30
-
31
- // Ball properties
32
- const ball = {
33
- x: canvas.width / 2,
34
- y: canvas.height / 2,
35
- radius: 10,
36
- speed: 7,
37
- dx: 4,
38
- dy: -4
39
- };
40
-
41
- // Paddle properties
42
- const paddleWidth = 10;
43
- const paddleHeight = 100;
44
- const leftPaddle = {
45
- x: 0,
46
- y: (canvas.height - paddleHeight) / 2,
47
- width: paddleWidth,
48
- height: paddleHeight,
49
- speed: 8
50
- };
51
- const rightPaddle = {
52
- x: canvas.width - paddleWidth,
53
- y: (canvas.height - paddleHeight) / 2,
54
- width: paddleWidth,
55
- height: paddleHeight,
56
- speed: 8
57
- };
58
-
59
- // Player scores
60
- let leftScore = 0;
61
- let rightScore = 0;
62
-
63
- // Draw functions
64
- function drawBall() {
65
- ctx.beginPath();
66
- ctx.arc(ball.x, ball.y, ball.radius, 0, Math.PI * 2);
67
- ctx.fillStyle = '#fff';
68
- ctx.fill();
69
- ctx.closePath();
70
  }
71
-
72
- function drawPaddle(paddle) {
73
- ctx.beginPath();
74
- ctx.rect(paddle.x, paddle.y, paddle.width, paddle.height);
75
- ctx.fillStyle = '#fff';
76
- ctx.fill();
77
- ctx.closePath();
78
- }
79
-
80
- function drawScores() {
81
- ctx.font = '30px Arial';
82
- ctx.fillStyle = '#fff';
83
- ctx.fillText(leftScore, canvas.width / 4, 50);
84
- ctx.fillText(rightScore, 3 * canvas.width / 4, 50);
85
- }
86
-
87
- // Update game state
88
- function update() {
89
- // Move ball
90
- ball.x += ball.dx;
91
- ball.y += ball.dy;
92
-
93
- // Bounce ball off top and bottom walls
94
- if (ball.y + ball.radius > canvas.height || ball.y - ball.radius < 0) {
95
- ball.dy = -ball.dy;
96
- }
97
-
98
- // Bounce ball off paddles
99
- if (ball.x - ball.radius < leftPaddle.x + leftPaddle.width &&
100
- ball.y > leftPaddle.y && ball.y < leftPaddle.y + leftPaddle.height) {
101
- ball.dx = -ball.dx;
102
- }
103
- if (ball.x + ball.radius > rightPaddle.x &&
104
- ball.y > rightPaddle.y && ball.y < rightPaddle.y + rightPaddle.height) {
105
- ball.dx = -ball.dx;
106
- }
107
-
108
- // Score points
109
- if (ball.x - ball.radius < 0) {
110
- rightScore++;
111
- resetBall();
112
- }
113
- if (ball.x + ball.radius > canvas.width) {
114
- leftScore++;
115
- resetBall();
116
- }
117
-
118
- // Move paddles
119
- if (keys['ArrowUp'] && rightPaddle.y > 0) {
120
- rightPaddle.y -= rightPaddle.speed;
121
- }
122
- if (keys['ArrowDown'] && rightPaddle.y < canvas.height - rightPaddle.height) {
123
- rightPaddle.y += rightPaddle.speed;
124
- }
125
- if (keys['w'] && leftPaddle.y > 0) {
126
- leftPaddle.y -= leftPaddle.speed;
127
- }
128
- if (keys['s'] && leftPaddle.y < canvas.height - leftPaddle.height) {
129
- leftPaddle.y += leftPaddle.speed;
130
- }
131
- }
132
-
133
- // Reset ball position
134
- function resetBall() {
135
- ball.x = canvas.width / 2;
136
- ball.y = canvas.height / 2;
137
- ball.dx = -ball.dx;
138
- }
139
-
140
- // Draw everything
141
- function draw() {
142
- ctx.clearRect(0, 0, canvas.width, canvas.height);
143
- drawBall();
144
- drawPaddle(leftPaddle);
145
- drawPaddle(rightPaddle);
146
- drawScores();
147
- }
148
-
149
- // Game loop
150
- function gameLoop() {
151
- update();
152
- draw();
153
- requestAnimationFrame(gameLoop);
154
- }
155
-
156
- // Key handling
157
- const keys = {};
158
- document.addEventListener('keydown', function(e) {
159
- keys[e.key] = true;
160
- });
161
- document.addEventListener('keyup', function(e) {
162
- delete keys[e.key];
163
- });
164
-
165
- // Start the game
166
- gameLoop();
167
- </script>
168
- </body>
169
- </html>
 
1
+ const canvas = document.getElementById('pongCanvas');
2
+ const ctx = canvas.getContext('2d');
3
+
4
+ // Set canvas dimensions
5
+ canvas.width = 800;
6
+ canvas.height = 600;
7
+
8
+ // Ball properties
9
+ const ball = {
10
+ x: canvas.width / 2,
11
+ y: canvas.height / 2,
12
+ radius: 10,
13
+ speed: 7,
14
+ dx: 4,
15
+ dy: -4
16
+ };
17
+
18
+ // Paddle properties
19
+ const paddleWidth = 10;
20
+ const paddleHeight = 100;
21
+ const leftPaddle = {
22
+ x: 0,
23
+ y: (canvas.height - paddleHeight) / 2,
24
+ width: paddleWidth,
25
+ height: paddleHeight,
26
+ speed: 8
27
+ };
28
+ const rightPaddle = {
29
+ x: canvas.width - paddleWidth,
30
+ y: (canvas.height - paddleHeight) / 2,
31
+ width: paddleWidth,
32
+ height: paddleHeight,
33
+ speed: 8
34
+ };
35
+
36
+ // Player scores
37
+ let leftScore = 0;
38
+ let rightScore = 0;
39
+
40
+ // Game mode
41
+ let isPlayerVsAI = false;
42
+
43
+ // Draw functions
44
+ function drawBall() {
45
+ ctx.beginPath();
46
+ ctx.arc(ball.x, ball.y, ball.radius, 0, Math.PI * 2);
47
+ ctx.fillStyle = '#fff';
48
+ ctx.fill();
49
+ ctx.closePath();
50
+ }
51
+
52
+ function drawPaddle(paddle) {
53
+ ctx.beginPath();
54
+ ctx.rect(paddle.x, paddle.y, paddle.width, paddle.height);
55
+ ctx.fillStyle = '#fff';
56
+ ctx.fill();
57
+ ctx.closePath();
58
+ }
59
+
60
+ function drawScores() {
61
+ ctx.font = '30px Arial';
62
+ ctx.fillStyle = '#fff';
63
+ ctx.fillText(leftScore, canvas.width / 4, 50);
64
+ ctx.fillText(rightScore, 3 * canvas.width / 4, 50);
65
+ }
66
+
67
+ // Update game state
68
+ function update() {
69
+ // Move ball
70
+ ball.x += ball.dx;
71
+ ball.y += ball.dy;
72
+
73
+ // Bounce ball off top and bottom walls
74
+ if (ball.y + ball.radius > canvas.height || ball.y - ball.radius < 0) {
75
+ ball.dy = -ball.dy;
76
+ }
77
+
78
+ // Bounce ball off paddles
79
+ if (ball.x - ball.radius < leftPaddle.x + leftPaddle.width &&
80
+ ball.y > leftPaddle.y && ball.y < leftPaddle.y + leftPaddle.height) {
81
+ ball.dx = -ball.dx;
82
+ }
83
+ if (ball.x + ball.radius > rightPaddle.x &&
84
+ ball.y > rightPaddle.y && ball.y < rightPaddle.y + rightPaddle.height) {
85
+ ball.dx = -ball.dx;
86
+ }
87
+
88
+ // Score points
89
+ if (ball.x - ball.radius < 0) {
90
+ rightScore++;
91
+ resetBall();
92
+ }
93
+ if (ball.x + ball.radius > canvas.width) {
94
+ leftScore++;
95
+ resetBall();
96
+ }
97
+
98
+ // Move paddles
99
+ if (!isPlayerVsAI) {
100
+ if (keys['ArrowUp'] && rightPaddle.y > 0) {
101
+ rightPaddle.y -= rightPaddle.speed;
102
  }
103
+ if (keys['ArrowDown'] && rightPaddle.y < canvas.height - rightPaddle.height) {
104
+ rightPaddle.y += rightPaddle.speed;
105
  }
106
+ } else {
107
+ // AI logic
108
+ if (rightPaddle.y + rightPaddle.height / 2 < ball.y) {
109
+ rightPaddle.y += rightPaddle.speed;
110
+ } else if (rightPaddle.y + rightPaddle.height / 2 > ball.y) {
111
+ rightPaddle.y -= rightPaddle.speed;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  }
113
+ }
114
+
115
+ if (keys['w'] && leftPaddle.y > 0) {
116
+ leftPaddle.y -= leftPaddle.speed;
117
+ }
118
+ if (keys['s'] && leftPaddle.y < canvas.height - leftPaddle.height) {
119
+ leftPaddle.y += leftPaddle.speed;
120
+ }
121
+ }
122
+
123
+ // Reset ball position
124
+ function resetBall() {
125
+ ball.x = canvas.width / 2;
126
+ ball.y = canvas.height / 2;
127
+ ball.dx = -ball.dx;
128
+ }
129
+
130
+ // Draw everything
131
+ function draw() {
132
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
133
+ drawBall();
134
+ drawPaddle(leftPaddle);
135
+ drawPaddle(rightPaddle);
136
+ drawScores();
137
+ }
138
+
139
+ // Game loop
140
+ function gameLoop() {
141
+ update();
142
+ draw();
143
+ requestAnimationFrame(gameLoop);
144
+ }
145
+
146
+ // Key handling
147
+ const keys = {};
148
+ document.addEventListener('keydown', function(e) {
149
+ keys[e.key] = true;
150
+ });
151
+ document.addEventListener('keyup', function(e) {
152
+ delete keys[e.key];
153
+ });
154
+
155
+ // Button event listeners
156
+ document.getElementById('playerVsPlayer').addEventListener('click', function() {
157
+ isPlayerVsAI = false;
158
+ });
159
+
160
+ document.getElementById('playerVsAI').addEventListener('click', function() {
161
+ isPlayerVsAI = true;
162
+ });
163
+
164
+ // Start the game
165
+ gameLoop();