| 
		
			Сообщение от Irbitsky
			
		
	 | 
	| 
		начал изучать javascript
	 | 
	
	
	| 
		
			Сообщение от Irbitsky
			
		
	 | 
	| 
		<script src="https://code.jquery.com/jquery-2.1.0.js"></script>
	 | 
	
 Не нужно подключать эту устаревшую библиотеку, которая нужна для поддержки старых проектов.
Если вы хотите изучать фреймворки и библиотеки, то посмотрите следующие — 
Svelte,  
Stencil, 
Vue или 
React.
	
	| 
		
			Сообщение от Irbitsky
			
		
	 | 
	| 
		setInterval
	 | 
	
 Когда что-то меняется на экране, то следует использовать requestAnimationFrame, для отмены запланированного — cancelAnimationFrame. 
https://developer.mozilla.org/en-US/docs/Games/Anatomy
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title> interactive HTML 5 </title>
	<style>
		#game {
			width: 500px; height: 500px;
			user-select: none;
		}
		#heading {
			display: inline-block;
			padding: 0.5em 1em;
			background: deeppink;
			border-radius: 1em;
			cursor: default;
		}
	</style>
</head>
<body>
	<section id="game">
		<h1 id="heading"></h1>
	</section>
	<script>
		/* состояние */
		const element = document.querySelector("#heading");	
		const number = ["0", "1", "2", "3", "You win"];
		let x = 0, y = 0;
		let f = 0, d = 1;
		let z = 0;
		/* управление состоянием */
		element.addEventListener("click", event => {
			if(z < 4) z++;
		});
		/* цикл игры */
		let dt, lastT = performance.now(), requestId;
		(function loop(t) {
			requestId = requestAnimationFrame(loop);
			dt = t - lastT;
			lastT = t;
			/* изменение состояния */
			x += d * 0.1 * (z + 1) * dt;
			y += f * 0.1 * (z + 1) * dt;
			if (x > 500) {
				d = 0; f = 1;
			}
			if (y > 500) {
				d = -1; f = 0;
			}
			if (x <= 0) {
				d = 0; f = -1;
			}
			if (y <= 0 && x <= 0) {
				d = 1; f = 0;
			}
			if(z === 4) cancelAnimationFrame(requestId);
			/* отрисовка состояния */
			element.style.transform = `translate(${x}px, ${y}px)`;
			element.textContent = number[z];
		})(lastT);
	</script>
</body>
</html>
 Также узнайте про <canvas>