Learning HTML and JavaScript with a Simple Shooting Game: Lesson 5

preview_player
Показать описание

Рекомендации по теме
Комментарии
Автор

amazing tutorial, thank you for your hard work 👍

guitC
Автор

delta time with cause very lack in your animation if you have a small pc performance. like me.

instead of canvas, use divs, css and javascript . is more interesting. and it will have a better performance

giancarloandrebravoabanto
Автор

Hi even if I typed in "ensureBounds(enemies[i], true);" the enemies still kept on going on which also means if I click on space I can only see a billion zombies. I kept on copying urs into mines but nothing happened. I think I forgot to type something down but I couldn't find it. Can u pls tell me pls? I copied from lesson 7 but also, nothing happened

Arthur-cdvg
Автор

I have been playing around with this enemy generator for a while now, I seem to be able to get it to spawn an enemy, add it to the array, then spawn the next one every 2 ish seconds. For some reason the enemies do not move at all, they all spawn on top of each other in the upper left corner-- any tips?

drummerdude
Автор

what does function getRandom does in math terms??

riuga
Автор

Hi, I want to change the image for the enemies but I dont know how. can someone show me example?

shovalb
Автор

How can I change the enemy with an image?

yuenlingko
Автор

there are no enemies spawning i am so confused, need help thank you
<html>
<head>
<embed src="kimikoko.mp3" autostart="false" loop="true" hidden="true" id="menubgm">
<style>

#hero{
background:#c4c4c4;
height: 20px;
width: 20px;
position:absolute;

}
#bg{
background: #4b0084;
width:500px;
height:500px;
position: absolute;
left:0px;
top:0px;
}
#bullet{
background: #00ff00;
width: 2px;
height:50px;
position: absolute;
}
.enemy{
background:#ff4ca2;
width= 35px;
height= 35px;
position:absolute;
}
</style>
</head>
<body>
<div id="bg">
</div>
<img src="hero.png" id="hero">
</div>
<div id="bullet"></div>

<script>
var Leftkey = 37;
var Upkey = 38;
var Rightkey = 39;
var Downkey = 40;
var Spacekey=32
var Spritemove = 3;

var finalLoopRun = 0;


var control = new Object();
var enemies= new Array();

function createSprite(element, x, y, w, h){
var result=new Object ();
result.element = element;
result.x=x;
result.y=y;
result.w=w;
result.h=h;
return result;
}


function toggleKey (keyCode, isPressed) {
if (keyCode == Leftkey){
control.left = isPressed;
}
if (keyCode == Upkey ){
control.up = isPressed;
}
if (keyCode == Rightkey) {
control.right = isPressed;
}
if (keyCode == Downkey){
control.down = isPressed;
}
if (keyCode == Spacekey){
control.space=isPressed;
}
}

function ensureBounds(sprite){
if (sprite.x < 20){
sprite.x=20
}
if (sprite.y < 20){
sprite.y=20;
}
if (sprite.x + sprite.w > 480){
sprite.x=480-sprite.w;
}
if (sprite.y + sprite.h > 480){
sprite.y = 480 - sprite.h;
}
}

function setPosition(sprite){
var s =
s.style.left= sprite.x + 'px';
s.style.top = sprite.y + 'px';
}
function handleControls () {
if (control.up){
hero.y -= Spritemove;
}
if (control.down){
hero.y += Spritemove;
}
if (control.left){
hero.x -=Spritemove;
}
if (control.right){
hero.x += Spritemove;
}
if(control.space && bullet.y <= -120){
bullet.x=hero.x + 9;
bullet.y = hero.y - bullet.h;
}
ensureBounds(hero)
}

function showSprites(){
setPosition (hero);
setPosition(bullet);
for (var i = 0; i < enemies.length; i++) {
setPosition(enemies[i]);
}
}

function updatePositions (){
for (var i = 0; i < enemies.length; i++){
enemies[i].y += 4;
enemies[i].x += getRandom(7) - 3;
ensureBounds (enemies [i]);
}

bullet.y -=12;
}

