PDA

View Full Version : مشکل با جاوااسکریپت(بازی پازل)



aliblue
دوشنبه 05 فروردین 1392, 19:38 عصر
سلام.این صفحه که ساختم مشکلش چیه؟
101907
اگر بر روی یک قطعه(مثلا قطعه شماره 8 که araye[1][0]=8)کلیک کنیم ، برای down یعنی araye[i][j+1] مقدار undefiend نمایش داده میشه و برای right هم اگر عبارت araye [i+1][j] را بنویسم ، کلا alert کار نمیکنه.ولی با Up , Left مشکلی نداره.مثلا روی قطعه 6 کلیک کنید و بعد از ok کردن alert ها میبینید که قطعه به چپ حرکت میکنه.
مشکل از چیه؟ممنون.

mehbod.rayaneh
سه شنبه 06 فروردین 1392, 00:30 صبح
سلام
توی تالار جاوا اسکریپت مطرح کنید زودتر به نتیجه می رسید.
موفق باشید

aliblue
سه شنبه 06 فروردین 1392, 11:28 صبح
مشکل حل شد.باید به عدد صحیح تبدیل می کردم.

var i = parseInt($(this).find(".i").text());

Mohsen.
چهارشنبه 07 فروردین 1392, 19:17 عصر
سلام
بازی خوبیه. ولی یکم میشه توی کدنویسیش بهتر عمل کرد. من کد شما رو به کد زیر تبدیل کردم. فکر کنم بهتر شده. البته کاملش نکردم.
با توجه به کدی که من نوشتم باید قسمت تشخیص عدد 10 دوباره کد نویسی بشه. البته الانم کار میکنه ولی یکم کدش ناجوره.
موفق باشی
کد صفحه اصلی:


<!DOCTYPE html>
<html>
<head>
<title></title>
<link href="style.css" rel="stylesheet" type="text/css" />
<script src="jquery-1.9.0.min.js" type="text/javascript"></script>
</head>
<body>
<script type='text/javascript'>
var araye = new Array();

araye[0] = new Array(); araye[0][0] = 4; araye[0][1] = 5; araye[0][2] = 7;
araye[1] = new Array(); araye[1][0] = 8; araye[1][1] = 2; araye[1][2] = 9;
araye[2] = new Array(); araye[2][0] = 10; araye[2][1] = 3; araye[2][2] = 6;
</script>

<div class='block'style='top:0px;left:0px;'>
<div class='text' i="0" j="0">4</div>
</div>
<div class='block'style='top:120px;left:0px;'>
<div class='text' i="0" j="1">5</div>
</div>
<div class='block'style='top:240px;left:0px;'>
<div class='text' i="0" j="2">7</div>
</div>
<div class='block'style='top:0px;left:120px;'>
<div class='text' i="1" j="0">8</div>
</div>
<div class='block'style='top:120px;left:120px;'>
<div class='text' i="1" j="1">2</div>
</div>
<div class='block'style='top:240px;left:120px;'>
<div class='text' i="1" j="2">9</div>
</div>
<div class='block'style='top:0px;left:240px;'>
<div class='text' i="2" j="0">10</div>
</div>
<div class='block'style='top:120px;left:240px;'>
<div class='text' i="2" j="1">3</div>
</div>
<div class='block'style='top:240px;left:240px;'>
<div class='text' i="2" j="2">6</div>
</div>

<script type="text/javascript">
$(document).ready(function () {

$(".block").click(function () {
var i = parseInt($(this).find(".text").attr('i'));
var j = parseInt($(this).find(".text").attr('j'));
var min = 0;
var max = 2;
var left = true;
var right = true;
var top = true;
var bottom = true;

alert(i + " " + j);

if (i - 1 < min) {left = false;}
if (i + 1 > max) {right = false;}
if (j - 1 < min) {top = false;}
if (j + 1 > max) {bottom = false;}

alert("Left: " + left + "\nRight: " + right + "\nTop: " + top + "\nBottom: " + bottom);

if (araye[i][j - 1] == "10") {

$(this).animate({ top: '-=120' });
araye[i][j - 1] = araye[i][j];
araye[i][j] = "-1";

$(this).find(".j").text(j - 1);
}
else if (araye[i][j + 1] == "10") {
$(this).animate({ top: '+=120' });
araye[i][j + 1] = araye[i][j];
araye[i][j] = "-1";

$(this).find(".j").text(j + 1);
}

else if (araye[i - 1][j] == "10") {
$(this).animate({ left: '-=120' });
araye[i - 1][j] = araye[i][j];
araye[i][j] = "-1";

$(this).find(".i").text(i - 1);
}

else if (araye[i + 1][j] == "10") {
$(this).animate({ left: '+=120' });
araye[i + 1][j] = araye[i][j];
araye[i][j] = "-1";

$(this).find(".i").text(i + 1);
}
});

});
</script>


</body>
</html>