I'm new to JavaScript. I've worked my work through Learning JavaScript (o'reilly) but am just trying to make my first JavaScript.
I thought it best to work on something I'm interested in and as it turned out is fairly complicated.
I'm basically trying to simulate (eventually) a situation in Space Hulk (Boardgame) where a Genestealer has 12 steps between him and the Space Marine. On the first step its 6 on either dice to kill the Genestealer, and after that 5 or 6 to kill. The gun jams if the number on the dice is the same.
I'm just trying to emulate the first step here. I think the problem is with jamCheck.
Basically this outputs as always true, even if I change it to != it always shows gun jammed.
I wondered if the variable needed to be passed into another local variable, but it works for killCheck without having to do this. (and I tried it, although I may be doing it wrong)
It is completely possible there is something really simple wrong here.
I hope you can help, or point me in the right direction.
Many thanks!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>SH</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript"> //<![CDATA[ function diceRoll1() { iValue = Math.random(); // random number between 0 and 1 iValue *= 6; // multiply by 6 to move the decimal iValue = Math.floor(iValue)+1; // round to nearest integer. +1 to 1-6. var roll1 = iValue; document.getElementById('result1').innerHTML = 'Dice roll 1 : ' + roll1; killCheck (roll1); jamCheck (roll1); return; } function diceRoll2() { iValue = Math.random(); // random number between 0 and 1 iValue *= 6; // multiply by 6 to move the decimal iValue = Math.floor(iValue)+1; // round to nearest integer. +1 to 1-6. var roll2 = iValue; document.getElementById('result2').innerHTML = 'Dice roll 2 : ' + roll2; killCheck (roll2); jamCheck (roll2); return; } function killCheck(roll1,roll2){ if (roll1==6 || roll2==6) { document.getElementById('kill').innerHTML = 'GS KILLED'; } return; } function jamCheck(roll1,roll2){ if (roll1 == roll2) { document.getElementById('jam').innerHTML = 'GUN JAMMED'; } return; } //]]> </script> </head> <body onload="diceRoll1();diceRoll2();killCheck();jamCheck();"> <p id="result1">Dice roll 1</p> <p id="result2">Dice roll 2</p> <p id="kill">GS ALIVE</p> <p id="jam">GUN FINE</p> </body> </html> EDIT: I eventually got there with a lot of help from a friend; here is the current code:
... function getDiceValue() { var diceValue = Math.random(); diceValue *= 6; diceValue = Math.floor(diceValue) + 1; return diceValue; } function killCheck(roll1, roll2) { if (roll1 === 6 || roll2 === 6) { document.getElementById('kill').innerHTML = 'GS KILLED'; } return; } function jamCheck(roll1, roll2){ if (roll1 === roll2) { document.getElementById('jam').innerHTML = 'GUN JAMMED'; } return; } function rollDice() { var roll1 = getDiceValue(), roll2 = getDiceValue(); document.getElementById('result1').innerHTML = 'Dice roll 1 : ' + roll1; document.getElementById('result2').innerHTML = 'Dice roll 2 : ' + roll2; killCheck (roll1, roll2); jamCheck (roll1, roll2); } //]]> ... <body onload="rollDice();">