Location: PHPKode > projects > Skrupel KI > skrupelki/ki_basis/planeten_basis/planeten_basis.php
<?php
/**
 * Autor: Wasserleiche (hide@address.com)
 * 
 * Abstrakte Oberklasse fuer das Verhalten der KI bei ihren Planeten.
 */
abstract class planeten_basis {
	
	/**
	 * Diese Funktion muss implementiert werden. Hier wird das Verhalten der KI bezueglich 
	 * ihrer Planeten spezifiziert.
	 */
	abstract function verwaltePlaneten();
	
	/**
	 * Muss implementiert werden, um das Verwalten der orbitalen Systemen auf den Planeten der KI 
	 * zu bestimmen.
	 * arguments: $planeten_id - Die Datenbank-ID des Planeten, dessen orbitale System verwaltet werden.
	 */
	abstract function verwalteOrbitaleSysteme($planeten_id);
	
	/**
	 * Prueft, ob am uebergebenen Planeten das uebergebene orbitale System existiert.
	 * arguments: $osystem - Der Name des orbitalen Systems, das ueberprueft werden soll.
	 * 			  $planeten_id - Die Datenbank-ID des zu ueberpruefenden Planeten.
	 * returns: true, falls am Planeten das orbitale System vorhanden ist.
	 * 			false, sonst.
	 */
	function hatOrbitalesSystem($osystem, $planeten_id) {
		$planeten_daten = @mysql_query("SELECT osys_anzahl, osys_1, osys_2, osys_3, osys_4, osys_5, osys_6 
			FROM skrupel_planeten WHERE id='$planeten_id'");
		$planeten_daten = @mysql_fetch_array($planeten_daten);
		$osys_anzahl = $planeten_daten['osys_anzahl'];
		$system = null;
		switch($osystem) {
			case "megafabrik": { $system = 1; break; }
			case "exo-raffinerie": { $system = 2; break; }
			case "bank": { $system = 3; break; }
			case "vergnuegungspark": { $system = 6; break; }
			case "metropole": { $system = 9; break; }
			case "reservat": { $system = 23; break; }
		}
		for($i=1; $i<=$osys_anzahl; $i++) {
			$osys = $planeten_daten['osys_'.$i];
			if($osys == $system) return true;
		}
		return false;
	}
	
	/**
	 * Versucht auf dem uebergebenen Planeten das uebergebene orbitale System zu bauen. Sind auf dem Planeten 
	 * keine freien Slots oder nicht genug Resourcen fuer das orbitale System vorhanden, wird keins gebaut.
	 * arguments: $orb_system - Der Name des zu bauenden orbitalen Systems.
	 * 			  $planeten_id - Die Datenbank-ID des Planeten, wo das orbitale System gebaut werden soll.
	 * returns: true, falls das orbitale System gebaut wurde und dessen Resourcen vom Planeten abgezogen wurden.
	 * 			false, sonst.
	 */
	function baueOrbitalesSystem($orb_system, $planeten_id) {
		$planeten_daten = @mysql_query("SELECT cantox, vorrat, lemin, min1, min2, min3, osys_anzahl, osys_1, 
			osys_2, osys_3, osys_4, osys_5, osys_6 FROM skrupel_planeten WHERE id='$planeten_id'");
		$planeten_daten = @mysql_fetch_array($planeten_daten);
		$osys_anzahl = $planeten_daten['osys_anzahl'];
		$osys_slot = null;
		for($i=1; $i<=$osys_anzahl; $i++) {
			$osys = $planeten_daten['osys_'.$i];
			if($osys == 0) {
				$osys_slot = "osys_".$i;
				break;
			}
		}
		if($osys_slot == null) return false;
		$cantox = $planeten_daten['cantox'];
		$vorrat = $planeten_daten['vorrat'];
		$lemin = $planeten_daten['lemin'];
		$min1 = $planeten_daten['min1'];
		$min2 = $planeten_daten['min2'];
		$min3 = $planeten_daten['min3'];
		switch($orb_system) {
			case "megafabrik": {
				if($cantox >= 120 && $vorrat >= 17 && $min1 >= 20 && $min2 >= 17 && $min3 >= 13) {
					$cantox -= 120; $vorrat -= 17; $min1 -= 20; $min2 -= 17; $min3 -= 13;
					@mysql_query("UPDATE skrupel_planeten SET $osys_slot=1 WHERE id='$planeten_id'");
				} else return false;
				break;
			}
			case "exo-raffinerie": {
				if($cantox >= 85 && $vorrat >= 32 && $lemin >= 28 && $min1 >= 35 && $min2 >= 12 && $min3 >= 8) {
					$cantox -= 85; $vorrat -= 32; $lemin -= 28; $min1 -= 35; $min2 -= 12; $min3 -= 8;
					@mysql_query("UPDATE skrupel_planeten SET $osys_slot=2 WHERE id='$planeten_id'");
				} else return false;
				break;
			}
			case "bank": {
				if($cantox >= 250 && $vorrat >= 10 && $lemin >= 10 && $min1 >= 36 && $min2 >= 12 && $min3 >= 12) {
					$cantox -= 250; $vorrat -= 10; $lemin -= 10; $min1 -= 36; $min2 -= 12; $min3 -= 12;
					@mysql_query("UPDATE skrupel_planeten SET $osys_slot=3 WHERE id='$planeten_id'");
				} else return false;
				break;
			}
			case "vergnuegungspark": {
				if($cantox >= 250 && $vorrat >= 500 && $lemin >= 13 && $min1 >= 95 && $min2 >= 100 
				&& $min3 >= 73) {
					$cantox -= 250; $vorrat -= 500; $lemin -= 13; $min1 -= 95; $min2 -= 100; $min3 -= 73;
					@mysql_query("UPDATE skrupel_planeten SET $osys_slot=6 WHERE id='$planeten_id'");
				} else return false;
				break;
			}
			case "metropole": {
				if($cantox >= 200 && $vorrat >= 25 && $lemin >= 50 && $min1 >= 20 && $min2 >= 30 && $min3 >= 20) {
					$cantox -= 200; $vorrat -= 25; $lemin -= 50; $min1 -= 20; $min2 -= 30; $min3 -= 20;
					@mysql_query("UPDATE skrupel_planeten SET $osys_slot=9 WHERE id='$planeten_id'");
				} else return false;
				break;
			}
			case "reservat" : {
				if($cantox >= 50 && $vorrat >= 75 && $lemin >= 7 && $min1 >= 19 && $min2 >= 26 && $min3 >= 14) {
					$cantox -= 50; $vorrat -= 75; $lemin -= 7; $min1 -= 19; $min2 -= 26; $min3 -= 14;
					@mysql_query("UPDATE skrupel_planeten SET $osys_slot=23 WHERE id='$planeten_id'");
				} else return false;
				break;
			}
		}
		@mysql_query("UPDATE skrupel_planeten SET cantox='$cantox', vorrat='$vorrat', lemin='$lemin', 
			min1='$min1', min2='$min2', min3='$min3' WHERE id='$planeten_id'");
		return true;
	}
}
?>
Return current item: Skrupel KI