gpt4 book ai didi

javascript - 永无止境的循环?

转载 作者:行者123 更新时间:2023-11-30 16:53:14 25 4
gpt4 key购买 nike

我试图在页面上的随机位置显示 3 个提交按钮。我设法做到了这一点。我现在创建了三个函数来生成这些按钮的坐标,并检查它们是否与其他按钮重叠太多。

我认为我在这些函数的某处创建了一个无限循环 - 但我不明白为什么会这样......

这是代码。这些函数在 header 中定义和调用。

<?php session_start(); ?>
<html>
<head>
<style>
input[type='submit']{
position: absolute;
width: 300;
height: 50;
color: white;
background: red;
}
</style>
<?php

$first=array(2,4,8,10);
$second=array(2,4,8,10);

$b=rand(0,3);
$c=rand(0,3);

$f=$first[$b];
$s=$second[$c];

$d=$f*$s;
$score=$_SESSION["score"];
$name=$_SESSION["name"];

function firstxy(){

$x1=rand(0,500);
$y1=rand(0,500);
}

function secondxy(){
$x2=rand(0,500);
$y2=rand(0,500);
if ($x2-$x1<30 ||$x1-$x2<30){
secondxy();
}
if ($y2-$y1<30 ||$y1-$y2<30){
secondxy();
}}

function thirdxy(){
$x3=rand(0,500);
$y3=rand(0,500);
if ($x3-$x2<30 ||$x3-$x1<30||$x2-$x3<30||$x1-$x3<30){
thirdxy();
}
if ($y3-$y2<30 ||$y3-$y1<30||$y2-$y3<30||$y1-$y3<30){
thirdxy();
}}

firstxy();

secondxy();

thirdxy();
?>
</head>
<body>

<?php

echo $name." your score so far=".$score;
echo "<br>";
?>

<?php echo"Write the answer";?>
<br>
<?php echo $f."x".$s."=";?>
<form method= "post" action="submit.php">
<input type="number" name=a value="0">
<input type="hidden" name=b value=<?php echo $f;?>>
<input type="hidden" name=c value=<?php echo $s;?>>
<input type="submit" name=submit value=<?php echo $d;?>>

<input type="submit" id="btn" value=<?php echo $d;?>>
<input type="submit" id="btn2" value=<?php echo " Wrong answer";?>>
<input type="submit" id="btn3" value=<?php echo " Wrong answer";?>>
</form>
<script>
var btn = document.getElementById("btn");
//btn.style.top = Math.floor((Math.random() * 230) + 1) + "px";
//btn.style.left = Math.floor((Math.random() * 200) + 1) + "px";
btn.style.top = <?php echo $x1;?>+ "px";
btn.style.left = <?php echo $y1;?> + "px";

var btn2 = document.getElementById("btn2");
//btn2.style.top = Math.floor((Math.random() * 230) + 1) + "px";
//btn2.style.left = Math.floor((Math.random() * 200) + 1) + "px";
btn2.style.top = <?php echo $x2;?>+ "px";
btn2.style.left = <?php echo $y2;?> + "px";

var btn3 = document.getElementById("btn3");
//btn3.style.top = Math.floor((Math.random() * 230) + 1) + "px";
//btn3.style.left = Math.floor((Math.random() * 200) + 1) + "px";
btn3.style.top = <?php echo $x3;?>+ "px";
btn3.style.left = <?php echo $y3;?> + "px";
</script>

</body></html>

最佳答案

检查重叠时,应使用 abs()。以下条件将始终通过,因为 $x2-$x1 或 $x1-$x2 之一将为负数(因此小于 30)。

if ($x2-$x1<30 ||$x1-$x2<30)

尝试做类似的事情

if (abs($x2-$x1) < 30){

关于javascript - 永无止境的循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30176223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com