function addEnemy(){
if (getRandom(50)==0) {
var elementName='enemy' + getRandom
var enemy = createSprite(elementName, getRandom (450), -40, 35, 35);

var element = document.createElement ('div');
element.id = enemy.element;
element.className='enemy';


enemies [enemies.length]= enemy;
}
}
function getRandom(maxSize){
return parseInt (Math.random() * maxSize);
}
function loop(){
if (new Date().getTime() - finalLoopRun > 40){
updatePositions();
handleControls();
addEnemy();
showSprites();

finalLoopRun = new Date().getTime();
}
setTimeout ('loop();', 2);
}

document.onkeydown = function(evt) {
toggleKey(evt.keyCode, true);
};
document.onkeyup= function(evt) {
toggleKey(evt.keyCode, false);
};

var hero = createSprite('hero', 250, 460, 20, 20);
var bullet = createSprite ('bullet', 0, -120, 2, 50);

loop ();
</script>
</body>
</html>

SyntaxGamify
Автор

syntax error on line 132 dont know why.

<html>
<head>
<style>
#hero {
background: #cc0000;
width: 20px;
height: 20px;
position: absolute;
}
#background {
background:
width: 500px;
height: 500px;
position: absolute;
left: 0px;
top: 0px;
}
#laser {
background: #00ff00;
width: 2px;
height: 50px;
position: absolute;
}
.enemy {
background: #0000ff;
width: 35px;
height: 35px;
position: abosolute;
}
</style>
</head>
<body>
<div id="background"></div>
<div id="hero"></div>
<div id="laser"></div>
<script>

var LEFT_KEY = 37;
var UP_KEY = 38;
var RIGHT_KEY = 39;
var DOWN_KEY = 40;
var SPACE_KEY = 32;
var HERO_MOVEMENT = 3;

var lastLoopRun = 0;

var controller = new Object();
var enemies = new Array();

function creatSprite(element, x, y, w, h) {
var result = new Object();
result.element = element;
result.x = x;
result.y = y;
result.w = w;
result.h = h;
return result;
}

function toggleKey(keyCode, isPressed) {
if (keyCode == LEFT_KEY) {
controller.left = isPressed;
}
if (keyCode == RIGHT_KEY) {
controller.right = isPressed;
}
if (keyCode == UP_KEY) {
controller.up = isPressed;
}
if (keyCode == DOWN_KEY) {
controller.down = isPressed;
}
if (keyCode == SPACE_KEY) {
controller.space = isPressed;
}
}

function ensureBounds(sprite){
if (sprite.x < 20){
sprite.x = 20;
}
if (sprite.y < 20){
sprite.y = 20;
}
if (sprite.x + sprite.w > 480){
sprite.x = 480 - sprite.w;
}
if (sprite.y + sprite.h > 480){
sprite.y = 480 - sprite.h;
}
}

function setPosition(sprite) {
var e =
e.style.left = sprite.x + 'px';
e.style.top = sprite.y +'px';
}

function handleControls(){
if (controller.up) {
hero.y -= HERO_MOVEMENT;
}
if (controller.down) {
hero.y += HERO_MOVEMENT;
}
if (controller.left) {
hero.x -= HERO_MOVEMENT;
}
if (controller.right) {
hero.x += HERO_MOVEMENT;
}
if (controller.space) {
laser.x = hero.x + 9;
laser.y = hero.y - laser.h
}

ensureBounds(hero);
}

function showSprites() {
setPosition(hero);
setPosition(laser);
for (var i = 0; i < enemies.length; i++) {
setPosition(enemies[i]);
}
}

function updatePositions() {
for (var i = 0; i < enemy.length; i++){
enemies[i].y += 4;
enemies[i].y += getRandom(7) - 3;
}
laser.y -= 12;
}

function addEnemy() {
if (getRandom(50) == 0) {
var elementName = 'enemy' +
var enemy = createSprite(elementName, getRandom(450), -40, 35, 35;

var element = document.creatElement('div');
element.id = enemy.element;
element.className = 'enemy';


enemies[enemies.length] = enemy;
}
}

function getRandom(maxSize) {
return parseInt(Math.random() * maxSize);
}
}

function loop() {
if (new Date().getTime() - lastLoopRun > 40) {
updatePositions();
handleControls();

addEnemy();

showSprites();

lastLoopRun = new Date().getTime();
}
setTimeout('loop();', 2);
}

