Skip to content

Instantly share code, notes, and snippets.

@kdrnic
Created April 19, 2018 02:00
Show Gist options
  • Select an option

  • Save kdrnic/6a14064a23a6fd36f14eb81f09758033 to your computer and use it in GitHub Desktop.

Select an option

Save kdrnic/6a14064a23a6fd36f14eb81f09758033 to your computer and use it in GitHub Desktop.
<html>
<head>
<script src="jsKart.js"></script>
</head>
<body onload="Init()">
<center>
<canvas id="screen" width="640" height="480" style="border:solid 1px;"></canvas><br>
<canvas id="track" width="1448" height="1448" style="display: none;"></canvas><br>
</center>
</body>
</html>
var screenCanvas, trackCanvas;
var screenContext, trackContext;
var trackImage;
var ready;
var cameraAngle;
var cameraX, cameraY, cameraZ;
var pressed = {};
function KeyDownEvent(event)
{
pressed[event.keyCode] = true;
}
function KeyUpEvent(event)
{
pressed[event.keyCode] = false;
}
function Init()
{
screenCanvas = document.getElementById("screen");
trackCanvas = document.getElementById("track");
screenContext = screenCanvas.getContext("2d");
trackContext = trackCanvas.getContext("2d");
ready = false;
trackImage = new Image;
trackImage.onload = new function()
{
ready = true;
}
trackImage.src = "track.png";
while(!ready) continue;
cameraAngle = 0;
cameraX = 512;
cameraY = 512;
window.addEventListener("keydown", function(event){KeyDownEvent(event)});
window.addEventListener("keyup", function(event){KeyUpEvent(event)});
DoFrame();
}
function DoFrame()
{
if(pressed[37])
{
cameraAngle -= 0.0785398163;
}
if(pressed[39])
{
cameraAngle += 0.0785398163;
}
if(pressed[38])
{
cameraX += Math.sin(cameraAngle);
cameraY -= Math.cos(cameraAngle);
}
if(pressed[40])
{
cameraX -= Math.sin(cameraAngle);
cameraY += Math.cos(cameraAngle);
}
Render();
setTimeout("DoFrame()", 1000.0 / 90.0);
}
function Render()
{
trackContext.save();
trackContext.translate(724, 1448);
trackContext.rotate(-cameraAngle);
trackContext.translate(-cameraX, -cameraY);
trackContext.drawImage(trackImage, 0, 0, 1024, 1024, 0, 0, 1024, 1024);
trackContext.restore();
var trackWidth = 1;
var iVRes = 1;
for(var screenY = 250; screenY < 480; screenY += iVRes)
{
var z = (240 / (screenY - 240)) * 10;
trackWidth = z;
trackY = 1448 - z;
if(trackY > 0) screenContext.drawImage(trackCanvas, 724 - (trackWidth / 2), trackY, trackWidth, 1, 0, screenY, 640, iVRes);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment