Beginners JavaScript
Beginners JavaScript
我是 JavaScript 的新手。我已经通过学习JavaScript(o'reilly(完成了我的工作,但我只是想做我的第一个JavaScript。
我认为最好做一些我感兴趣的事情,事实证明这是相当复杂的。
我基本上是在尝试(最终(模拟太空绿巨人(棋盘游戏(中的情况,其中基因窃取者在他和太空海军陆战队之间有 12 步。第一步,它的6在骰子上杀死Genestealer,然后5或6杀死Genestealer。如果骰子上的数字相同,枪就会卡住。
我只是想在这里模仿第一步。我认为问题出在果酱检查上。
基本上,这输出一如既往,即使我将其更改为 != 它总是显示枪卡住。
我想知道该变量是否需要传递到另一个局部变量中,但它适用于 killCheck,而无需执行此操作。(我试过了,虽然我可能做错了(
这里完全有可能有一些非常简单的错误。
我希望你能提供帮助,或者为我指出正确的方向。
非常感谢!
<!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>
编辑:我最终在朋友的很多帮助下到达了那里; 这是当前的代码:
...
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();">
Math.floor(( 向下舍入(想想名字...ceil 四舍五入(如果你真的想四舍五入到"最近"整数,你需要使用 Math.round((。
在您的情况下,如果您乘以 6 并向下舍入,您将永远不会得到大于 5 的数字。
我怀疑这是你的问题,尽管我只看了一眼你的代码,所以,如果这只是一个错误而不是你问题的原因,请原谅我。
[编辑]经过进一步思考,忽略上述内容。 问题是您的方法需要 2 个参数,但您只传入一个参数。
我认为您误解了参数传递的工作方式。
jamCheck(p1, p2){}
你给这些命名的无关紧要。这些标签仅存在于您的方法中。我怀疑让您感到困惑的是,您对传入的变量以及方法中的变量使用相同的标签。 因此,当您调用方法jamCheck(roll1(时,它无法执行所需的操作,因为它被设计为处理2个变量。 除此之外,无论你得到什么结果,都只是浏览器试图弥补语法被破坏的代码。 在 C 或 Java 等语言中,您甚至无法编译此类代码;编译器会指出这些行没有任何意义。
所以,解决方案是(类似(...
var roll1,roll2;
roll1 = diceRoll1();
roll2 = diceRoll2();
jamCheck(roll1,roll2);
killCheck(roll1,roll2);
但是在你的diceRoll方法中,你需要做的最后一件事就是return roll1;
(或分别是roll2(
看看 kirean 的答案,了解如何将这一切包装在一个 init 方法中,这样你就不会从正文的 onload 回调调用 4 个(或更多(方法。
你在这里做错了几件事,首先是将函数范围的变量与全局范围的变量混淆了。
此函数
function jamCheck(roll1,roll2){
if (roll1 == roll2)
{
document.getElementById('jam').innerHTML = 'GUN JAMMED';
}
return;
}
需要两个参数,但您在此处没有传入任何参数body onload="...jamcheck()"
等于未定义,所以它当然是正确的。
你需要一个类似于这样的包装函数
function executeGame(){
var dice1 = rollDice1();
var dice2 = rollDice2();
jamCheck(dice1, dice2)
}
然后在身体加载时调用此函数。
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在Javascript中将JSon对象转换为数组
- Javascript生成的表单未提交
- Beginners JavaScript
- javascript for beginners