|
1 | 1 | <!DOCTYPE html> |
2 | 2 | <html> |
3 | 3 | <head> |
4 | | - <title>Gödel's Gauntlet</title> |
| 4 | + <title>Godel's Gauntlet</title> |
5 | 5 | <style> |
6 | 6 | body { margin: 0; overflow: hidden; } |
7 | 7 | canvas { position: absolute; top: 0; left: 0; } |
|
36 | 36 | angle3: 0 |
37 | 37 | }; |
38 | 38 |
|
39 | | - // Listen for keydown events |
40 | | - window.addEventListener('keydown', function(e) { |
41 | | - var acceleration = player.speed; |
42 | | - if(e.key === 'ArrowUp' || e.key === 'w') player.vy -= acceleration; |
43 | | - if(e.key === 'ArrowDown' || e.key === 's') player.vy += acceleration; |
44 | | - if(e.key === 'ArrowLeft' || e.key === 'a') player.vx -= acceleration; |
45 | | - if(e.key === 'ArrowRight' || e.key === 'd') player.vx += acceleration; |
46 | | - }); |
| 39 | + // Listen for click events |
| 40 | + canvas.addEventListener('click', function(e) { |
| 41 | + var rect = canvas.getBoundingClientRect(); |
| 42 | + var clickX = e.clientX - rect.left; |
| 43 | + var clickY = e.clientY - rect.top; |
| 44 | + |
| 45 | + // Set the player's target |
| 46 | + player.target = { x: clickX, y: clickY }; |
47 | 47 |
|
48 | | - // Listen for deviceorientation events |
49 | | - window.addEventListener('deviceorientation', function(e) { |
50 | | - var acceleration = player.speed; |
51 | | - player.vx += Math.sin(e.alpha * Math.PI / 180) * acceleration; |
52 | | - player.vy += Math.sin((e.beta - 90) * Math.PI / 180) * acceleration; |
| 48 | + // Store the last click position |
| 49 | + lastClick.x = clickX; |
| 50 | + lastClick.y = clickY; |
53 | 51 | }); |
54 | 52 |
|
55 | 53 | // Main game loop |
56 | 54 | function gameLoop() { |
57 | | - // Apply velocity to player position |
58 | | - if (!player.reset) { |
59 | | - player.x += player.vx; |
60 | | - player.y += player.vy; |
61 | | - } |
62 | | - |
63 | | - // Limit speed |
64 | | - var speed = Math.sqrt(player.vx * player.vx + player.vy * player.vy); |
65 | | - if(speed > player.maxSpeed) { |
66 | | - player.vx *= player.maxSpeed / speed; |
67 | | - player.vy *= player.maxSpeed / speed; |
| 55 | + // Move towards target if it exists |
| 56 | + if(player.target) { |
| 57 | + var dx = player.target.x - player.x; |
| 58 | + var dy = player.target.y - player.y; |
| 59 | + var distance = Math.sqrt(dx * dx + dy * dy); |
| 60 | + |
| 61 | + if(distance > 1) { |
| 62 | + // Apply velocity to player position |
| 63 | + player.vx = dx / distance * player.speed; |
| 64 | + player.vy = dy / distance * player.speed; |
| 65 | + player.x += player.vx; |
| 66 | + player.y += player.vy; |
| 67 | + |
| 68 | + // Accelerate |
| 69 | + player.speed += 0.1; |
| 70 | + if(player.speed > player.maxSpeed) { |
| 71 | + player.speed = player.maxSpeed; |
| 72 | + } |
| 73 | + } else { |
| 74 | + // Decelerate |
| 75 | + player.speed -= 0.1; |
| 76 | + if(player.speed < 0) { |
| 77 | + player.speed = 0; |
| 78 | + } |
| 79 | + } |
68 | 80 | } |
69 | 81 |
|
70 | 82 | // Clear the canvas |
|
0 commit comments