|
|
|
|
|
для: Valick
(20.07.2012 в 13:15)
| | В принципе игра уже готова, за исключением клиентской части, нужно внешний вид ей предать | |
|
|
|
|
|
|
|
для: pavluxa09
(18.07.2012 в 20:28)
| | для примера покажу функцию которую я писал для морского боя
<?php
//****************************************************************************************
// Функция проверки ранен или убит
// $kor - массив выборки кораблей из БД
// $point - точка выстрела
// $x - размерность поля по горизонтали
// $y - размерность поля по вертикали
//****************************************************************************************
// 1 - фрагмент целого корабля
// 3 - фрагмент раненого корабля
// 4 - фрагмент убитого корабля
//****************************************************************************************
// Автор: Каменев ВВ 2010 г.
//****************************************************************************************
function badship($kor,$point,$x,$y){
$r[$point]=4;
$a=1;
if(isset($kor[$point-$a])){
if($kor[$point-$a]==1){unset($r); $r[$point]=3; return $r;}
if($kor[$point-$a]==3){
while(isset($kor[$point-$a])){
if($kor[$point-$a]==1){unset($r); $r[$point]=3; return $r;}
$r[$point-$a]=4; $a++;}
}
}
$a=1;
if(isset($kor[$point+$a])){
if($kor[$point+$a]==1){unset($r); $r[$point]=3; return $r;}
if($kor[$point+$a]==3){
while(isset($kor[$point+$a])){
if($kor[$point+$a]==1){unset($r); $r[$point]=3; return $r;}
$r[$point+$a]=4; $a++;}
}
}
$a=$y;
if(isset($kor[$point-$a])){
if($kor[$point-$a]==1){unset($r); $r[$point]=3; return $r;}
if($kor[$point-$a]==3){
while(isset($kor[$point-$a])){
if($kor[$point-$a]==1){unset($r); $r[$point]=3; return $r;}
$r[$point-$a]=4; $a=$a+$y;}
}
}
$a=$y;
if(isset($kor[$point+$a])){
if($kor[$point+$a]==1){unset($r); $r[$point]=3; return $r;}
if($kor[$point+$a]==3){
while(isset($kor[$point+$a])){
if($kor[$point+$a]==1){unset($r); $r[$point]=3; return $r;}
$r[$point+$a]=4; $a=$a+$y;}
}
}
return $r;
}
//****************************************************************************************
?>
|
| |
|
|
|
|
|
|
|
для: pavluxa09
(18.07.2012 в 20:28)
| | Проверять надо все возможные варианты, предварительно отбросив остальные, а это циклы с рекурсиями. Собирать все подходящие по условию варианты и уже из них выбирать окончательный.
Два, четыре или 138 циклов будет это заранее не известно.
Задача легкая только на первый взгляд.
Заставить сервер самостоятельно играть за другого игрока, даже не думайте.
Нужно будет набивать базу сыгранных партий, основываясь на анализе которых сервер будет выбирать подходящие ходы.
А для этого нужна мощная и продуманная организация БД | |
|
|
|
|
|
|
|
для: Valick
(18.07.2012 в 20:24)
| | Не совсем то понял при чём тут БД, ну то ладно. Вопрос в другом. Я застрял на том, что у меня дамка выполнила удар, и после этого мне нужно проверить, может она её может побить. Ведь если она ещё может побить то нужно что бы она обязательно это сделала, и не допускать того что бы человек ходил, когда ему необходимо дамкой ещё сделать удар.
Собственно вопрос в том, как пройтись циклом по диагоналям на которых расположена моя дамка, я не знаю как лучше, толи двумя циклами (основная и побочная диалогнали), то ли четырмя (сверху слева, сверху справа, снизу слева, снизу справа). Подскажите, как лучше реализовать эту проверку? И предложите пожалуйста вариант цикла. Я прошу Вас | |
|
|
|
|
|
|
|
для: pavluxa09
(18.07.2012 в 19:28)
| | вы проверяете то что нафиг не надо проверять
пустое поле, шашка или дамка - это практически константа
цифрами они удобнее только из-за того что так лучше для бд
и в конце концов вы бд используете только для хранения
[поправлено модератором] | |
|
|
|
|
|
|
|
для: pavluxa09
(18.07.2012 в 19:28)
| | Помогите пожалуйста составить 4 цикла, либо как-то их объединить, что бы я мог пройтись по диагоналям на которых расположена моя дамка.
То есть, у меня есть дамка, о ней я знаю её X и Y координаты. Так же я знаю размер поля. Моя задача первым циклом пройтись по вертикали которая отходит от точки сверху влево, далее сверху справа, далее снизу слева и далее снизу справа.
Как подобный цикл можно реализовать? Помогите пожалуйста, уже все мозги себе вынес. | |
|
|
|
|
|
|
|
для: confirm
(18.07.2012 в 19:18)
| | Ну в принципе Вы правы, но дело в том что я уже практически реализовал. Мне осталось только сделать проверку, что после хода дамки нужно проверить может ли она ещё побить кого-то или нет, с этим я запутался, не как не доходит как пройтись по диалоганям на которых она расположена. Уже и рисовал, не помогает ( Помогите пожалуйста.
Осталось этот вопрос решить, и определение победителя, но если я решу этот то и тот без проблем решается. Помогите прошу Вас ради всего святого | |
|
|
|
|
|
|
|
для: pavluxa09
(18.07.2012 в 19:00)
| | Никой выгоды, так как отдать половину серверу, а вторую клиенту, это выгоднее. В этом случае, то что больше 2, это клиент, а четность/нечетность числа будет указывать шашка это или дамка. Проверка же на четность, это N & 1, что намного выгоднее, чем деление, да еще с проверкой нацело или нет (по модулю). Думать надо. | |
|
|
|
|
|
|
|
для: pavluxa09
(18.07.2012 в 19:00)
| | Но вот как мне найти крайние точки диагоналей, вот в этом вопрос. У меня шашка размещена на доске, я знаю её X и Y и мне нужно понять, от куда нужно начинать перебирать что бы эту диагональ пройти. И как одновременно пройти две диагонали. | |
|
|
|
|
|
|
|
для: confirm
(18.07.2012 в 18:45)
| | Выгода в моём варианте есть, что бы понять шашка это или дамка достаточно выполнить условие if( этот ID < 3 ). А далее смотрим, если он нацело делиться на 2 то это шашка/дамка сервера, иначе клиента. Всё же очевидно! | |
|
|
|
|