GarGerry commited on
Commit
4ab792f
·
verified ·
1 Parent(s): 205773b

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +106 -36
index.html CHANGED
@@ -11,10 +11,12 @@
11
  <div class="ball"></div>
12
  <div class="platform"></div>
13
  <div class="score-board">Score: <span id="score">0</span></div>
 
14
  </div>
15
  <div class="controls">
16
  <button id="left-button">◀</button>
17
  <button id="right-button">▶</button>
 
18
  </div>
19
  <script>
20
  const platform = document.querySelector('.platform');
@@ -22,12 +24,53 @@
22
  const leftButton = document.getElementById('left-button');
23
  const rightButton = document.getElementById('right-button');
24
  const scoreDisplay = document.getElementById('score');
 
 
25
  const gameContainer = document.querySelector('.game-container');
26
 
27
- let platformPosition = 50; // Platform awal di tengah.
28
- let ballPosition = { top: 0, left: Math.random() * 90 }; // Bola muncul secara acak.
29
- let isCaught = false; // Apakah bola ditangkap.
30
- let score = 0; // Skor awal.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
  // Fungsi untuk memindahkan platform ke kiri
33
  function movePlatformLeft() {
@@ -45,66 +88,93 @@
45
  platform.style.left = platformPosition + '%';
46
  }
47
 
48
- // Keyboard controls
49
  window.addEventListener('keydown', (e) => {
50
  if (e.key === 'ArrowLeft') movePlatformLeft();
51
  if (e.key === 'ArrowRight') movePlatformRight();
52
  });
53
 
54
- // Button controls
55
  leftButton.addEventListener('click', movePlatformLeft);
56
  rightButton.addEventListener('click', movePlatformRight);
57
 
58
- // Mouse/Touch controls
59
- gameContainer.addEventListener('mousemove', (e) => {
60
- const containerWidth = gameContainer.offsetWidth;
61
- platformPosition = (e.clientX / containerWidth) * 100;
62
- platform.style.left = platformPosition + '%';
63
- });
64
-
65
- gameContainer.addEventListener('touchmove', (e) => {
66
- const touch = e.touches[0];
67
- const containerWidth = gameContainer.offsetWidth;
68
- platformPosition = (touch.clientX / containerWidth) * 100;
69
- platform.style.left = platformPosition + '%';
70
- });
71
-
72
  // Fungsi untuk menggerakkan bola
73
  function moveBall() {
74
- if (isCaught) return; // Jangan lanjut jika bola ditangkap.
75
- ballPosition.top += 2; // Bola turun.
 
76
  ball.style.top = ballPosition.top + '%';
77
  ball.style.left = ballPosition.left + '%';
78
 
79
- // Deteksi tabrakan (collision detection)
80
  if (ballPosition.top >= 90 && Math.abs(ballPosition.left - platformPosition) < 10) {
81
  isCaught = true;
82
- score++; // Tambahkan skor.
83
- scoreDisplay.textContent = score; // Update skor di layar.
84
- resetGame();
85
  }
86
 
87
- // Game over jika bola melewati platform
88
  if (ballPosition.top >= 100) {
89
  if (!isCaught) {
90
- alert('Game Over! Final Score: ' + score);
91
- score = 0; // Reset skor.
92
- scoreDisplay.textContent = score; // Update skor.
 
 
 
93
  }
94
- resetGame();
95
  }
96
 
 
97
  requestAnimationFrame(moveBall);
98
  }
99
 
100
- // Fungsi untuk mereset permainan
101
- function resetGame() {
102
  isCaught = false;
103
- ballPosition = { top: 0, left: Math.random() * 90 }; // Bola muncul ulang.
104
  }
105
 
106
- // Memulai permainan
107
- moveBall();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  </script>
109
  </body>
110
  </html>
 
11
  <div class="ball"></div>
12
  <div class="platform"></div>
13
  <div class="score-board">Score: <span id="score">0</span></div>
14
+ <div class="lives">Lives: <span id="lives">3</span></div>
15
  </div>
16
  <div class="controls">
17
  <button id="left-button">◀</button>
18
  <button id="right-button">▶</button>
19
+ <button id="pause-button">Pause</button>
20
  </div>
21
  <script>
22
  const platform = document.querySelector('.platform');
 
24
  const leftButton = document.getElementById('left-button');
25
  const rightButton = document.getElementById('right-button');
26
  const scoreDisplay = document.getElementById('score');
27
+ const livesDisplay = document.getElementById('lives');
28
+ const pauseButton = document.getElementById('pause-button');
29
  const gameContainer = document.querySelector('.game-container');
30
 
