Warning: include_once(/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php): failed to open stream: No such file or directory in /var/www/html/fields/dbp09/local/config.php on line 4

Warning: include_once(): Failed opening '/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php' for inclusion (include_path='.:/opt/php/lib/php') in /var/www/html/fields/dbp09/local/config.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/fields/dbp09/local/config.php:4) in /var/www/html/pmwiki-2.2.86/pmwiki.php on line 1250
Datenbankpraktikum SS 2009 - Gruppe 1 - Web-MISSION

Missionsplanung

In der Missionsplanung kann der Spieler ganzen Schiffsverbänden Aufträge erteilen. Dazu wird eine Übersicht über die Schiffe am Planeten angezeigt aus der per Eingabefeld die Schiffe ausgewählt werden, die auf die Mission geschickt werden sollen.

Abb. 1: Schiffsauswahl

Darunter befindet sich der Missionsbereich. Hier wird die Missionsart per Dropdown Menü ausgewählt (Transport, Stationieren, Angriff, Spionage, Verkauf, Kolonisieren), die Zielkoordinaten bestimmt und die Ressourcen die mitgenommen werden sollen. Unter den Zielkoordinaten ist ein Link: "System zur Koordinatenwahl". Dieser Link führt in das Sonnensystem deren Koordinaten beim Aufruf der Seite eingetragen waren. Zuletzt der "Mission starten" Button. Durch Klick auf den Button werden alle Informationen an die Methode "start_mission" im "web_mission_controller" geschickt. Dieser kümmert sich darum, dass die Mission auch in der Datenbank landen, sofern keine Fehlerhaften Daten eingegeben wurden.

Abb. 2: Missionseinstellungen

In der Missionsplanung werden außerdem die eigenen Planeten (ausgenommen der aktuelle) mit Namen und Icon angezeigt. Dies hat den Zweck, das per Klick auf den Name die Koordinaten dieses Planeten in die Zielkoordinaten eingetragen werden. Dies hat allerdings den Nachteil, dass die Anzahl der Schiffe sowie die Missionsart erneut gewählt werden müssen, da der Spieler zuvor wissen sollte, wohin er die Schiffe schicken möchte.

Abb. 3: Eigene Zielplaneten

Die Planeten erhalten wir durch die Variable "@planets":

@planets = current_user.planets.find(:all, :conditions => ["id != ?", get_planet_id])

Ein Problem war es noch die ganzen Schiffe an den Controller zu übergeben. Mit statischem Aufbau der Seite wäre dieses Problem nicht aufgetreten, jedoch wäre das Spiel nur umständlich erweiterbar. Das Problem wurde so gelöst, dass der Parametername vorher als String zusammengebaut (dynamisch für jedes einzelne Schiff) und dann übergeben wird:

...
<%= s.name %>
<% var = ":" + s.name + "_" + s.level.to_s %>
<%= hidden_field_tag var, s.id %>
...
<% var2 = var + "_count" %>
<%= text_field_tag var2, 0 %>
...

Entsprechend werden im "web_mission_controller" in der Methode "start_mission" die Parameternamen wieder zusammengebaut und die Werte abgefragt. Bei 33 möglichen Schiffen und evtl. Erweiterungen ist dies die elegantere Vorgehensweise.

shipnames = RulesAndRegulations::SPACESHIPS
stufen = [1,2,3,4,5]
 
stufen.each do |stufe|
	shipnames.each do |s_name|
		var = ":" + s_name + "_" + stufe.to_s
		if(params[var])
		#abfrage sieht dann in einem Schritt z.B. so aus:
		#if(params[:Jäger_1])
			var2 = var + "_count"
			...
		end
	end
end


Page last modified on August 24, 2009, at 11:24 AM