main.py
index.html
Selection deleted
if (ball.x - ball.radius < paddleLeft.x + paddleLeft.width &&
ball.y > paddleLeft.y && ball.y < paddleLeft.y + paddleLeft.height) {
ball.dx = -ball.dx;
} else if (ball.x + ball.radius > paddleRight.x &&
ball.y > paddleRight.y && ball.y < paddleRight.y + paddleRight.height) {
ball.dx = -ball.dx;
}
}
function gameLoop() {
if (!paused) {
clearScreen();
drawText("Woz's Game", canvas.width / 2, 100);
drawBall();
drawPaddle(paddleLeft, paddleLeftColor);
drawPaddle(paddleRight, paddleRightColor);
updateScore();
moveBall();
}
requestAnimationFrame(gameLoop);
}
document.addEventListener('keydown', (event) => {
if (event.key === 'w') {
paddleLeft.dy = -paddleSpeed;
} else if (event.key === 's') {
paddleLeft.dy = paddleSpeed;
} else if (event.key === 'ArrowUp') {
paddleRight.dy = -paddleSpeed;
} else if (event.key === 'ArrowDown') {
paddleRight.dy = paddleSpeed;
} else if (event.key === ' ') {
if (ball.dx === 0 && ball.dy === 0) {
ball.dx = 3;
ball.dy = 4;
}
} else if (event.key === 'p') {
paused = !paused;
}
});
document.addEventListener('keyup', (event) => {
if (event.key === 'w' || event.key === 's') {
paddleLeft.dy = 0;
} else if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
paddleRight.dy = 0;
}
});
function movePaddles() {
paddleLeft.y += paddleLeft.dy;
paddleRight.y += paddleRight.dy;
if (paddleLeft.y < 0) {
paddleLeft.y = 0;
} else if (paddleLeft.y > canvas.height - paddleLeft.height) {
paddleLeft.y = canvas.height - paddleLeft.height;
}
if (paddleRight.y < 0) {
paddleRight.y = 0;
} else if (paddleRight.y > canvas.height - paddleRight.height) {
paddleRight.y = canvas.height - paddleRight.height;
}
}
startButton.addEventListener('click', () => {
const leftColor = leftColorInput.value;
const rightColor = rightColorInput.value;
if (isValidColor(leftColor)) {
paddleLeftColor = leftColor;
}
if (isValidColor(rightColor)) {
paddleRightColor = rightColor;
}
resetBall();
leftScore = 0;
rightScore = 0;
paused = false;
requestAnimationFrame(gameLoop);
});
setInterval(movePaddles, 1000 / 60);
});
Mode: HTML