Hi
Wollte mal ein kleines Tutorial schreiben, welches sich mit dem Thema Gebäude in einem Browsergame befasst:
1. Vorraussetzungen
Man sollte schonmal mit phpMyAdmin gearbeitet haben und Tabellen, Spalten, Zeilen usw. sollten einem bekannt sein.
Man sollte innerhalb eines PHP Skripts eine Verbindung zu einer Datenbank aufbauen können.
2. Die Idee
Der Spieler hat ein Land/Gebiet/Planet usw. (hier nehmen wir mal Planet) auf dem er verschiedene Gebäude bauen kann. Diese Gebäude kann er stufenweise ausbauen.
Für den Ausbau werden Rohstoffe benötigt, die Kosten pro Stufe steigen an.
3. Die Datenbank
In der Datenbank werden verschiedene Tabelle benötigt. Ich verwende folgende Darstellung:
Code:
[Tabellenname]
1.Spalte=Typ (Zusatz) - Erklärung
2.Spalte=Typ - Erklärung
Fangen wir mit der Tabelle für die Gebäude an
Code:
[building]
buildingID=INT (AutoIncrement, PrimaryKey) - Damit kann jedes Gebäude eindeutig identifiziert werden
name=VARCHAR(50) - Der Name des Gebäudes
description=TEXT - Die Beschreibung des Gebäudes
In dieser Tabelle befinden sich keine Informationen über den Spieler, die Stufe oder die Kosten, da diese Informationen global gelten sollen.
Wir verknüpfen die Gebäude auch nicht direkt mit einem Spieler sondern mit einem Planet, welcher einem Spieler zugeordnet ist.
Code:
[building2planet]
buildingID=INT (PrimaryKey)
planetID=INT (PrimaryKey)
level=INT - Die Stufe des Gebäudes
Damit wir wissen, wieviel die Stufe eines Gebäudes kostet brauchen wir erstmal Rohstoffe
Code:
[ressource]
ressourceID=INT (AutoIncrement, PrimaryKey)
name=VARCHAR(50)
description=TEXT
Danach verknüpfen wir die Gebäude mit den Rohstoffen
[code][building2ressource]
buildingID=INT (PrimaryKey)
ressourceID=INT (PrimaryKey)
amount=INT - Die Menge von dieser Rohstoffart, die für den Ausbau benötigt wird[code]
Die Kosten pro Stufe rechnen wir dann im PHP Skript aus.
Nun brauchen wir noch Rohstoffe auf einem Planeten, damit wir später feststellen können, ob der Spieler genug Rohstoffe zum Ausbau eines Gebäudes hat oder nicht.
Code:
[planet2ressource]
planetID=INT (PrimaryKey)
ressourceID=INT (PrimaryKey)
amount=INT - Die Menge von dieser Rohstoffart, die auf dem Planeten vorhanden ist
Und natürlich den Planeten selber
Code:
[planet]
planetID=INT (AutoIncrement, PrimaryKey)
name=VARCHAR(50)
4. Erste Abfragen
Nun wollen wir unsere ersten PHP Skripte schreiben um ein paar Informationen aus der Datenbank auszulesen
PHP-Code:
<?php
//Verbindungsaufbau zur Datenbank
$link = mysql_connect($server,$user,$password);
mysql_select_db($database,$link);
//Alle Gebäude abfragen und ausgeben
$sql = "SELECT name,description FROM building";
$result = mysql_query($sql,$link);
while($row=mysql_fetch_array($result)) {
echo $row['name'].' '.$row['description'];
}
//Alle Gebäude abfragen und mit aktueller Stufe ausgeben
$sql = "SELECT name,description,level FROM building INNER JOIN building2planet ON building.buildingID = building2planet.buildingID";
$result = mysql_query($sql,$link);
while($row=mysql_fetch_array($result)) {
echo $row['name'].' (Stufe '.$row['level'].' '.$row['description'];
}
//Alle Rohstoffe (und die Menge) vom Planeten mit der ID 1 abfragen
$sql = "SELECT ressource.name AS name,amount FROM planet INNER JOIN planet2ressource ON planet.planetID = planet2ressource.planetID INNER JOIN ressource ON planet2ressource.ressourceID = ressource.ressoureID WHERE planet.planetID=1";
$result = mysql_query($sql,$link);
while($row=mysql_fetch_array($result)) {
echo $row['name'].' '.$row['amount'].'<br />';
}
So das war es erstmal mit dem ersten Teil, Fragen einfach hier im Thema stellen.
Ich möchte noch darauf hinweisen, dass ich alles komplett aus dem Kopf geschrieben habe und das Skript noch nicht getestet habe.
Außerdem werde ich es später sicherlich erweitern und anpassen, je nachdem welche Fragen auftauchen.