Informacje o budynkach w MMORTS

Mateusz Nowak
05.09.2015

Podczas tworzenia gry MMORTS stajemy przed problemem gdzie "trzymać" informacje o budynkach(cena,obraz,opis itp), mamy dwa wyjścia : Trzymanie informacji w bazie MySQL lub przechowywanie wszystkiego w pliku/ach.

MySQL



Najpierw rozpatrzmy opcję bazy MySQL. tworzymy tabelę info_budynki:
id int(11)
nazwa varchar(255)
obraz varchar(255)
opis text
metal int(11)
glina int(11)
drewno int(11)
ludzie int(11)
max_poziom int(11)
wymagania varchar(255)

Struktura bazy mówi sama przez się smile.gif
Więc tak mamy taką tabelę i dodajemy do niej rekord - przykładowy budynek. Następnie by wyświetlić informacje o nim musimy wykonać zapytanie do bazy(tabeli) poprzez funkcje mysql_fetch_array() oraz mysql_query() (Zakładam że macie już plik z podłączeniem do bazy MySQL):

KOD
$zap = mysql_fetch_array(mysql_query("SELECT * FROM `info_budynki` WHERE  nazwa = 'Ratusz'"));


Później wywołując $zap['opis'] ukaże nam się opis budynku o nazwie Ratusz. Przykład pokazuje wyświetlenie tyko jednego budynku, a co jeśli będzie ich kilka?
Oczywiście nie będziemy powielać powyższego zapytania n razy zmieniając tylko warunek WHERE. Do wyświetlenia "wszystkich" budynków użyjemy pętli
while(){}
na początku musimy wywołać zapytanie - lecz będzie ono zmienione:

KOD
$zap = mysql_query("SELECT * FROM `info_budynki`"); // Jak widzimy znika warunek WHERE
          while($bud = mysql_fetch_array($zap)){
          echo $bud['opis'];
          }


Przykład wyświetli opisy wszystkich budynków jakie są aktualnie w tabeli.

Prawda że łatwe? Ale troszkę nieoptymalnę, bo jeśli chcemy wyświetlić budynek z jakimkolwiek warunkiem musimy wysyłać zapytania do bazy.
+ Prostota edycji(Można dodać budynki do panelu admina gry i z jego poziomu je edytować)
- Zbyt dużo zapytań do bazy(Zależnie od przypadku)

Pliki

Zajmijmy się teraz infem na temat budynków poprzez plik/i.
Ja jednak wolę by info było w jednym pliku toteż tak zrobię wink.gif
Stwórzmy plik budynki.php. W nim wszystko będzie się "działo".
Na początek stworzymy przykładowy budynek - Ratusz:

KOD
<?php
          $budynek['ratusz'] = array(
          'nazwa' => 'Ratusz',
          'opis' => 'Ratusz jest głównym budynkiem osady',
          'obraz' => 'ratusz.png',
          'metal' => 100,
          'glina' => 250,
          'drewno' => 500,
          );
          ?>



Stworzyliśmy tu tablicę dwuwymiarową w którą "wpakowaliśmy" dane o budynku, Oczywiście by dodać kolejny budynek powielamy powyższy przykład zmieniając tylko "dane". Teraz do pliku gdzie chcemy wyświetlić info o budynkach dołączamy plik budynki.php poprzez funkcje include()

KOD
include('budynki.php');


Oczywiście moja ścieżka do pliku nie musi być taka jak wasza. Teraz w pliku gdzie dołączyliśmy info o budynkach by wywołać jakiekolwiek dane wstarczy dać

KOD
echo $budynek['ratusz']['opis'];


Powyższy przkład wyświeli Ratusz jest głównym budynkiem osady. Prawda że prostę? Teraz pytanie: Jak wyświetlić kilka budynków naraz bez potrzeby
ciągłego pisania echo ? To proste! Wykorzystamy pętle foreach(){}

KOD
<?php foreach($budynek as $key) {
        echo $key['nazwa'].'<br />'.$key['opis'];
        } ?>


Pętla wyświetli wszystkie nazwy oraz opis budynków które są w tablicy $budynki. Prostę i szybkie nieprawdaż?
+ Szybkość i prostota działania
- Do każdego pliku musimy dołączać plik budynki.php, edycja z PA nie jest możliwa

To już koniec mojego krótkiego artykułu. Myślę że wybierzecie dobrze dla was i dla waszej gry:) Pozdrawiam.

Zgłoś swój pomysł na artykuł

Więcej w tym dziale Zobacz wszystkie