Programovacie jazyky, rady, poradňa...
4chan
Zablokovaný
Príspevky: 20 Registrovaný: 01 mar 2016, 14:19
Bydlisko: Hegridová Chatrč
Príspevok
od používateľa 4chan » 02 mar 2016, 20:15
nejde mi moja JS hra neviem kde je chyba.
Kód: Vybrať všetko
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title></title>
<style>
#hero{
background:red;
width:20px;
height:20px;
position:absolute;
}
</style>
</head>
<body>
<div id = "hero"></div>
<script>
var HERO_MOVEMENT = 5;
var lastLoopRun = 0;
var LEFT_KEY = 37;
var UP_KEY = 38;
var RIGHT_KEY = 40;
var hero = new Object();
hero.element = "hero";
hero.x = 250;
hero.y = 460;
hero.w = 20;
var controller = new Object();
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;
}
}
function showSprites(){
setPosition(hero);
}
function loop(){
if (new Date().getTime() - lastLoopRun > 40){
handleControls();
showSprites();
lastLoopRun = new Date().getTime();
}
setTimeout("loop();",2);
}
function setPosition(sprite){
var e = document.getElementById(sprite.element);
e.style.left = sprite.x + "px";
e.style.top = sprite.y + "px";
}
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;
}
}
loop();
document.onkeydown = function(evt){
togglekey(evt.KeyCode,true);
} ;
document.onkeyup = function (evt){
togglekey(evt.KeyCode,false);
}
</script>
</body>
</html>
4chan
Zablokovaný
Príspevky: 20 Registrovaný: 01 mar 2016, 14:19
Bydlisko: Hegridová Chatrč
Príspevok
od používateľa 4chan » 02 mar 2016, 21:09
sorry zabudol som. tomuto sa nedá povedať hra ,ale iba taká "arrow key ovládačka". chyba je tam že hero by sa mal hýbať a nehýbe sa
.
Frikso
Darca
Príspevky: 4777 Registrovaný: 07 mar 2006, 19:09
Príspevok
od používateľa Frikso » 02 mar 2016, 21:14
Počuješ? Máš sa hýbať
4chan
Zablokovaný
Príspevky: 20 Registrovaný: 01 mar 2016, 14:19
Bydlisko: Hegridová Chatrč
Príspevok
od používateľa 4chan » 02 mar 2016, 21:18
aacid
Hardcore addict
Príspevky: 8135 Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA
Príspevok
od používateľa aacid » 02 mar 2016, 22:21
ked si to otvoris v chrome, das pravym inspect element, tak v zalozke Sources vies normalne debugovat, davat breakpointy a pekne postupne zistis co sa deje.
hned zistis ze evt.KeyCode neexistuje, pretoze je to evt.keyCode. tiez DOWN_KEY nemas nikde zadefinovane.
neviem ci to vyriesi vsetky tvoje problemy, ale je to slusny zaciatok
4chan
Zablokovaný
Príspevky: 20 Registrovaný: 01 mar 2016, 14:19
Bydlisko: Hegridová Chatrč
Príspevok
od používateľa 4chan » 02 mar 2016, 23:39
opravil som tie chyby ale na ďalšie neviem prísť, ale teraz do konzole nepíše nič vtedy tam písalo chyby. neviem pozrel som to niekoľko krát ale nič som nenašiel.
aktuálny kod :
Kód: Vybrať všetko
<!DOCTYPE HTML >
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>test</title>
<style>
#hero{
background:red;
width:20px;
height:20px;
}
</style>
</head>
<body>
<div id = "hra1"></div>
<script>
var HERO_MOVEMENT = 5;
var lastLoopRun = 0;
var LEFT_KEY = 37;
var UP_KEY = 38;
var RIGHT_KEY = 39;
var DOWN_KEY = 40;
var hero = new Object();
hero.element = "hero";
hero.x = 250;
hero.y = 460;
hero.w = 20;
var controller = new Object();
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;
}
}
function showSprites(){
setPosition(hero);
}
function loop(){
if (new Date().getTime() - lastLoopRun > 40){
handleControls();
showSprites();
lastLoopRun = new Date().getTime();
} setTimeout("loop();",2); }
function setPosition(sprite){
var e = document.getElementById(sprite.element);
e.style.left = sprite.x + "px";
e.style.top = sprite.y + "px";
}
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;
}
}
loop();
document.onkeydown = function(evt){
togglekey(evt.keyCode,true);
} ;
document.onkeyup = function (evt){
togglekey(evt.keyCode,false);
}
</script>
</body>
</html>
aacid
Hardcore addict
Príspevky: 8135 Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA
Príspevok
od používateľa aacid » 02 mar 2016, 23:57
ako je mozne ze tebe nepise ziadne chyby, ked mne hej?
ak by si opravil len to co som napisal ja, tak ti to pojde. ty si ale zrusil z css position:absolute, zmenil si nazov divu ale nezmenil ho v skripte... jasne ze ti to nejde potom.
tu je navod ako debugovat, pokial si to nikdy nerobil, doporucujem naucit sa, vdaka tomu hned vidis co program robi a preco nefunguje tak ako si predtavujes:
https://developer.chrome.com/devtools/d ... -debugging
4chan
Zablokovaný
Príspevky: 20 Registrovaný: 01 mar 2016, 14:19
Bydlisko: Hegridová Chatrč
Príspevok
od používateľa 4chan » 03 mar 2016, 0:20
dk super
. ide to. posledná chybička,ako si napísal bola v css position:absolute že tam chýbalo . thx