awacke1 commited on
Commit
53012d5
·
1 Parent(s): dadc545

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +181 -36
index.html CHANGED
@@ -2,59 +2,204 @@
2
  <html>
3
  <head>
4
  <meta charset="UTF-8">
5
- <title>3D Typing Game</title>
6
  <style>
7
  body {
8
  margin: 0;
9
  }
 
10
  canvas {
11
  width: 100%;
12
  height: 100%;
13
  }
 
 
 
 
 
 
 
 
 
 
 
14
  </style>
15
- <script src="https://threejs.org/build/three.min.js"></script>
16
- <script src="https://threejs.org/examples/js/loaders/FontLoader.js"></script>
17
  </head>
18
  <body>
19
- <canvas id="gameCanvas"></canvas>
20
- <script>
21
- var scene = new THREE.Scene();
22
- var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
23
- camera.position.z = 30;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
 
25
- var renderer = new THREE.WebGLRenderer({ canvas: document.getElementById('gameCanvas') });
26
- renderer.setSize(window.innerWidth, window.innerHeight);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
- var light = new THREE.PointLight(0xffffff, 1, 100);
29
- light.position.set(0, 0, 30);
30
- scene.add(light);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
 
32
- var loader = new THREE.FontLoader();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
- loader.load('https://threejs.org/examples/fonts/helvetiker_regular.typeface.json', function(font) {
35
  document.addEventListener('keydown', function(event) {
36
- if (event.keyCode >= 65 && event.keyCode <= 90) {
37
- var letter = String.fromCharCode(event.keyCode);
38
- var letterGeometry = new THREE.TextGeometry(letter, {
39
- font: font,
40
- size: 1,
41
- height: 0.5,
42
- curveSegments: 12,
43
- bevelEnabled: false
44
- });
45
- var letterMaterial = new THREE.MeshLambertMaterial({ color: Math.random() * 0xffffff });
46
- var letterMesh = new THREE.Mesh(letterGeometry, letterMaterial);
47
- letterMesh.position.set((Math.random() - 0.5) * 20, (Math.random() - 0.5) * 20, 0);
48
- scene.add(letterMesh);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  }
50
  });
51
- });
52
-
53
- function animate() {
54
- requestAnimationFrame(animate);
55
- renderer.render(scene, camera);
56
- }
57
- animate();
58
- </script>
59
  </body>
60
  </html>
 
2
  <html>
3
  <head>
4
  <meta charset="UTF-8">
5
+ <title>🤓🕹️📱 3D Breakout Game</title>
6
  <style>
7
  body {
8
  margin: 0;
9
  }
10
+
11
  canvas {
12
  width: 100%;
13
  height: 100%;
14
  }
15
+
16
+ #score {
17
+ position: absolute;
18
+ top: 0;
19
+ left: 50%;
20
+ transform: translateX(-50%);
21
+ font-size: 24px;
22
+ font-weight: bold;
23
+ color: white;
24
+ text-shadow: 1px 1px 1px black;
25
+ }
26
  </style>
27
+ <script src="https://cdn.jsdelivr.net/npm/[email protected]/build/three.min.js"></script>
 
28
  </head>
29
  <body>
30
+ <canvas id="gameCanvas"></canvas>
31
+ <div id="score">Score: 0</div>
32
+ <script>
33
+ var scene = new THREE.Scene();
34
+ var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
35
+ camera.position.set(0, 30, 0);
36
+ camera.lookAt(new THREE.Vector3(0, 0, 0));
37
+ scene.add(camera);
38
+
39
+ var renderer = new THREE.WebGLRenderer({ canvas: document.getElementById('gameCanvas') });
40
+ renderer.setClearColor(0x000000);
41
+ renderer.setPixelRatio(window.devicePixelRatio);
42
+ renderer.setSize(window.innerWidth, window.innerHeight);
43
+
44
+ var ballGeometry = new THREE.SphereGeometry(0.5, 32, 32);
45
+ var ballMaterial = new THREE.MeshLambertMaterial({ color: 0xffffff });
46
+ var balls = [];
47
+
48
+ var brickGeometry = new THREE.BoxGeometry(2, 1, 1);
49
+ var bricks = [];
50
 
51
+ var score = 0;
52
+ var scoreElement = document.getElementById('score');
53
+
54
+ function addBall() {
55
+ var ball = new THREE.Mesh(ballGeometry, ballMaterial);
56
+ ball.position.set((Math.random() - 0.5) * 25, (Math.random() - 0.5) * 25, (Math.random() - 0.5) * 25);
57
+ ball.velocity = new THREE.Vector3((Math.random() - 0.5) * 2, (Math.random() - 0.5) * 2, (Math.random() - 0.5) * 2).normalize();
58
+ scene.add(ball);
59
+ balls.push(ball);
60
+ }
61
+
62
+ function addBrick() {
63
+ var brickMaterial = new THREE.MeshLambertMaterial({ color: Math.random() * 0xffffff });
64
+ var brick = new THREE.Mesh(brickGeometry, brickMaterial);
65
+ brick.position.set((Math.random() - 0.5) * 50, (Math.random() - 0.5) * 50, (Math.random() - 0.5) * 50);
66
+ scene.add(brick);
67
+ bricks.push(brick);
68
+ }
69
+
70
+ for (var i = 0; i < 50; i++) {
71
+ addBrick();
72
+ }
73
 
