<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<style>
canvas {
border:1px solid #d3d3d3;
background-color: #f1f1f1;
}
</style>
</head>
<body onkeypress="myFunction(event)" onload="startGame()" >
<script>
var myGamePiece;
var myObstacle;
function startGame() {
myGamePiece = new component(30, 30, "red", 10, 120);
myObstacle = new component(10, 200, "green", 300, 120);
myGameArea.start();
}
var myGameArea = {
canvas : document.createElement("canvas"),
start : function() {
this.canvas.width = 480;
this.canvas.height = 270;
this.context = this.canvas.getContext("2d");
document.body.insertBefore(this.canvas, document.body.childNodes[0]);
this.interval = setInterval(updateGameArea, 20);
},
clear : function() {
this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
}
}
function component(width, height, color, x, y) {
this.width = width;
this.height = height;
this.speedX = 0;
this.speedY = 0;
this.x = x;
this.y = y;
this.update = function() {
ctx = myGameArea.context;
ctx.fillStyle = color;
ctx.fillRect(this.x, this.y, this.width, this.height);
}
this.newPos = function() {
this.x += this.speedX;
this.y += this.speedY;
}
}
function updateGameArea() {
myGameArea.clear();
myObstacle.update();
myGamePiece.newPos();
myGamePiece.update();
}
function moveup() {
myGamePiece.speedY = -1;
}
function movedown() {
myGamePiece.speedY = 1;
}
function moveleft() {
myGamePiece.speedX = -1;
}
function moveright() {
myGamePiece.speedX = 1;
}
function clearmove() {
myGamePiece.speedX = 0;
myGamePiece.speedY = 0;
}
function myFunction(event)
{
switch(event.which || event.keyCode)
{
case 117: //Up
moveup();
break;
case 106: //Down
movedown();
break;
case 104: //Left
moveleft();
break;
case 107: //Right
moveright();
break;
}
}
</script>
<div style="text-align:center;width:480px;">
<button onmousedown="moveup()" onmouseup="clearmove()" ontouchstart="moveup()">UP</button><br><br>
<button onmousedown="moveleft()" onmouseup="clearmove()" ontouchstart="moveleft()">LEFT</button>
<button onmousedown="moveright()" onmouseup="clearmove()" ontouchstart="moveright()">RIGHT</button><br><br>
<button onmousedown="movedown()" onmouseup="clearmove()" ontouchstart="movedown()">DOWN</button>
</div>
<p>Now there is an obstacle in our gaming area, but still nothing happens when the red square hit it.</p>
</body>
</html>
PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiLz4KPHN0eWxlPgpjYW52YXMgewogICAgYm9yZGVyOjFweCBzb2xpZCAjZDNkM2QzOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMTsKfQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5IG9ua2V5cHJlc3M9Im15RnVuY3Rpb24oZXZlbnQpIiBvbmxvYWQ9InN0YXJ0R2FtZSgpIiA+CjxzY3JpcHQ+Cgp2YXIgbXlHYW1lUGllY2U7CnZhciBteU9ic3RhY2xlOwoKZnVuY3Rpb24gc3RhcnRHYW1lKCkgewogICAgbXlHYW1lUGllY2UgPSBuZXcgY29tcG9uZW50KDMwLCAzMCwgInJlZCIsIDEwLCAxMjApOwogICAgbXlPYnN0YWNsZSAgPSBuZXcgY29tcG9uZW50KDEwLCAyMDAsICJncmVlbiIsIDMwMCwgMTIwKTsgICAgCiAgICBteUdhbWVBcmVhLnN0YXJ0KCk7Cn0KCnZhciBteUdhbWVBcmVhID0gewogICAgY2FudmFzIDogZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksCiAgICBzdGFydCA6IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuY2FudmFzLndpZHRoID0gNDgwOwogICAgICAgIHRoaXMuY2FudmFzLmhlaWdodCA9IDI3MDsKICAgICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKHRoaXMuY2FudmFzLCBkb2N1bWVudC5ib2R5LmNoaWxkTm9kZXNbMF0pOwogICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCh1cGRhdGVHYW1lQXJlYSwgMjApOwogICAgfSwKICAgIGNsZWFyIDogZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy5jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTsKICAgIH0KfQoKZnVuY3Rpb24gY29tcG9uZW50KHdpZHRoLCBoZWlnaHQsIGNvbG9yLCB4LCB5KSB7CiAgICB0aGlzLndpZHRoID0gd2lkdGg7CiAgICB0aGlzLmhlaWdodCA9IGhlaWdodDsKICAgIHRoaXMuc3BlZWRYID0gMDsKICAgIHRoaXMuc3BlZWRZID0gMDsgICAgCiAgICB0aGlzLnggPSB4OwogICAgdGhpcy55ID0geTsgICAgCiAgICB0aGlzLnVwZGF0ZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIGN0eCA9IG15R2FtZUFyZWEuY29udGV4dDsKICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7CiAgICAgICAgY3R4LmZpbGxSZWN0KHRoaXMueCwgdGhpcy55LCB0aGlzLndpZHRoLCB0aGlzLmhlaWdodCk7CiAgICB9CiAgICB0aGlzLm5ld1BvcyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMueCArPSB0aGlzLnNwZWVkWDsKICAgICAgICB0aGlzLnkgKz0gdGhpcy5zcGVlZFk7ICAgICAgICAKICAgIH0gICAgCn0KCmZ1bmN0aW9uIHVwZGF0ZUdhbWVBcmVhKCkgewogICAgbXlHYW1lQXJlYS5jbGVhcigpOwogICAgbXlPYnN0YWNsZS51cGRhdGUoKTsKICAgIG15R2FtZVBpZWNlLm5ld1BvcygpOyAgICAKICAgIG15R2FtZVBpZWNlLnVwZGF0ZSgpOwp9CgpmdW5jdGlvbiBtb3ZldXAoKSB7CiAgICBteUdhbWVQaWVjZS5zcGVlZFkgPSAtMTsgCn0KCmZ1bmN0aW9uIG1vdmVkb3duKCkgewogICAgbXlHYW1lUGllY2Uuc3BlZWRZID0gMTsgCn0KCmZ1bmN0aW9uIG1vdmVsZWZ0KCkgewogICAgbXlHYW1lUGllY2Uuc3BlZWRYID0gLTE7IAp9CgpmdW5jdGlvbiBtb3ZlcmlnaHQoKSB7CiAgICBteUdhbWVQaWVjZS5zcGVlZFggPSAxOyAKfQoKZnVuY3Rpb24gY2xlYXJtb3ZlKCkgewogICAgbXlHYW1lUGllY2Uuc3BlZWRYID0gMDsgCiAgICBteUdhbWVQaWVjZS5zcGVlZFkgPSAwOyAKfQoKZnVuY3Rpb24gbXlGdW5jdGlvbihldmVudCkKewoJc3dpdGNoKGV2ZW50LndoaWNoIHx8IGV2ZW50LmtleUNvZGUpCgl7CgljYXNlIDExNzogLy9VcAoJCW1vdmV1cCgpOwoJCWJyZWFrOwoJY2FzZSAxMDY6IC8vRG93bgoJCW1vdmVkb3duKCk7CgkJYnJlYWs7CgljYXNlIDEwNDogLy9MZWZ0CgkJbW92ZWxlZnQoKTsKCQlicmVhazsKCWNhc2UgMTA3OiAvL1JpZ2h0CgkJbW92ZXJpZ2h0KCk7CgkJYnJlYWs7Cgl9Cn0KPC9zY3JpcHQ+CjxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3dpZHRoOjQ4MHB4OyI+CiAgPGJ1dHRvbiBvbm1vdXNlZG93bj0ibW92ZXVwKCkiIG9ubW91c2V1cD0iY2xlYXJtb3ZlKCkiIG9udG91Y2hzdGFydD0ibW92ZXVwKCkiPlVQPC9idXR0b24+PGJyPjxicj4KICA8YnV0dG9uIG9ubW91c2Vkb3duPSJtb3ZlbGVmdCgpIiBvbm1vdXNldXA9ImNsZWFybW92ZSgpIiBvbnRvdWNoc3RhcnQ9Im1vdmVsZWZ0KCkiPkxFRlQ8L2J1dHRvbj4KICA8YnV0dG9uIG9ubW91c2Vkb3duPSJtb3ZlcmlnaHQoKSIgb25tb3VzZXVwPSJjbGVhcm1vdmUoKSIgb250b3VjaHN0YXJ0PSJtb3ZlcmlnaHQoKSI+UklHSFQ8L2J1dHRvbj48YnI+PGJyPgogIDxidXR0b24gb25tb3VzZWRvd249Im1vdmVkb3duKCkiIG9ubW91c2V1cD0iY2xlYXJtb3ZlKCkiIG9udG91Y2hzdGFydD0ibW92ZWRvd24oKSI+RE9XTjwvYnV0dG9uPgo8L2Rpdj4KPHA+Tm93IHRoZXJlIGlzIGFuIG9ic3RhY2xlIGluIG91ciBnYW1pbmcgYXJlYSwgYnV0IHN0aWxsIG5vdGhpbmcgaGFwcGVucyB3aGVuIHRoZSByZWQgc3F1YXJlIGhpdCBpdC48L3A+CjwvYm9keT4KPC9odG1sPgo=
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<style>
canvas {
border:1px solid #d3d3d3;
background-color: #f1f1f1;
}
</style>
</head>
<body onkeypress="myFunction(event)" onload="startGame()" >
<script>
var myGamePiece;
var myObstacle;
function startGame() {
myGamePiece = new component(30, 30, "red", 10, 120);
myObstacle = new component(10, 200, "green", 300, 120);
myGameArea.start();
}
var myGameArea = {
canvas : document.createElement("canvas"),
start : function() {
this.canvas.width = 480;
this.canvas.height = 270;
this.context = this.canvas.getContext("2d");
document.body.insertBefore(this.canvas, document.body.childNodes[0]);
this.interval = setInterval(updateGameArea, 20);
},
clear : function() {
this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
}
}
function component(width, height, color, x, y) {
this.width = width;
this.height = height;
this.speedX = 0;
this.speedY = 0;
this.x = x;
this.y = y;
this.update = function() {
ctx = myGameArea.context;
ctx.fillStyle = color;
ctx.fillRect(this.x, this.y, this.width, this.height);
}
this.newPos = function() {
this.x += this.speedX;
this.y += this.speedY;
}
}
function updateGameArea() {
myGameArea.clear();
myObstacle.update();
myGamePiece.newPos();
myGamePiece.update();
}
function moveup() {
myGamePiece.speedY = -1;
}
function movedown() {
myGamePiece.speedY = 1;
}
function moveleft() {
myGamePiece.speedX = -1;
}
function moveright() {
myGamePiece.speedX = 1;
}
function clearmove() {
myGamePiece.speedX = 0;
myGamePiece.speedY = 0;
}
function myFunction(event)
{
switch(event.which || event.keyCode)
{
case 117: //Up
moveup();
break;
case 106: //Down
movedown();
break;
case 104: //Left
moveleft();
break;
case 107: //Right
moveright();
break;
}
}
</script>
<div style="text-align:center;width:480px;">
<button onmousedown="moveup()" onmouseup="clearmove()" ontouchstart="moveup()">UP</button><br><br>
<button onmousedown="moveleft()" onmouseup="clearmove()" ontouchstart="moveleft()">LEFT</button>
<button onmousedown="moveright()" onmouseup="clearmove()" ontouchstart="moveright()">RIGHT</button><br><br>
<button onmousedown="movedown()" onmouseup="clearmove()" ontouchstart="movedown()">DOWN</button>
</div>
<p>Now there is an obstacle in our gaming area, but still nothing happens when the red square hit it.</p>
</body>
</html>