Карта для браузерной стратегии на PHP + MySql
|
|
hunzah08 | Дата: Понедельник, 10 Сентября 2012, 21:58 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Хочу сделать карту на PHP + MySql, постараюсь объяснить принцип действия)))
В базе содержатся данные: Ид Локации(location_ID), координат карты(x,y), тип территории(terrain: 1-равнина, 2-лес, 3-горы).
Нужно вывести карту в зависимости от координат и типа территории
__1___2___3 1 2 3
Цифры по горизонтали - x; Цифры по вертикали - y; Вместо смайлов надо вывести фото локации, в зависимости от типа территории;
И желательно чтоб картинки были кликабельны...)))
Вроде понятно объяснил.)
Я только начал изучение и знаю только самые основы.. Знаю что для начала слишком сложно, но все таки..)) Буду очень благодарен, если поможете... :)))))
|
|
| |
Snake174 | Дата: Вторник, 11 Сентября 2012, 09:51 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Давно не программировал на РНР, но думаю что-то вроде этого: Берёшь из базы координаты и тип территории и заносишь их в массив. Code // массив с координатами и типом территории $array = array( 0 => array( 'x' => 0, 'y' => 0, 'tile' => 1 ), 1 => array( 'x' => 10, 'y' => 10, 'tile' => 2 ), ... );
// функция сортировки массива function compare( $one, $two ) { if ($one['x'] < $two['x']) return -1;
if ($one['x'] > $two['x']) return 1;
if ($one['y'] < $two['y']) return -1;
if ($one['y'] > $two['y']) return 1;
return 0; }
// сортируем массив usort( $array, 'compare' );
// выводим изображения for ($i = 0; i < count( $array ); $i++) { swith ($arr[$i][2]) { case 1: echo "<a href='ссылка'><img src='равнина.jpg' width=TILE_WIDTH height=TILE_HEIGHT></a>"; break;
case 2: ... }
if ($i % MAP_WIDTH == 0) echo "<br>"; } Криво и скорее всего работать не будет, но может додумаешься до чего-нибудь.
Не следует обманывать инспектора Pipmak Assistant Love2D Exporter Love2D-Helpers Old Consoles Games
|
|
| |
indexosu | Дата: Вторник, 11 Сентября 2012, 09:53 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Quote (hunzah08) И желательно чтоб картинки были кликабельны...)) Code <img src='blabla.jpg' onclick="javascript()"></img>
|
|
| |
Andy-go | Дата: Вторник, 11 Сентября 2012, 18:14 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Чтобы картинки были кликабельны лучше клиентскую сторону на js делать, тем более что раз речь идет о браузерной стратегии все равно ты придешь к клиенту на js+ajax либо на флеше потому что захочешь чтобы страничка не перезагрежалась после каждого клика/действия.
Сообщение отредактировал Andy-go - Вторник, 11 Сентября 2012, 18:17 |
|
| |
hunzah08 | Дата: Среда, 12 Сентября 2012, 19:22 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Snake174, Я чувствую что мне еще немного надо поучить, а то ничего дельного не получается Добавлено (12.09.2012, 19:07) --------------------------------------------- Andy-go, Я хочу wap игру сделать.. js большинство мобильников не поддерживает, да и для меня, все вместе учить, не очень хорошо ))) Добавлено (12.09.2012, 19:22) --------------------------------------------- Snake174, и если можно, объясни по пунктам все
|
|
| |
Andy-go | Дата: Четверг, 13 Сентября 2012, 08:56 | Сообщение # 6 |
участник
Сейчас нет на сайте
| Вы не оговорились, имено wap? Развен он хоть склько-нибудь ещё актуален? У большинства тех кто ходит в интернет с мобильника либо полноценный смртфон либо что-то подобное, а следовательно js там отлично работает. Хотя может я и заблуждаюсь, но мне кажется что wap уже не актуален... А так ваша игра будет к тому же доступна и с обычных пк, и js учится вместе с php достаточно просто -говорю по собственному опыту, только постарайтесь найте себе уителя/наставника к которому можно будет с оперативными вопросами обращаться через аську/скайп.
|
|
| |
hunzah08 | Дата: Пятница, 14 Сентября 2012, 11:21 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Andy-go, Ну не совсем wap, короче для мобильников.. Позже можно будет и js выучить, а пока что мне и php плохо дается..
|
|
| |
Andy-go | Дата: Пятница, 14 Сентября 2012, 14:04 | Сообщение # 8 |
участник
Сейчас нет на сайте
| На одном php вы никуда не уедите, ту же карту нужно как-то отображать, и сделать это при помощи только лишь php, насколько я понимаю сложнее(если вообще реализуемо) чем в связке с js. Вам же нужно размещать изображения на странице согласно полученным данным, в js вы легко это сделаете используя слои динамически их гененрируя.
Сообщение отредактировал Andy-go - Суббота, 15 Сентября 2012, 14:20 |
|
| |
hunzah08 | Дата: Пятница, 14 Сентября 2012, 15:39 | Сообщение # 9 |
был не раз
Сейчас нет на сайте
| Andy-go, в вап это реализуемо, есть в одной игре(не буду говорить в какой)..
Quote (Andy-go) Ты что-то подобное имел ввиду?
Нуу, не совсем то... карта должна быть 3х3,5х5, или что-то в этом роде.. Как я описывал в первом посте )))
|
|
| |
Andy-go | Дата: Суббота, 15 Сентября 2012, 14:29 | Сообщение # 10 |
участник
Сейчас нет на сайте
| Ты же сам сказал что это не совсем вап и чтобы ещё кликабельно было, это 100% не чисто на php сделано а с применением того же as3 или js. Добавлено (15.09.2012, 14:29) --------------------------------------------- В игре ссылку на которую ты мне скинул используется обычный html с перезагрузкой всей страницы при каждом клике. Не совем понятно зачем ты хочешь такую игру сделать, но думаю вполне реально что это у тебя получится. Учи соответственно html, php, mysql. Можешь даже попробовать ту же страничку с картой сохранить ст ого сайта и использовать её для "деконструирования", чтобы понять как там все сделано. Картинки там кликабельны потому что на каждую из них повешена ссылка.
|
|
| |
sstas | Дата: Суббота, 15 Сентября 2012, 15:23 | Сообщение # 11 |
частый гость
Сейчас нет на сайте
| Code <?php $wave=1; $table=1; $id_lok=1;
echo '<hr><table>';
while($wave<='49'){
if($table=='8'){$table='1';$x=$x-'7';$y=$y-'1';}
$locas = mysql_result(mysql_query("SELECT COUNT(*) FROM `world` WHERE `x`='$x' and `y`='$y' and `loka`='$id_lok' LIMIT 1"),0); if($locas == 1){ $xy = mysql_fetch_assoc(mysql_query("SELECT `tip` FROM `world` WHERE `x`='$x' and `y`='$y' and `loka`='$id_lok' LIMIT 1")); } if($table=='1')echo'<tr border="0" HEIGHT="19">';
if($locas == 0){echo'<td WIDTH="17" BGCOLOR="silver"';}else{echo'<a href="//ссылка\\"><img src="img/'.$tip['tip'].'.png></a>';}
echo'</td>';
if($table=='7')echo'</tr>';
$wave++; $table++; $x++; } echo'</table><hr>'; ?> вроде так)
Сообщение отредактировал sstas - Воскресенье, 16 Сентября 2012, 07:19 |
|
| |
hunzah08 | Дата: Воскресенье, 16 Сентября 2012, 00:50 | Сообщение # 12 |
был не раз
Сейчас нет на сайте
| sstas, Как-то не хочет работать(( Свои данные прописал, все вроде правильно, но не пашет( Добавлено (16.09.2012, 00:50) --------------------------------------------- sstas, Quote (sstas) if($locas == 0){echo'<td WIDTH="17" BGCOLOR="silver"';}else{echo'<a href="//ссылка\\"><img src="img/'.$tip.'.png></a>';}
Тут ты в названии изображения использовал переменную $tip, а где ее обозначил? ))
|
|
| |
KVinS | Дата: Воскресенье, 16 Сентября 2012, 03:55 | Сообщение # 13 |
постоянный участник
Сейчас нет на сайте
| Code $query = "SELECT * FROM `tiles` where `x` >= '$x' and `x` <= '".($x+3)."' and `y` >= '".$y."' and `y` <= '".($y+3)."'"; $res = mysql_query($query); $code=''; $y=-100; while ($tile = mysql_fetch_array($res)){ if($y!=$tile['y']){ $code=$code.'<br>'; $y=$tile['y']; } switch($tile['terrain']){ case 1: $code=$code."<a href='".$tile['href']."'><img src='равнина.png'></a>"; break } } print $code;
Добавлено (16.09.2012, 03:55) --------------------------------------------- Обычно много плохого пишут про такой код
Игра про лесных котов
Сообщение отредактировал KVinS - Воскресенье, 16 Сентября 2012, 04:01 |
|
| |
sstas | Дата: Воскресенье, 16 Сентября 2012, 07:12 | Сообщение # 14 |
частый гость
Сейчас нет на сайте
| hunzah08, Code $xy = mysql_fetch_assoc(mysql_query("SELECT `tip` FROM `world` WHERE `x`='$x' and `y`='$y' and `loka`='$id_lok' LIMIT 1")); над заменить на Code $tip = mysql_fetch_assoc(mysql_query("SELECT `tip` FROM `world` WHERE `x`='$x' and `y`='$y' and `loka`='$id_lok' LIMIT 1")); в БД в поле tip прописываешь тип клетки, 1 - равнина, 2 - лес и т.д., т.е. и названия картинок так же назови 1.png, 2.png и скинь в папку img
|
|
| |
hunzah08 | Дата: Воскресенье, 16 Сентября 2012, 11:50 | Сообщение # 15 |
был не раз
Сейчас нет на сайте
| Quote (KVinS) $query = "SELECT * FROM `tiles` where `x` >= '$x' and `x` <= '".($x+3)."' and `y` >= '".$y."' and `y` <= '".($y+3)."'"; tiles название таблицы? И еще не понял все что находится после where.. Code Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in вот такую ошибку выдает...Добавлено (16.09.2012, 11:42) --------------------------------------------- sstas, пробовал, все равно не работает... Добавлено (16.09.2012, 11:50) --------------------------------------------- sstas, Code Warning: mysql_result() expects parameter 1 to be resource, boolean given in и тут такая же ошибка...
|
|
| |
KVinS | Дата: Воскресенье, 16 Сентября 2012, 12:28 | Сообщение # 16 |
постоянный участник
Сейчас нет на сайте
| Quote (hunzah08) tiles название таблицы? Да. Скорее всего ошибка в MySQL запросе. Напиши там $res = mysql_query($query) or die(mysql_error()); Он напишет ошибку работы с БД.
После while просто перебор всех полученных клеток по одной.
Игра про лесных котов
|
|
| |
hunzah08 | Дата: Воскресенье, 16 Сентября 2012, 13:41 | Сообщение # 17 |
был не раз
Сейчас нет на сайте
| KVinS, Вот такая ошибка..Добавлено (16.09.2012, 13:41) --------------------------------------------- KVinS, Оказывается я забыл подключение к bd сделать Теперь изображения выводятся, но не 3х3, а по вертикали все..
|
|
| |
sstas | Дата: Воскресенье, 16 Сентября 2012, 14:32 | Сообщение # 18 |
частый гость
Сейчас нет на сайте
| Quote (hunzah08) Теперь изображения выводятся, но не 3х3, а по вертикали все.. тег <br> выводи через 3 картинки
Сообщение отредактировал sstas - Воскресенье, 16 Сентября 2012, 14:34 |
|
| |
hunzah08 | Дата: Воскресенье, 16 Сентября 2012, 15:33 | Сообщение # 19 |
был не раз
Сейчас нет на сайте
| sstas, Не пойму куда его пристроить... Quote (KVinS) if($y!=$tile['y']){ $code=$code.'<br>'; $y=$tile['y'];
И вот это условие что делает?
|
|
| |
KVinS | Дата: Воскресенье, 16 Сентября 2012, 15:43 | Сообщение # 20 |
постоянный участник
Сейчас нет на сайте
| Quote (hunzah08) if($y!=$tile['y']){ $code=$code.'<br>'; $y=$tile['y']; Ну вообще это условие и должно было выводить перенос строки. Оо Code $ly=-100; while ($tile = mysql_fetch_array($res)){ if($ly!=$tile['y']){ $code=$code.'<br>'; $ly=$tile['y']; } На это замени... Может дело в повторяемой переменной.
Quote (hunzah08) No database selected Quote (hunzah08) KVinS, Оказывается я забыл подключение к bd сделать Как неожиданно...
Quote (hunzah08) Теперь изображения выводятся, но не 3х3, а по вертикали все.. С моим кодом?
Игра про лесных котов
|
|
| |