74
+ var light = new THREE.PointLight(0xffffff, 1, 100);
75
+ light.position.set(0, 30, 0);
76
+ scene.add(light);
77
+
78
+ var paddleGeometry = new THREE.BoxGeometry(4, 1, 1);
79
+ var paddleMaterial = new THREE.MeshLambertMaterial({ color: 0xffffff });
80
+ var paddle = new THREE.Mesh(paddleGeometry, paddleMaterial);
81
+ scene.add(paddle);
82
+
83
+ function animate() {
84
+ requestAnimationFrame(animate);
85
+
86
+ var paddleSpeed = 1.5;
87
+
88
+ if (keys["87"] || keys["38"]) { // w or up arrow
89
+ paddle.position.z -= paddleSpeed;
90
+ }
91
+ if (keys["83"] || keys["40"]) { // s or down arrow
92
+ paddle.position.z += paddleSpeed;
93
+ }
94
+ if (keys["65"] || keys["37"]) { // a or left arrow
95
+ paddle.position.x -= paddleSpeed;
96
+ }
97
+ if (keys["68"] || keys["39"]) { // d or right arrow
98
+ paddle.position.x += paddleSpeed;
99
+ }
100
+
101
+ var mouseSpeed = 0.1;
102
+
103
+ if (mouseX !== null && mouseY !== null) {
104
+ paddle.position.x = (mouseX / window.innerWidth) * 50 - 25;
105
+ paddle.position.z = -(mouseY / window.innerHeight) * 50 + 25;
106
+ }
107
 
108
+ for (var i = 0; i < balls.length; i++) {
109
+ balls[i].position.add(balls[i].velocity);
110
+
111
+ if (balls[i].position.x + 0.5 > 25 || balls[i].position.x - 0.5 < -25) {
112
+ balls[i].velocity.x = -balls[i].velocity.x;
113
+ }
114
+ if (balls[i].position.y + 0.5 > 25 || balls[i].position.y - 0.5 < -25) {
115
+ balls[i].velocity.y = -balls[i].velocity.y;
116
+ }
117
+ if (balls[i].position.z + 0.5 > 25 || balls[i].position.z - 0.5 < -25) {
118
+ balls[i].velocity.z = -balls[i].velocity.z;
119
+ }
120
+
121
+ if (balls[i].position.y - 0.5 < -15 && balls[i].position.x + 0.5 > paddle.position.x - 2 && balls[i].position.x - 0.5 < paddle.position.x + 2 && balls[i].position.z + 0.5 > paddle.position.z - 0.5 && balls[i].position.z - 0.5 < paddle.position.z + 0.5) {
122
+ balls[i].velocity.y = Math.abs(balls[i].velocity.y);
123
+ }
124
+
125
+ for (var j = 0; j < bricks.length; j++) {
126
+ if (balls[i].position.distanceTo(bricks[j].position) <= 2) {
127
+ scene.remove(bricks[j]);
128
+ bricks.splice(j, 1);
129
+ balls[i].velocity.negate();
130
+ addBrick();
131
+ score++;
132
+ scoreElement.innerHTML = "Score: " + score;
133
+ }
134
+ }
135
+ }
136
+
137
+ renderer.render(scene, camera);
138
+ }
139
+
140
+ var keys = {};
141
+ var mouseX = null;
142
+ var mouseY = null;
143
+
144
+ document.addEventListener('mousedown', function(event) {
145
+ if (event.button === 0) {
146
+ addBrick();
147
+ }
148
+ if (event.button === 2) {
149
+ addBall();
150
+ }
151
+ });
152
 
 
153
  document.addEventListener('keydown', function(event) {
154
+ keys[event.keyCode] = true;
155
+ });
156
+
157
+ document.addEventListener('keyup', function(event) {
158
+ keys[event.keyCode] = false;
159
+ });
160
+
161
+ document.addEventListener('mousemove', function(event) {
162
+ mouseX = event.clientX;
163
+ mouseY = event.clientY;
164
+ });
165
+
166
+ document.addEventListener('mouseleave', function(event) {
167
+ mouseX = null;
168
+ mouseY = null;
169
+ });
170
+
171
+ animate();
172
+
173
+ fetch('https://api11.salmonground-a8f39f59.centralus.azurecontainerapps.io/selftest', {
174
+ method: 'GET',
175
+ headers: {
176
+ 'Accept': 'application/json'
177
+ }
178
+ })
179
+ .then(response => response.json())
180
+ .then(data => {
181
+ var queryResults = data.QueryResults;
182
+ queryResults = queryResults.substring(0, 10);
183
+
184
+ for (var i = 0; i < queryResults.length; i++) {
185
+ var letter = queryResults[i].toLowerCase();
186
+ if (letter.match(/[a-z]/i)) {
187
+ var letterGeometry = new THREE.TextGeometry(letter, {
188
+ font: new THREE.FontLoader().load('https://threejs.org/examples/fonts/helvetiker_regular.typeface.json'),
189
+ size: 1,
190
+ height: 0.5,
191
+ curveSegments: 12,
192
+ bevelEnabled: false
193
+ });
194
+ var letterMaterial = new THREE.MeshLambertMaterial({ color: 0xffffff });
195
+ var letterMesh = new THREE.Mesh(letterGeometry, letterMaterial);
196
+ letterMesh.position.set((Math.random() - 0.5) * 25, (Math.random() - 0.5) * 25, (Math.random() - 0.5) * 25);
197
+ letterMesh.velocity = new THREE.Vector3((Math.random() - 0.5) * 2, (Math.random() - 0.5) * 2, (Math.random() - 0.5) * 2).normalize();
198
+ scene.add(letterMesh);
199
+ balls.push(letterMesh);
200
+ }
201
  }
202
  });
203
+ </script>
 
 
 
 
 
 
 
204
  </body>
205
  </html>