Trädvy Permalänk
Medlem
Plats
Tyresö
Registrerad
Apr 2014

Hjälp med ett spel i Jqery!

Hej!

Håller på att bygga ett spel som skolarbete. Spelet är mycket simpelt, man ska vara en box, och sen ska man på tid åka runt på spelplanen och försöka hämta in alla 5 boxar så vinner man. Har dock fått lite problem...

Har försökt att göra så att spelaren endast ska kunna röra sig på spelplanen, men det går inte så bra. Koden kommer nedanför. Just nu har jag endast problem med att få den att både röra sig och stanna åt höger. Koden är under.

$(document).keydown(function(e){
// Ner
if (e.keyCode ==40) {
var spel1Top = $("#spelare1").position().top + $("#spelare1").height() ;
var max = $("#spelplan").height() + $("#spelplan").position().top ;
//console.log("max: " + max+ ", vår:" + spel1Top);
if(spel1Top < max){
$("#spelare1").animate({top: '+=5px'}, 1);
}
}
// Upp
else if (e.keyCode ==38){
var spel1Top = $("#spelare1").position().top;
//console.log("vår:" + spel1Top);
if(spel1Top > 0){
$("#spelare1").animate({top: '-=5px'}, 1);
}
}
// Höger
else if (e.keyCode ==39){
$("#spelare1").animate({left: '+=5px'}, 1);
var spel1Left = $("#spelare1").position().left + $("spelare1").width();
var max = $("spelplan").position().left; + $("spelplan").width();

//console.log(spel1Left + ", " + max);

//if(spel1Left < max){
//$("#spelare1").animate({left: '+=5px'}, 1);
//}
}
// Vänster
else if (e.keyCode ==37){
var spel1Left = $("#spelare1").position().left;
if(spel1Left > 0){
$("#spelare1").animate({left: '-=5px'}, 1);
}
}
});

$(document).keyup(function(e){
if (e.keyCode ==40)
$("#spelare1").clearQueue();
else if (e.keyCode ==38)
$("#spelare1").clearQueue();

else if (e.keyCode ==39)
$("#spelare2").clearQueue();
else if (e.keyCode ==37)
$("#spelare2").clearQueue();

});

Dold text

Får också ett error när jag försöker gå åt höger.

Uncaught TypeError: Cannot read property 'left' of undefined
at HTMLDocument.<anonymous> (Script.js:26)
at HTMLDocument.dispatch (jquery.min.js:3)
at HTMLDocument.q.handle (jquery.min.js:3)

Dold text

verkar som left inte är definierat, men ser inte vad det skulle vara för annorlunda mot när den rör sig höger, då är left definierat.

Tacksam för svar

Intel i7 4770 | GTX 980 stockkylare | Corsair Vengeance 1600MHz | Coolermaster 412S | Evga supernova G2 750w Guld | Nzxt H440 röd | MSI Gaming 5 | Logitech G502 | Benq XL2430T 144 Hz | Xtrify XG1-R | Flygprylar: Thrustmaster warthog | Saitek combat rudder pedals | Oculus rift CV1

Trädvy Permalänk
Medlem
Plats
Hässleholm
Registrerad
Apr 2007

Skrev ihop en fungerande jsfiddle som du kan kolla på:

https://jsfiddle.net/uzuzsoyy/

Försök även undvika svenska när du skriver kod

Datornörd är en livsstil

Mitt crib

Trädvy Permalänk
Medlem
Plats
Tyresö
Registrerad
Apr 2014
Skrivet av Zentix:

Skrev ihop en fungerande jsfiddle som du kan kolla på:

https://jsfiddle.net/uzuzsoyy/

Försök även undvika svenska när du skriver kod

Här har du: https://jsfiddle.net/5a0toqy0/1/
Finns varken bilder eller annat inlagt. Boxarna är till för att spawna in på en fullstor skärm, det är därför dom ligger utanför spelytan.

Intel i7 4770 | GTX 980 stockkylare | Corsair Vengeance 1600MHz | Coolermaster 412S | Evga supernova G2 750w Guld | Nzxt H440 röd | MSI Gaming 5 | Logitech G502 | Benq XL2430T 144 Hz | Xtrify XG1-R | Flygprylar: Thrustmaster warthog | Saitek combat rudder pedals | Oculus rift CV1

Trädvy Permalänk
Medlem
Plats
Tyresö
Registrerad
Apr 2014

Oj vad dum jag känner mig... Kollat igenom koden 1000 gånger känns det som, men ändå missade jag att skriva 2 stycken #...

Intel i7 4770 | GTX 980 stockkylare | Corsair Vengeance 1600MHz | Coolermaster 412S | Evga supernova G2 750w Guld | Nzxt H440 röd | MSI Gaming 5 | Logitech G502 | Benq XL2430T 144 Hz | Xtrify XG1-R | Flygprylar: Thrustmaster warthog | Saitek combat rudder pedals | Oculus rift CV1