Browsergame Gebäude Funktion

  • Themenstarter Themenstarter koronyl
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
K

koronyl

Hi ich bin neu hier...
Ich und ein paar Freunde möchten ein Browsergame en....
Ich habe mir einige andere Browsergames angeguckt....
Im Quelltext habe ich gesehen das gar keine php Funktionen enthalten sind wie geht das wo sind sie gespeichert
 
Erst einmal: Willkommen!

Dann zu deiner Frage:
PHP wird serverseitig verarbeitet!
Das bedeutet, du wirst es nie im Quelltext eines Browsers PHP-Code finden, außer es ist ein Code-Beispiel, sprich Text. ;)

Der PHP-Interpreter "durchleuchtet" also erst einmal die Daten und führt jeglichen PHP-Code aus. Erst dann werden die Informationen an den Browser geschickt.


Viele Grüße,
Jacka
 
Hallo und willkommen in der Community.
Also wie mein Vorredner bereits sagte wird ein Browsergame üblicherweise (es gibt auch Alternativen wie Perl oder Ruby) mit PHP geschrieben, dass auf dem Server ausgeführt wird. Das sorgt eben dafür, dass man den Quellcode nicht sehen kann, da das Script zu dem Zeitpunkt an dem du es im Browser siehst bereits geparst ist. Da es sich bei einem Browssergame um ein größeres Projekt handelt schreibt man üblicherweise auch keine Funktionen sondern Klassen, die es ermöglichen viele verschiedene Gebäude ohne großes Programmieren zu erstellen. Hier ein kleines Beispiel:

PHP:
<?php

error_reporting(E_ALL);

/**
 * The Building class implements an abstract representation 
 * of a building that can be used to create other buildings. 
 * 
 * @package Building
 * @version 0.1
 * @date 22/3/2008
 * @author Andreas Wilhelm <Andreas2209@web.de>
 * @copyright Andreas Wilhelm
 * @link http://avedo.net
 */
abstract class Building
{
	/**
	 * @var String $name The name of the building
	 * @access protected
	 */
	protected $name = null;
	
	/**
	 * @var Integer $level The level of the building
	 * @access protected
	 */
	protected $level = 1;
	
	/**
	 * @var Integer $health The health points of the building
	 * @access protected
	 */
	protected $health = 0;
	
	/**
	 * @var Integer $armor The armor of the building
	 * @access protected
	 */
	protected $armor = 0;
	
	/**
	 * @var Integer $defence The defence of the building
	 * @access protected
	 */
	protected $defence = 0;
	
	/**
	 * @var Integer $capacity The number of people that can life in there
	 * @access protected
	 */
	protected $capacity = 0;
	
	/**
	 * Upgrades the building one level
	 *
	 * @access public
	 * @return void
	 */
	public function upgrade()
	{
		$this->level++;
	}
	
	/**
	 * Produces a special resource
	 *
	 * @access public
	 * @return void
	 */
	public function produce() {}
	
	/**
	 * Prints out the name and the health and armor points 
	 * of this building
	 *
	 * @access public
	 * @return String
	 */
	public function __toString()
	{
		return $this->name . '(' . $this->health . 'HP/' . $this->armor . 'AP)';
	}
}

/**
 * The House class implements a simple house for 
 * agrarian population. Such a house does not have 
 * a huge capacity or a good defence but it is cheap. 
 * 
 * @package Building
 * @version 0.1
 * @date 22/3/2008
 * @author Andreas Wilhelm <Andreas2209@web.de>
 * @copyright Andreas Wilhelm
 * @link http://avedo.net
 */
class House extends Building
{
	/**
	 * Assigns the important class variables
	 *
	 * @access public
	 * @return void
	 */
	public function __construct()
	{
		// assign the name of the building
		$this->name = 'House';
		
		// set the health points of the building
		$this->health = 100;
		
		// set the armor of the building
		$this->armor = 10;
		
		// set the defence of the building
		$this->defence = 5;
		
		// set the capacity of the building
		$this->capacity = 2;
	}
}

/**
 * The House class implements a simple house for 
 * agrarian population. Such a house does not have 
 * a huge capacity or a good defence but it is cheap. 
 * 
 * @package Building
 * @version 0.1
 * @date 22/3/2008
 * @author Andreas Wilhelm <Andreas2209@web.de>
 * @copyright Andreas Wilhelm
 * @link http://avedo.net
 */
class Barracks extends Building
{
	/**
	 * Assigns the important class variables
	 *
	 * @access public
	 * @return void
	 */
	public function __construct()
	{
		// assign the name of the building
		$this->name = 'Barrack';
		
		// set the health points of the building
		$this->health = 300;
		
		// set the armor of the building
		$this->armor = 50;
		
		// set the defence of the building
		$this->defence = 15;
		
		// set the capacity of the building
		$this->capacity = 20;
	}

