|
|
|
| Итак есть игра крестики - нолики
файл index.php
<?
if (empty($mode))
{
$mode='k0';
}
switch ($mode)
{
case "k0":
include ("1.php");
global $b;
global $gwin;
global $gover;
$cdiff = 'Normal';
if (isset($_GET['new']))
{
unset($b);
unset($turn);
$_SESSION['play']=12345;
}
if (!isset($turn))
{
$turn=1;
}
if(!empty($h))
{
$h=base64_decode($h);
$b=explode(".",$h);
}
echo "<table columns='3' align='LL'>";
if (isset($_GET['mv']))
$b[$_GET['mv']]='x';
checkwin();
checkfull();
if ($gover <> 1 && $gwin == '' && $b <> '')
{
$what=rand(1,2);
if($what==1)
{
compmove();
if ($cmv == '')
{
comprand();
}
}
else
{
compmove();
if ($cmv == '')
{
if ($b[4] == '')
$cmv=4;
elseif ($b[0] == '')
$cmv=0;
elseif ($b[2] == '')
$cmv=2;
elseif ($b[6] == '')
$cmv=6;
elseif ($b[8] == '')
$cmv=8;
if ($cmv == '')
comprand();
}
}
$b[$cmv] = 'o';
}
checkwin();
checkfull();
for ($i = 0; $i <= 8; $i++)
{
if ($i == 0 || $i == 3 || $i == 6)
echo "<tr>";
echo "<td>";
if ($b[$i] == 'x')
echo "X";
elseif ($b[$i] == 'o')
echo "0";
elseif ($gwin == '')
{
echo "<a href='?mv=$i&h=".base64_encode("$b[0].$b[1].$b[2].$b[3].$b[4].$b[5].$b[6].$b[7].$b[8]")."&mode=k0'>".$i."</a>";
}
echo "</td>";
if ($i == 2 || $i == 5 || $i == 8)
echo "</tr>";
}
echo "</table>";
if ($gwin == 'X')
{
if(!empty($_SESSION['play']))
{
echo "Ты выиграл 10$$<br/>";
unset($_SESSION['play']);
}
}
elseif ($gwin == 'O')
{
$h='';
if(!empty($_SESSION['play']))
{
echo "Ты проиграл 10 $$<br/>";
unset($_SESSION['play']);
}
}
elseif ($gover == '1')
{
echo "Ничья<br/>";
}
echo $siz1."<a href='?mode=k0&new=1'>новая игра</a><br/>";
break;
}
?>
|
и файл 1.php
<?
function checkfull()
{
global $b;
global $gover;
$gover = 1;
for ($ii = 0; $ii <= 8; $ii++)
{
if ($b[$ii] == '')
{
$gover = 0;
return;
}
}
}
function checkwin()
{
global $b;
global $gwin;
$c=1;
while ($c <= 2)
{
if ($c == 1)
$t='o';
else
$t='x';
if (
($b[0] == $t && $b[1] == $t && $b[2] == $t) || ($b[3] == $t && $b[4] == $t && $b[5] == $t) || ($b[6] == $t && $b[7] == $t && $b[8] == $t) || ($b[0] == $t && $b[3] == $t && $b[6] == $t) || ($b[1] == $t && $b[4] == $t && $b[7] == $t) || ($b[2] == $t && $b[5] == $t && $b[8] == $t) || ($b[0] == $t && $b[4] == $t && $b[8] == $t) || ($b[2] == $t && $b[4] == $t && $b[6] == $t))
{
$gwin = strtoupper($t);
return;
}
$c++;
}
}
function compmove()
{
global $cmv;
global $b;
for ($c = 0; $c <=1; $c++)
{
if ($c == 0)
$t='o';
else
$t='x';
if ($b[0] == $t && $b[1] == $t && $b[2] == '')
$cmv = 2;
if ($b[0] == $t && $b[1] == '' && $b[2] == $t)
$cmv = 1;
if ($b[0] == '' && $b[1] == $t && $b[2] == $t)
$cmv = 0;
if ($b[3] == $t && $b[4] == $t && $b[5] == '')
$cmv = 5;
if ($b[3] == $t && $b[4] == '' && $b[5] == $t)
$cmv = 4;
if ($b[3] == '' && $b[4] == $t && $b[5] == $t)
$cmv = 3;
if ($b[6] == $t && $b[7] == $t && $b[8] == '')
$cmv = 8;
if ($b[6] == $t && $b[7] == '' && $b[8] == $t)
$cmv = 7;
if ($b[6] == '' && $b[7] == $t && $b[8] == $t)
$cmv = 6;
if ($b[0] == $t && $b[3] == $t && $b[6] == '')
$cmv = 6;
if ($b[0] == $t && $b[3] == '' && $b[6] == $t)
$cmv = 3;
if ($b[0] == '' && $b[3] == $t && $b[6] == $t)
$cmv = 0;
if ($b[1] == $t && $b[4] == $t && $b[7] == '')
$cmv = 7;
if ($b[1] == $t && $b[4] == '' && $b[7] == $t)
$cmv = 4;
if ($b[1] == '' && $b[4] == $t && $b[7] == $t)
$cmv = 1;
if ($b[2] == $t && $b[5] == $t && $b[8] == '')
$cmv = 8;
if ($b[2] == $t && $b[5] == '' && $b[8] == $t)
$cmv = 5;
if ($b[2] == '' && $b[5] == $t && $b[8] == $t)
$cmv = 2;
if ($b[0] == $t && $b[4] == $t && $b[8] == '')
$cmv = 8;
if ($b[0] == $t && $b[4] == '' && $b[8] == $t)
$cmv = 4;
if ($b[0] == '' && $b[4] == $t && $b[8] == $t)
$cmv = 0;
if ($b[2] == $t && $b[4] == $t && $b[6] == '')
$cmv = 6;
if ($b[2] == $t && $b[4] == '' && $b[6] == $t)
$cmv = 4;
if ($b[2] == '' && $b[4] == $t && $b[6] == $t)
$cmv = 2;
if ($cmv <> '')
break;
}
}
function comprand()
{
global $b;
global $cmv;
srand ((double) microtime() * 1000000);
while (! isset($cmv))
{
$test=rand(0, 8);
if ($b[$test] == '')
$cmv=$test;
}
}
?>
|
так вот при нажатии на любую цифру, выскакивает такого рода ошибка
Notice: Undefined offset: от 0 до 8 in /.....
|
подскажите что не так? | |
|
|
|
|
|
|
|
для: chexov
(17.03.2008 в 12:50)
| | ну кто нибудь... | |
|
|
|
|
|
|
|
для: chexov
(17.03.2008 в 14:55)
| | полный текст ошибки в студию. | |
|
|
|
|
|
|
|
для: Antohins
(17.03.2008 в 14:59)
| | вообще там 81 строка одного вида
Notice: Undefined offset: 0 in /home/index.php on line 30
|
меняется только строка (online) и значение после Offset: | |
|
|
|
|
|
|
|
для: chexov
(17.03.2008 в 14:55)
| | и вообще это не ошибка, а предупреждение.. ничего серьезного короч. может переменная не задана.
для каждой получаемой переменной сделай условие if(isset$var)) и думаю норм все буит | |
|
|
|
|
|
|
|
для: Antohins
(17.03.2008 в 15:01)
| | я убираю сообщения об ошибках(предупреждениях) скрипт не выполняется нужным образом, задействованы всего 2 цифры из 9 (а не все по порядку) | |
|
|
|
|
|
|
|
для: chexov
(17.03.2008 в 15:02)
| | не вникал в код.
попробуйте не просто $h а $_GET['h'] | |
|
|
|
|
|
|
|
для: Antohins
(17.03.2008 в 15:20)
| | если я правильно понял, что переменная $h формируется на 82 строчке. | |
|
|
|
|
|
|
|
для: Antohins
(17.03.2008 в 15:20)
| | скопируйте код себе, он вполне работоспособный, ошибка влияет лишь на верность логики | |
|
|
|
|
|
|
|
для: chexov
(17.03.2008 в 15:30)
| | у меня на денвере все норм работает ) | |
|
|
|
|
|
|
|
для: Antohins
(17.03.2008 в 15:41)
| | да я знаю что на локале все ок, на хосте капризничает | |
|
|
|
|
|
|
|
для: chexov
(17.03.2008 в 12:50)
| | А где же у вас сама сессия стартуется? Работаете с ней, а старта ее не видно. | |
|
|
|
|
|
|
|
для: sim5
(17.03.2008 в 15:52)
| | Интересно, а почему на денвере тогда работает? | |
|
|
|
|
|
|
|
для: sim5
(17.03.2008 в 15:52)
| | какая сессия? вы видите сессии? там бэйс код 64 используется | |
|
|
|
|
|
|
|
для: chexov
(17.03.2008 в 16:17)
| | все ,я нашел причину, прописал всем передающимся переменным $_GET | |
|
|
|
|
|
|
|
для: chexov
(17.03.2008 в 16:30)
| | вот именно. в денвере без $_ГЕТ прокатит, но не на норм серверах | |
|
|
|
|
|
|
|
для: chexov
(17.03.2008 в 16:17)
| | >какая сессия? вы видите сессии?
$_SESSION['play']=12345; - а это что? | |
|
|
|
|
автор: Wunderbar (17.03.2008 в 17:28) |
|
|
для: sim5
(17.03.2008 в 17:11)
| | >$_SESSION['play']=12345; - а это что?
Это человек из чужого скрипта забыл убрать лишнее. | |
|
|
|
|
|
|
|
для: Wunderbar
(17.03.2008 в 17:28)
| | Похоже, а потом удивляемся. :) | |
|
|
|