document.onkeydown = function(evt) {
toggleKey(evt.keyCode, true);
};

document.onkeyup = function(evt) {
toggleKey(evt.keyCode, false);
};

var hero = creatSprite('hero', 250, 460, 20, 20)
var laser = creatSprite('laser', 0, -120, 2, 50)

loop();

</script>
</body>
</html>

boido
Автор

you know there is a thing called HTML5 canvas!

haydenfrobenius
Автор

New Text Document.html:177 Uncaught SyntaxError: Unexpected end of input. But on line 177 i just have loop();

isaiahsmith
Автор

having a bit of trouble no enemies and no lasers

<html>
<head>
<style>
#hero {
background: #ff0000;
width: 20px;
height: 20px;
position: absolute;
}
#backround{
background:
width :500px;
height: 500px;
position:absolute;
top:0px;
left: 0px;
}
#laser{
background: #00ff00;
width: 3px;
height: 50px;
position: absolute;

}
.enemy{
backround:#0000ff;
width: 35px;
height: 35px;
position: absolute;


}
</style>
</head>
<body>
<div id="laser"></div>
<div id="backround"></div>
<div id="hero"></div>
<script>
var SPACE_KEY = 32;
var LEFT_KEY = 37;
var UP_KEY = 38;
var RIGHT_KEY = 39;
var DOWN_KEY = 40;
var HERO_MOVEMENT = 5;
var keyCode;
var lastLoopRun = 0;
var enemies = new Array();
var controller = new Object();

function createSprite (element, x, y, w, h){
var result = new Object();
result.element= element;
result.x = x;
result.y = y;
result.h = h;
result.w = w;
return result;
}

function toggleKey(keyCode, isPressed) {
if (keyCode == LEFT_KEY) {
controller.left = isPressed;
}
if (keyCode == RIGHT_KEY) {
controller.right = isPressed;
}
if (keyCode == DOWN_KEY) {
controller.down = isPressed;
}
if (keyCode == UP_KEY)
controller.up = isPressed;
}
if (keyCode == SPACE_KEY) {
controller.space = isPressed;
}

function ensureBounds(sprite){
if (sprite.x<20){
sprite.x=20;
}
if (sprite.y<20){
sprite.y=20;
}
if (sprite.x + sprite.h>580){
sprite.x=580-sprite.h;
}
if (sprite.y + sprite.h>580){
sprite.x=580-sprite.h;
}
}

function setPosition(sprite) {
var e =
e.style.left = sprite.x + 'px';
e.style.top = sprite.y + 'px';
}

function handleControls() {
if (controller.up) {
hero.y -= HERO_MOVEMENT;
}
if (controller.down) {
hero.y += HERO_MOVEMENT;
}
if (controller.left) {
hero.x -= HERO_MOVEMENT;
}

if (controller.right) {
hero.x += HERO_MOVEMENT;
}
if (controller.space && laser.y<=-20) {
laser.x += hero.x + 9;
laser.y = hero.y - laser.h;
}
ensureBounds(hero);
}

function showSprites() {
setPosition(hero);
setPosition(laser);
for (var i =0; i< enemies.length;i++){

}
}
function updatePositions() {
for(var i=0; i< enemies.length; i++){
enemies[i].y += 4;
enemies[i].x += getRandom(7)-3;
}
laser.y-=12;

}
function addEnemy() {
if(getRandom(50)==0){
var elementName = 'enemy' +
var enemy = createSprite( elementName, getRandom(450), -40, 35, 35);
var element
element.id =enemy.element;
element.className= 'enemy';


enemies[enemies.length]
}
}
function getRandom(maxSize){
return parseInt(Math.random() *maxSize);
}
function loop() {
if (new Date().getTime() - lastLoopRun > 40 ){
updatePositions();
handleControls();
addEnemy();
showSprites();

lastLoopRun = new Date().getTime();
}

setTimeout('loop();', 2);

}

document.onkeydown = function(evt) {
toggleKey(evt.keyCode, true);
};

document.onkeyup = function(evt){
toggleKey(evt.keyCode, false);
};


var hero= createSprite('hero', 250, 460, 20, 20);
var laser= createSprite('laser', 0, -120, 2, 50);

loop();

</script>
</body>
</html>

TheKillerninga
join shbcf.ru