Здравствуйте!! Я не так давно начал учить рнр, и решил для начала написать шахматы. Проблема в том, что я не могу правильно вывести фигуры на шахматную доску, так чтобы уusera1 были белые, а у usera2 черные. Я вывел так на белой клеточке черная фигура, а на черной белая. Нужна ваша помощь, очень(((( Вот мой код с выводом: Код (PHP): <?php elseif(($i+$j)%2 !== 0) { $sk=$pp.$j; $s=$array[$sk]; print "<td class='black' id='" . $id . "'>"; if ($s!='' and $user=1) print "<a href='#' class='figura'><img src='images/".$array[$sk]."_white.png'></a>"; print "</td>"; } else { $sk=$pp.$j; $s=$array[$sk]; print "<td class='white' id='" . $id . "'>"; if($s!='' and $user=2) print "<a href='#' class='figura'><img src='images/".$array[$sk]."_black.png'></a>"; print "</td>"; } Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
сам давно думал об этом, но потом понял, что это не просто... алгоритм просчета ходов нужен, + возможность подсоединения в игру двум игрокам сразу и куча других моментов. Добавлено спустя 1 минуту 3 секунды: и на одном только пыхе далеко и красиво не поедешь.
На данный момент у меня стоит задача правильно расставить фигуры, а дальше уже посмотрим, я же не только рнр учить буду
Первоначальные позиции же всегда известны. Создай массив с расположением фигур а дальше в цикле выводи. Добавлено спустя 36 секунд: а вообще зря с шахмат начал
координаты фигур я задал в БД, массив уже создал Добавлено спустя 1 минуту 30 секунд: вот весь код: Код (PHP): <body> <head> <meta charset="utf-8"> </head> <style> .user{ margin-left: 250px; } .figura:hover { background-color:#0088cc; height: 40px; } .white { background-color: white; } .black { background-color: black; } .number { height: 40px; } td{ width: 40px; background-position: center; background-repeat: no-repeat; } .table1{ margin: auto; } </style> <p align="center">user1</p> <table border="1px" width="500" height="500" cellpadding="0" cellspacing="0" class="table1"> <?php ini_set('error_reporting', 1); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); $dblocation = "localhost"; $dbname = "chess"; $dbuser = "root1"; $dbpasswd = "123456"; $dbcnx = mysql_connect($dblocation, $dbuser, $dbpasswd); if (!$dbcnx) { echo "<p>Приносим свои извенения. Сервер баз данных временно недоступен. В ближайшее время мы постараемся исправить эту проблему. </p>"; exit(); } if (!mysql_select_db($dbname,$dbcnx)) { echo "<p>К сожалению, не доступна база данных</p>"; exit(); } mysql_query('SET NAMES utf-8'); $sql1="SELECT p1,p2,figure,user FROM `chessphp` "; $result1 = mysql_query($sql1, $dbcnx); $rows1= mysql_fetch_array($result1,MYSQL_ASSOC); $array=array(); $user=array(); $dbt=''; do { $user=$rows1['user']; $array[$rows1['p2'].$rows1['p1']]=$rows1['figure']; } while ($rows1= mysql_fetch_array($result1,MYSQL_ASSOC)); $id=1; $char = 'A'; print "<tr>"; for ($i=0; $i<9; $i++) { if ($i>0) { print "<td class= number>" . $i . "</td>"; } else { print "<td class= number></td>"; } } print "</tr>"; for($i=1; $i<9; $i++) { print "<tr>"; for($j=0; $j<9; $j++) { if ($j == 0) { print "<td class='number'>" . $char . "</td>"; $pp=$char; $char++; } elseif(($i+$j)%2 !== 0) { $sk=$pp.$j; $s=$array[$sk]; print "<td class='black' id='" . $id . "'>"; if ($s!='' and $user=1) print "<a href='#' class='figura'><img src='images/".$array[$sk]."_white.png'></a>"; print "</td>"; } else { $sk=$pp.$j; $s=$array[$sk]; print "<td class='white' id='" . $id . "'>"; if($s!='' and $user=2) print "<a href='#' class='figura'><img src='images/".$array[$sk]."_black.png'></a>"; print "</td>"; } $id++; } print "</tr>"; } ?> </table> <p align="center">user2</p> </body> </html>
А зачем в бд хранишь? А вообще нафиг это все. Ни каких тебе базы и циклов. Первоначальное положение известно и оно не изменится. Создай таблицу с уже заданным положением.
Шахматы на php... Это же сколько он над ходами думать будет? А вообще, ты хоть представляешь какой алгоритм нужен, чтобы сделать ход? А ты не можешь 16 фигур нарисовать...
Если простенького бота нужно написать хватит глубины просчета не более 1 хода на фигуру. С логикой полезности хода на уровне "потерять фигуру, съесть фигуру, нейтрально, ближе к королю, дальше от короля". Без точной оценки ситуации на поле. Он же не DeepBlue для турнира пишет Пускай пускай. Если ему это интересно, если есть шило в одном месте на эту тему - то справится. Хотя лично я бы полностью делал это на JS. Для сервера хоть убей не вижу тут ни капли работы. Все для клиента. Сервер разве что для связи между двумя клиентами можно юзать, чтобы ходы одного прокидывать другому. И для чатика.
А что такого... Вот мои шахматы на php: https://initit.ru/chess_programming - с объяснениями, "с нуля". В текущей последней статье добавлен грубый перебор - он делает ПОЛНЫЙ просмотр дерева на три полухода вперёд, и тратит на ход в большинстве случаев до 30 секунд. 10-20. Изредка - 40. Это без всяких оптимизаций. и с полным перебором на три полухода. Готовлю к публикации следующую статью, там добавил альфа-бета отсечение, и при глубине 3 полухода программа отвечает почти мгновенно! 4 полухода - пара-тройка секунд. 5 полуходов - так-же, как при полном переборе на полухода - до 30 секунд
Тебе надо в корне переделать код,рисуй доску через <table> или через <div> а не через print Не храни фигуры в базе данных Храни фигуры для каждой игры в файле .тхт Сделай уникальные логины для каждого игрока Сделай файл регистрации партии Если настроен серьезно - то тебе предстоит очень долгая работа Я свою шахматную программу разрабатывал 8 лет Могу проконсультировать ,помочь и дать простейший исходник для доски 8х8 На новой чистой странице php я создам доску за 1 час,и могу тебе показать код Заглядывай на https://кибершахматы.рф Допустим ты расставишь фигуры,но потом будешь думать как сделать простейший ход пешкой Ходы делаются на JS,могу тебе код подкинуть Потом надо писать "матрицы" для каждой фигуры,чтобы пешка не ходила как попало Если ты новичек - то зря начинаешь с шахмат Начинать надо с написания гостевой книги,или мини чата с админкой и банами Фигуры назначаешь здесь: PHP: $arImages = array( // перечисляешь все фигуры // ..... 1 => 'picture/peshka_black.png', 2 => 'picture/tura_black.png', 3 => 'picture/kon_black.png', 4 => 'picture/slon_black.png', 5 => 'picture/ferz_black.png', 6 => 'picture/korol_black.png', 11 => 'picture/peshka.png', 12 => 'picture/tura.png', 13 => 'picture/kon.png', 14 => 'picture/slon.png', 15 => 'picture/ferz.png', 16 => 'picture/korol.png', 40 => 'picture/kletka-0.png', 7 => 'picture/black_princess.png', 17 => 'picture/princess.png', 18 => 'picture/kon2.png', 8 => 'picture/kon_black2.png', 19 => 'picture/peshka3.png', 9 => 'picture/peshka_black3.png', 83 => 'picture/ogon.gif', 81 => 'picture/kletka-2.png', //..... ); Клетки рисуешь так: PHP: <div id="table"> <div class="cell2" id="">8</div> <div class="cell" id="A8" style="background-color:<? echo $color_b[$x]; ?>"><img src="<?echo $arImages[$sh[0]]?>" <? echo 'width='.$width; echo 'height='.$height; ?>></div> <? $x=$x+'1'; ?> <div class="cell dark" id="B8" style="background-color:<? echo $color_b[$x]; ?>"><img src="<?echo $arImages[$sh[1]]?>" <? echo 'width='.$width; echo 'height='.$height; ?>></div> <? $x=$x+'1'; ?> <div class="cell" id="C8" style="background-color:<? echo $color_b[$x]; ?>"><img src="<?echo $arImages[$sh[2]]?>" <? echo 'width='.$width; echo 'height='.$height; ?>></div> <? $x=$x+'1'; ?> <div class="cell dark" id="D8" style="background-color:<? echo $color_b[$x]; ?>"><img src="<?echo $arImages[$sh[3]]?>" <? echo 'width='.$width; echo 'height='.$height; ?>></div> <? $x=$x+'1'; ?> <div class="cell" id="E8" style="background-color:<? echo $color_b[$x]; ?>"><img src="<?echo $arImages[$sh[4]]?>" <? echo 'width='.$width; echo 'height='.$height; ?>></div> <? $x=$x+'1'; ?> <div class="cell dark" id="F8" style="background-color:<? echo $color_b[$x]; ?>"><img src="<?echo $arImages[$sh[5]]?>" <? echo 'width='.$width; echo 'height='.$height; ?>></div> <? $x=$x+'1'; ?> <div class="cell" id="G8" style="background-color:<? echo $color_b[$x]; ?>"><img src="<?echo $arImages[$sh[6]]?>" <? echo 'width='.$width; echo 'height='.$height; ?>></div> <? $x=$x+'1'; ?> <div class="cell dark" id="H8" style="background-color:<? echo $color_b[$x]; ?>"><img src="<?echo $arImages[$sh[7]]?>" <? echo 'width='.$width; echo 'height='.$height; ?>></div>
Мне в 4 утра делать было нечего,я выполнил твою задачу на основе моих исходников Файл doska.php не умещается,не дают разместить код Посмотреть на работу файла doska.php: https://кибершахматы.рф/lessons/doska.php Скачать готовую папку с фигурами и с файлом doska.php: https://кибершахматы.рф/lessons.zip Для игрока 2 просто надо переворачивать доску вверх ногами Бери этот пример,переделывай,оптимизируй,разукрашивай и ВПЕРЕД