所以我完全不知道如何实现这一目标。希望有人可以提供一些指导。我已经构建了一个聊天系统,允许随机掷骰子(用于D& D游戏)。在聊天div中,我有一个表格,允许选择骰子的数量,以及骰子类型(即4面,6面,10面等)。然后它将带有php的表单输入传递给chat.txt文件。我正在使用ajax在chat div中显示chat.txt。
因此,当我最初开始时,我使其功能为1d20(1 20个骰子)。并使用x.value = Math.floor((Math.random()* 20)+1)使其选择1到20之间的随机数。现在我需要它能够检测骰子的数量,如以及骰子的侧面量(d4,d6,d8)。有没有办法将数量和骰子变量传递给math.random?甚至更好,然后分别显示每个数字(意思是说你滚动2 d6并获得5和3 3.我希望它分别显示5和3。但这不是完全需要的,大多数我需要知道如何根据$ quantity和$ dice获得不同的随机范围。或者可能采用一种完全不同的方法?任何和所有的帮助都非常受欢迎。
<div id="pageWrap">
<div id="expander"> Expand</div>
<?php
if(isset($_POST['submit']))//on submit
{
$roll = $_POST['roll'];
$quantity= $_POST['quantity'];
$dice = $_POST['dice'];
$nickname = htmlentities(strip_tags($_POST['nickname']));
$file = fopen('chat.txt', 'a');
fwrite($file, "<span>". $nickname . " :</span>" . $roll = str_replace("\n", " ", " <em> Rolls </em>$quantity $dice <em>for</em> $roll") . "\n");
fclose($file);
}
?>
<form action="" id="rollBox" name="rollBox" method="post">
<input type="text" name="roll" id="demo">
<input type="number" name="quantity" min="1" max="10">
<select name="dice">
<option value="d4">d4</option>
<option value="d6">d6</option>
<option value="d8">d8</option>
<option value="d10">d10</option>
<option value="d12">d12</option>
<option value="d20">d20</option>
</select>
<button type="submit" name="submit" >Roll</button>
</form>
<script>
$(document).ready(function () {
$('#rollBox').submit(function(e) {
var x=document.getElementById("demo")
x.value=Math.floor((Math.random()*20)+1);
e.preventDefault();
var obj = $(this), // (*) references the current object/form each time
url = obj.attr('action'),
method = obj.attr('method'),
data = {};
obj.find('[name]').each(function(index, value) {
var obj = $(this),
name = obj.attr('name'),
value = obj.val();
data[name] = value;
});
$.ajax({
url: url,
type: method,
data: data,
success: function(response2) {}
});
return false;
});
});
</script>
</form>
<p id="name-area"></p>
<div id="chatWrap"><div id="chat-area"></div></div>
<form id="send-message-area">
<p>Your message: </p>
<textarea id="sendie" maxlength = '200' ></textarea>
</form>
</div>
答案 0 :(得分:2)
此函数采用骰子数和骰子类型,并返回一个填充随机数的数组。但是,你需要的是循环,javascirpt循环通过骰子的数量循环并获得每个骰子的随机值。
function getRandome (num_dice , dice_type) {
var result=[];
for (var i = 0 ; i < num_dice; i++) {
result[i] = Math.floor((Math.random()*dice_type)+1)
}
return result;
}
由您决定如何获取输入值,但这是一个完整的答案JS FIDDLE
现在让我们看看这个例子
var num_dice = 5;// number of dices
var dice_type = 3;//3 faces
var randomArray = [] ;//will store the random result here as an array
randomArray = getRandome (num_dice , type );
var randomString = randomeArray.join(",");//convert the array to string adding a comma "," between indexes;
//assign the string result of random to a text field, div, span etc
$("#demo").val(randomString);//jquery
//OR
document.getElementById("demo").value = randomString;//javascript