	/**
	 * Produces different types of soldiers
	 *
	 * @access public
	 * @return void
	 */
	public function produce()
	{
		// create a new soldier
		Soldier::create($this->level);
	}
}

?>
Da kann man natürlich noch einiges hinzufügen, wie zum beispiel den Preis eines gebäudes und eine Methode, die prüft ob der Spieler diesen Zahlen kann und sonst eine Exception wirft. Jedoch sind die obigen Klassen so schon nutzbar. nachfolgend ein kleines Beispiel:
PHP:
try
{
	// build some houses
	$house1 = new House();
	$house2 = new House();
	$house3 = new House();
	
	// build a barrack
	$barrack1 = new Barrack();
	
	// produce some soldiers
	$barrack1->produce();
	$barrack1->produce();
	$barrack1->produce();
	$barrack1->produce();
	
	// upgrade the barrack
	$barrack upgrade();
}

catch(Exception $e)
{
	echo $e->getMessage();
}
MfG, Andy
 
Vielen Dnak für die Antworten....

Und Andy, könntest du deinen Code noch etwas weiter erklären ich verstehe ihn nicht.:(
 
Hallo und willkommen in der Community.
Da es sich bei einem Browssergame um ein größeres Projekt handelt schreibt man üblicherweise auch keine Funktionen sondern Klassen

Das ist wohl eher Ansichtssache als üblich. Es gibt genügend Riesenprojekte, die ohne Klassen auskommen und fast ausschließlich auf Funktionen setzen.
 
Der Code oben geht nicht.....

Also der erste:

Parse error: syntax error, unexpected T_PUBLIC in /usr/export/www/hosting/clonewars/p.php on line 108


Was ist falsch
 
Wenn du uns sagst, was in Zeile 108 steht können wir es dir sagen.
Eigentlich reicht es aber die Fehlermeldung anzusehen: "syntax error, unexpected T_PUBLIC" welche sagt: "Syntaxfehler, unerwartetes T_PUBLIC". Sicherlich wird sich in Zeile 108 ein public finden, dass nach der Syntax dort nicht stehen müsste.
Bei diesem Fehler fehlt oft eine schließende Klammer in den vorherigen Zeilen - soviel aus meiner Glaskugel.

Und bitte lies dir folgendes durch (insbesondere schlechtes Beispiel bei Punkt b):
http://www.tutorials.de/forum/php/20021-neu-regeln-fuers-php-board-bitte-komplett-durchlesen.html

EDIT: xloouch empfiehlt dir ein PHP-Buch zu lesen, dem kann ich mich nur anschließen und empfehle dir "PHP in a nutshell" vom O'Reilly-Verlag. Das gibt es selbstverständlich als deutsche Ausgabe. Habe es erst letztes Wochenende durchgelesen und hätte ich das zu meinen PHP-Anfängen gekannt, würd ich schon viel weiter sein ;) - leicht verdauliches Buch.
 
Zuletzt bearbeitet:
Hallo Koronyl

Nur ein paar Fragen:

Hast du schon mal was von Objektorientiertem Programmieren gehört?

Wenn deine Antwort "Nein" ist, Geh in eine Bibliothek oder ähnliches und besorg dir ein entsprechendes Buch.

Hast du schon mal HTML programmiert?

Lautet deine Antwort "Nein": Dann geh auf http://www.selfhtml.de und lern als erstes die Grundsprache des Internets

Hast du schon mal PHP programmiert?

Lautet deine Antwort "Nein": Dann geh hin und kauf oder leih dir ein PHP Buch für Anfänger. Dann verstehst du auch, wass du Programmieren willst.

Hast du schon mal was von MySQL gehört/ MySQL Datenbanken erstellt?

Lautet deine Antwort "Nein": Dann geh hin und kauf oder leih dir ein MySQL Buch. Dann hast du das auch erledigt.

PS. Nebenbemerkung. Wenn du dir ein PHP Buch beschaffst, dann wird dort drin automatisch auch MySQL zur Sprache kommen.

** edit**

Zudem lernst du dort auch die richtige Syntax für die entsprechende Sprache

** /edit **

** edit2**

Ich würde dir empfehlen für deinen Spieletitel eine NICHT-GESCHÜTZEN Titel zu wählen. Ich nehme mal schwer an, dass die Rechte am Namen "clonewars" LukasArts gehört :-)

** /edit2 **


Grüsse und viel Spass beim Erlernen der Sprache PHP und bei eurem Projekt
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Zurück