31
+ let platformPosition = 50; // Posisi platform di tengah
32
+ let ballPosition = { top: 0, left: Math.random() * 90 }; // Bola mulai di posisi acak
33
+ let score = 0; // Skor
34
+ let lives = 3; // Nyawa
35
+ let isCaught = false; // Status tangkap bola
36
+ let gamePaused = false; // Status pause
37
+ let ballSpeed = 2; // Kecepatan bola
38
+ let level = 1; // Level permainan
39
+ let timer = 30; // Timer permainan
40
+
41
+ // Display level dan timer
42
+ const levelDisplay = document.createElement('div');
43
+ levelDisplay.textContent = `Level: ${level}`;
44
+ levelDisplay.style.position = 'absolute';
45
+ levelDisplay.style.top = '10px';
46
+ levelDisplay.style.right = '10px';
47
+ levelDisplay.style.fontSize = '1.5em';
48
+ levelDisplay.style.color = '#ffffff';
49
+ levelDisplay.style.background = 'rgba(0, 0, 0, 0.5)';
50
+ levelDisplay.style.padding = '10px';
51
+ document.body.appendChild(levelDisplay);
52
+
53
+ const timerDisplay = document.createElement('div');
54
+ timerDisplay.textContent = `Time: ${timer}s`;
55
+ timerDisplay.style.position = 'absolute';
56
+ timerDisplay.style.top = '40px';
57
+ timerDisplay.style.right = '10px';
58
+ timerDisplay.style.fontSize = '1.5em';
59
+ timerDisplay.style.color = '#ffffff';
60
+ timerDisplay.style.background = 'rgba(0, 0, 0, 0.5)';
61
+ timerDisplay.style.padding = '10px';
62
+ document.body.appendChild(timerDisplay);
63
+
64
+ // Pause Functionality
65
+ pauseButton.addEventListener('click', () => {
66
+ gamePaused = !gamePaused;
67
+ if (gamePaused) {
68
+ pauseButton.textContent = 'Resume';
69
+ } else {
70
+ pauseButton.textContent = 'Pause';
71
+ moveBall(); // Continue game after pause
72
+ }
73
+ });
74
 
75
  // Fungsi untuk memindahkan platform ke kiri
76
  function movePlatformLeft() {
 
88
  platform.style.left = platformPosition + '%';
89
  }
90
 
91
+ // Kontrol keyboard
92
  window.addEventListener('keydown', (e) => {
93
  if (e.key === 'ArrowLeft') movePlatformLeft();
94
  if (e.key === 'ArrowRight') movePlatformRight();
95
  });
96
 
97
+ // Kontrol tombol
98
  leftButton.addEventListener('click', movePlatformLeft);
99
  rightButton.addEventListener('click', movePlatformRight);
100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  // Fungsi untuk menggerakkan bola
102
  function moveBall() {
103
+ if (gamePaused) return; // Jangan jalankan permainan jika di-pause
104
+
105
+ ballPosition.top += ballSpeed;
106
  ball.style.top = ballPosition.top + '%';
107
  ball.style.left = ballPosition.left + '%';
108
 
109
+ // Deteksi tabrakan
110
  if (ballPosition.top >= 90 && Math.abs(ballPosition.left - platformPosition) < 10) {
111
  isCaught = true;
112
+ score++;
113
+ scoreDisplay.textContent = score;
114
+ resetBall();
115
  }
116
 
117
+ // Game Over jika bola jatuh tanpa ditangkap
118
  if (ballPosition.top >= 100) {
119
  if (!isCaught) {
120
+ lives--;
121
+ livesDisplay.textContent = `Lives: ${lives}`;
122
+ if (lives <= 0) {
123
+ alert(`Game Over! Final Score: ${score}`);
124
+ resetGame();
125
+ }
126
  }
127
+ resetBall();
128
  }
129
 
130
+ updateLevel(); // Perbarui level setelah mencapai skor tertentu
131
  requestAnimationFrame(moveBall);
132
  }
133
 
134
+ // Fungsi untuk mereset bola
135
+ function resetBall() {
136
  isCaught = false;
137
+ ballPosition = { top: 0, left: Math.random() * 90 };
138
  }
139
 
140
+ // Fungsi untuk memperbarui level
141
+ function updateLevel() {
142
+ if (score >= level * 10) {
143
+ level++;
144
+ levelDisplay.textContent = `Level: ${level}`;
145
+ ballSpeed += 0.5; // Meningkatkan kecepatan bola setiap level
146
+ }
147
+ }
148
+
149
+ // Fungsi untuk reset permainan
150
+ function resetGame() {
151
+ score = 0;
152
+ lives = 3;
153
+ level = 1;
154
+ ballSpeed = 2;
155
+ timer = 30;
156
+ scoreDisplay.textContent = score;
157
+ livesDisplay.textContent = `Lives: ${lives}`;
158
+ levelDisplay.textContent = `Level: ${level}`;
159
+ timerDisplay.textContent = `Time: ${timer}s`;
160
+ resetBall();
161
+ }
162
+
163
+ // Fungsi untuk timer
164
+ function countdownTimer() {
165
+ if (!gamePaused && timer > 0) {
166
+ timer--;
167
+ timerDisplay.textContent = `Time: ${timer}s`;
168
+ } else if (timer <= 0) {
169
+ alert('Game Over! Time is up.');
170
+ resetGame();
171
+ }
172
+ }
173
+
174
+ // Update timer setiap detik
175
+ setInterval(countdownTimer, 1000);
176
+
177
+ moveBall(); // Memulai permainan
178
  </script>
179
  </body>
180
  </html>