anpera.net https://anpera.dyndns.org/phpbb3/ |
|
koordinatensystem https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=4998 |
Seite 1 von 1 |
Autor: | myrrdin [ Mo 14 Sep, 2009 19:41 ] |
Betreff des Beitrags: | koordinatensystem |
HI! ich bin noch relativ jung in der logd szene, zumindest als admin (das spielen ist i-wann reizlos geworden^^) Nu hab ich mir die 0.9.7 runtergeladen und versuche eine eigene welt zu erschaffen. dazu wollte ich einen ort proggen, der sozusagen auf einem koordinatensystem basiert. da ich ziemlich fa..., ähh ich meine natürlich um tippfehler zu vermeiden(^^), möchte ich das nicht unbedingt mit "if(get op usw)" machen und für was anderes reicht leider mein php-progger-kenntnisstand nicht. ich wäre froh wenn mir jemand einen ansatz zeigen könnte. wenn das script fertig ist, stell ichs hier rein. thx im vorraus, gruß myrrdin ps: ich wusste nicht genau in welches forum das hier sollte... |
Autor: | myrrdin [ Mo 14 Sep, 2009 20:06 ] |
Betreff des Beitrags: | Re: koordinatensystem |
Ich denke das folgende ist ein bisschen umstänlich^^ das 'feld' soll die maße 17 mal 13 haben (so in etwa) ich fänds aber echt gut wenn man die beiden höchstwerte der variablen dynamisch macht, so dass man sie jederzeit ändern kann! hier der lieber-nicht code PHP: switch ($koord){ case 0000: //... break; case 0100: //... break; case 0200: //... break; case 0300: //... break; case 0400: //... break; case 0500: //... break; case 0600: //... break; case 0700: //... break; case 0800: //... break; case 0900: //... break; case 1000: //... break; case 1100: //... break; case 1200: //... break; case 1300: //... break; case 1400: //... break; case 1500: //... break; case 1600: //... break; case 1700: //... break; case 0001: //... break; case 0101: //... break; case 0201: //... break; case 0301: //... break; case 0401: //... break; case 0501: //... break; case 0601: //... break; case 0701: //... break; case 0801: //... break; case 0901: //... break; case 1001: //... break; case 1101: //... break; case 1201: //... break; case 1301: //... break; case 1401: //... break; case 1501: //... break; case 1601: //... break; case 1701: //... break; case 0002: //... break; case 0102: //... break; case 0202: //... break; case 0302: //... break; case 0402: //... break; case 0502: //... break; case 0602: //... break; case 0702: //... break; case 0802: //... break; case 0902: //... break; case 1002: //... break; case 1102: //... break; case 1202: //... break; case 1302: //... break; case 1402: //... break; case 1502: //... break; case 1602: //... break; case 1702: //... break; case 0003: //... break; thx im vorraus^^ gruß myrrdin |
Autor: | Rikkarda [ Mo 14 Sep, 2009 20:28 ] |
Betreff des Beitrags: | Re: koordinatensystem |
ehrlich gesagt ich habe keinen Schimmer was genau du willst bzw. fragst.. kannst du das mal ein wenig genauer und ausführlicher erklären? |
Autor: | Kevz [ Mo 14 Sep, 2009 20:30 ] |
Betreff des Beitrags: | Re: koordinatensystem |
Trage die Koords. in eine Tabelle ein und rufe diese dann ab. Das ist einfacher und du sparst zahlreiche Zeilen an Code... |
Autor: | Welv [ Mo 14 Sep, 2009 20:35 ] |
Betreff des Beitrags: | Re: koordinatensystem |
Es kommt vorallem drauf an was du mit den feldern alles bezwecken willst. |
Autor: | Auric [ Mo 14 Sep, 2009 21:01 ] |
Betreff des Beitrags: | Re: koordinatensystem |
Hi myrrdin, willkommen bei LotgD! schön das du dich gleich um eine elegantere Lösung als Unmengen von geschachtelten ifs bemühst ;-) Für ein Koordinatensystem, für das eine bestimmte Schrittweite ausreicht, kann man gut eine Matrix aus verschachtelten Arrays als Grundstruktur verwenden. Wie es dann weiter geht hängt von deinen Vorlieben ab, darum zunächst mal die Arrays: $this->bbcode_second_pass_code('', ' $koords = array( 0 => array(0 => 'Turm', 1 => 'Nord-Tor', 2 => 'Spähposten'), 1 => array(0 => 'Kaserne', 1 => 'Marktplatz', 2 => 'Ost-Tor'), 2 => array(0 => 'Mauer', 1 => 'Arsenal', 2=> 'Ruine') ); // Zugriff dann über output($koords[2][0]); // Gibt Mauer aus ') (Die explizite Angabe der Schlüssel ist nicht nötig, dient aber der Übersicht) Das Beispiel oben ist wohl das einfachst mögliche. Wenn du nur einfache Texte darin ablegen möchtest kannst du das direkt so machen (natürlich auch mit längeren Texten). Eine Stufe weiter geht es mit einer Array-Stufe mehr. Dazu legst du statt der Strings gleich Arrays mit allen möglichen Daten ab: $this->bbcode_second_pass_code('', '// ... // 1=> array( 0 => array('title' => "Kaserne", 'text' => "Die alte Kaserne am Westrand der Stadt...", navs => array(/* ... */), // ... //') Wer einen (oder zwei) Schritte weiter gehen möchte, kann auch gleich Funktionen (anhand der Namen, ab PHP 5.3 auch direkt ;-) ) oder Objekte darin ablegen. Damit könnte man auch sehr elegant mehrere Koordinaten zu einem Ort zusammen fassen. Die Matrix selbst kann natürlich mehr als nur 3 x 3 Elemente haben, da kannst du ganz frei wählen. Viel Spass beim Coden Auric |
Autor: | myrrdin [ Di 15 Sep, 2009 16:19 ] |
Betreff des Beitrags: | Re: koordinatensystem |
@Rikkarda: ich möchte einen ort, an dem du, je nach dem auf welchem punkt du dich befindest, ander texte hast und andere aktionen machen kannst. Auric hat mich recht gut verstanden wenn ich nicht irre. @Kevz: darüber hab ich auch schon nachgedacht, allerdings habe ich gehöhrt dass man keine scripte in einer db speichern sollte. Und ich weiß nicht wie ich die unterschiedlichen navs, derer anzahl je nach koordinate auch anders sein kann, ohne php zu benutzen in die db stecken soll. @Welv: siehe oben^^ @Auric: Die idee mit den arrays find ich gut, aber ich wüsste nicht wie man die navs dann einbaut bzw welche ein oder zwei schritte weiter gehen notwendig sind. vllt kannst du mir das erklären?? (wie gesagt, ich kenn' mich noch nicht soviel mit php aus) leider beschleicht mich das gefühl das das sehr unübersichtlich wird, aber hauptsache es klappt^^ |
Autor: | Rikkarda [ Di 15 Sep, 2009 16:42 ] |
Betreff des Beitrags: | Re: koordinatensystem |
myrrdin hat geschrieben: @Rikkarda: ich möchte einen ort, an dem du, je nach dem auf welchem punkt du dich befindest, ander texte hast und andere aktionen machen kannst. Auric hat mich recht gut verstanden wenn ich nicht irre. ahso ![]() ![]() |
Autor: | Welv [ Di 15 Sep, 2009 16:48 ] |
Betreff des Beitrags: | Re: koordinatensystem |
mach doch n einfaches xy koordianten system. x wagerecht, y senkrecht. die nav lässt sich da einfach generieren. links (x-1), rechts (x+1), oben (y-1), unten (y+1). die felder kannst du dann zb x4y9 nennen. |
Autor: | myrrdin [ Di 15 Sep, 2009 16:56 ] |
Betreff des Beitrags: | Re: koordinatensystem |
hm so wollt ich das eig machen habs nur wieder vergessen^^ und eigentlich fehlt über der switch-anweisung ein PHP: $x=$_GET[x]; $y=$_GET[y]; $koord=$x.$y aber wie mach ich die navs in ein array? darf ich da addnav() verwenden?? |
Autor: | Welv [ Di 15 Sep, 2009 17:08 ] |
Betreff des Beitrags: | Re: koordinatensystem |
wenn du nicht in ner badnav landen willst, solltest du addnav benützen ^^ zb $max_x=17; $max_y=13; $links=$_GET[x]-1; $rechts=$_GET[x]+1; $oben=$_GET[y]-1; $unten=$_GET[y]+1; if($links>1) addnav("Links","map.php?x=".$links."&y=".$_GET[y]); if($rechts<$max_x) addnav("Rechts","map.php?x=".$rechts."&y=".$_GET[y]); ... |
Autor: | Eliwood [ Di 15 Sep, 2009 17:16 ] |
Betreff des Beitrags: | Re: koordinatensystem |
Nein. Aber du könntest die Informationen um die Navigationsinformationen ergänzen. Und anhand dessen die Navigation bauen. Wenn wir Aurics Beispiel anschauen, hat der das auch schon so vorgesehen: $this->bbcode_second_pass_code('', '// ... // 1=> array( 0 => array('title' => "Kaserne", 'text' => "Die alte Kaserne am Westrand der Stadt...", navs => array(/* ... */), // ... //') Anders dargestellt und "navs" erweitert wird das zu: $this->bbcode_second_pass_code('', '// ... // 1=> array( 0 => array( 'title' => "Kaserne", 'text' => "Die alte Kaserne am Westrand der Stadt...", 'navs' => array( 'Die Mühle' => array(1,2), 'Zurück zum Dorf' => 'village.php', ), // ... //') Die Informationen holst du dann über: $this->bbcode_second_pass_code('', '$info = $koords[$_GET['x']][$_GET['y']];') Die Navigation könntest du so erstellen: $this->bbcode_second_pass_code('', '# Durchläuft ein Array foreach($info['navs'] as $title => $target) { # Wenn $target ein Array ist, dann sind es x-y-Koordinaten if(is_array($target)) { addnav($title, 'koordinatensystem.php?x='.$target[0].'&y='.$target[1]); } # Wenn nicht, dann übernehmen wir den Nav direkt else { addnav($title, $target); } }') Edit: Lasst doch bitte diese grausige Switch-Sache, ja? Arrays sind schöner und könnten theoretisch vollständig zur Erstellung einer Karte verwendet werden. |
Autor: | myrrdin [ Di 15 Sep, 2009 18:05 ] |
Betreff des Beitrags: | Re: koordinatensystem |
ok danke ich hoffe ich habs richtig verstanden^^ ich probiers dann mal aus. |
Autor: | Salator [ Di 15 Sep, 2009 21:53 ] |
Betreff des Beitrags: | Re: koordinatensystem |
Du könntest dir vielleicht auch mal meine Version der Häfen ansehen. Allerdings ist die für die Dragonslayer-Edition V3 geschrieben, auf einer 0.9.7 ist das so nicht lauffähig. viewtopic.php?f=34&t=4967 Mit den Häfen kann man sich ein Inselreich aufbauen, indem man die Lage der Orte in ein geografisches Koordinatensystem einträgt und daraus ein Array definiert. Die Größenbegrenzung der imaginären Karte dürfte jenseits des Überschaubaren liegen. Himmelsrichtungen und Entfernungen (und damit die Reisekosten) zwischen den Orten werden automatisch berechnet. Jeder Hafen hat einen Standard-Bereich, der überall gleich ist. Zusätzliche Texte und Extra-Links können mit in das große Hafen-Array geschrieben werden. Auch kann das Betreten von einzelnen Häfen von Bedingungen abhängig gemacht werden. |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |