Понедельник, 16 Мая 2022, 17:18

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Форум игроделов » Программирование » Скриптовые языки программирования » Карта для браузерной стратегии на PHP + MySql
Карта для браузерной стратегии на PHP + MySql
hunzah08Дата: Понедельник, 10 Сентября 2012, 21:58 | Сообщение # 1
был не раз
Сейчас нет на сайте
Хочу сделать карту на PHP + MySql, постараюсь объяснить принцип действия)))

В базе содержатся данные: Ид Локации(location_ID), координат карты(x,y), тип территории(terrain: 1-равнина, 2-лес, 3-горы).


Нужно вывести карту в зависимости от координат и типа территории

__1___2___3
1 smile smile smile
2 smile smile smile
3 smile smile smile

Цифры по горизонтали - 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, Я чувствую что мне еще немного надо поучить, а то ничего дельного не получается biggrin

Добавлено (12.09.2012, 19:07)
---------------------------------------------
Andy-go, Я хочу wap игру сделать.. js большинство мобильников не поддерживает, да и для меня, все вместе учить, не очень хорошо )))

Добавлено (12.09.2012, 19:22)
---------------------------------------------
Snake174, и если можно, объясни по пунктам все smile

Andy-goДата: Четверг, 13 Сентября 2012, 08:56 | Сообщение # 6
участник
Сейчас нет на сайте
Вы не оговорились, имено wap? Развен он хоть склько-нибудь ещё актуален? У большинства тех кто ходит в интернет с мобильника либо полноценный смртфон либо что-то подобное, а следовательно js там отлично работает. Хотя может я и заблуждаюсь, но мне кажется что wap уже не актуален... А так ваша игра будет к тому же доступна и с обычных пк, и js учится вместе с php достаточно просто -говорю по собственному опыту, только постарайтесь найте себе уителя/наставника к которому можно будет с оперативными вопросами обращаться через аську/скайп.
hunzah08Дата: Пятница, 14 Сентября 2012, 11:21 | Сообщение # 7
был не раз
Сейчас нет на сайте
Andy-go, Ну не совсем wap, короче для мобильников.. Позже можно будет и js выучить, а пока что мне и php плохо дается.. smile
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)
---------------------------------------------
Quote (sstas)
вроде так)

Обычно много плохого пишут про такой код


Игра про лесных котов

Сообщение отредактировал 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,
Code
No database selected

Вот такая ошибка..

Добавлено (16.09.2012, 13:41)
---------------------------------------------
KVinS, Оказывается я забыл подключение к bd сделать biggrin
Теперь изображения выводятся, но не 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, а по вертикали все..

С моим кодом?


Игра про лесных котов
Форум игроделов » Программирование » Скриптовые языки программирования » Карта для браузерной стратегии на PHP + MySql
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2022 Рейтинг