我正在尝试javascript,到目前为止,我一直在努力做到这一点。虽然我意识到我所做的大部分工作可能都是错误的,或效率低下的。
我的第一个"项目"我试图做一个基本的游戏。点击镐,它会为你的总岩石增加+1。在你击中5个岩石后,你可以买一把铲子,它会以每秒一个的速度开始为你生成岩石。我目前不得不将此设置为每秒1,因为1以下的任何内容似乎都无效。
我的代码(由于我经常调整它,它仍然有些混乱):
HTML:
Total Rocks: <input id="txtNumber" type="text" value="0" onfocus="this.blur()" style=" border:none; text-align:center; background-color:transparent;" />
<br>
<img style="border:0;" src="http://img2.wikia.nocookie.net/__cb20130308043142/minecraftpocketedition/images/6/6d/Pickaxe_1.jpeg" onclick="javascript:add()">
<br>
Rocks per second: <input id="perSec" type="text" value="0" onfocus="this.blur()" style="width:30px; border:none; text-align:center; background-color:transparent;" />
<br>
Shovel(<input id="shovelCount" type="text" value="0" onfocus="this.blur()" style="width:20px; border:none; text-align:center; background-color:transparent;" />): 5 rocks
<input id="shovelBuy" type="button" value="Buy" onclick="javascript:shovel()"/>
</body>
使用Javascript:
var totalRocks = 0;
var rocksPerSec = 0;
function increment() {
var txtNumber = document.getElementById("txtNumber");
var newNumber = parseInt(txtNumber.value, 10) + rocksPerSec;
txtNumber.value = newNumber;
}
setInterval(function(){increment();}, 1000);
function add()
{
var txtNumber = document.getElementById("txtNumber");
var newNumber = parseInt(txtNumber.value, 10) + 1;
txtNumber.value = newNumber;
}
function shovel()
{
var txtNumber = document.getElementById("txtNumber");
var value = parseInt(txtNumber.value, 10);
if(value >= 5){
var newNumber = parseInt(txtNumber.value, 10) - 5;
txtNumber.value = newNumber;
var shovelCount = document.getElementById("shovelCount");
var newCount = parseInt(shovelCount.value, 10) + 1;
shovelCount.value = newCount;
rocksPerSec = rocksPerSec +1;
return false;
}
}
我的问题:为什么我不能用十进制值递增计数器(rockPerSec)?
答案 0 :(得分:1)
我让this小提琴..你基本上不得不用parseInt()
取代parseFloat()
,如果你问'为什么?&#34;,答案因为如果你想将岩石的数字递增0.2,例如,parseInt(0.2)
总是0.所以你总是将0.2添加到0并将其解析回0 ..希望它有帮助..
var totalRocks = 0;
var rocksPerSec = 0;
function increment() {
var txtNumber = document.getElementById("txtNumber");
var newNumber = parseFloat(txtNumber.value, 10) + rocksPerSec;
txtNumber.value = newNumber;
}
setInterval(function(){increment();}, 1000);
function add()
{
var txtNumber = document.getElementById("txtNumber");
var newNumber = parseFloat(txtNumber.value, 10) + 1;
txtNumber.value = newNumber;
}
function shovel()
{
var txtNumber = document.getElementById("txtNumber");
var value = parseFloat(txtNumber.value, 10);
if(value >= 5){
var newNumber = parseInt(txtNumber.value, 10) - 5;
txtNumber.value = newNumber;
var shovelCount = document.getElementById("shovelCount");
var newCount = parseFloat(shovelCount.value, 10) + 1;
shovelCount.value = newCount;
rocksPerSec = rocksPerSec + 0.2;
return false;
}
}
答案 1 :(得分:1)
作为第一个项目的帮助,我认为我提出了构建代码的建议
jsfiddle:http://jsfiddle.net/j8CJS/
您可以使用
启动代码var miner = new Miner();
miner.start();
它还允许重置和停止(或者更确切地说)当前游戏。当相对属性发生变化时,你的html代码会发生变化,并添加一些我通常会从jquery中借用的函数:)