anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 09 Jun, 2025 00:12

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: koordinatensystem
BeitragVerfasst: Mo 14 Sep, 2009 19:41 
Offline
Newbie

Registriert: Mo 14 Sep, 2009 18:55
Beiträge: 5
LoGD: http://noch.nicht.vorhanden.xd
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...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: koordinatensystem
BeitragVerfasst: Mo 14 Sep, 2009 20:06 
Offline
Newbie

Registriert: Mo 14 Sep, 2009 18:55
Beiträge: 5
LoGD: http://noch.nicht.vorhanden.xd
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: koordinatensystem
BeitragVerfasst: Mo 14 Sep, 2009 20:28 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 28 Aug, 2004 18:48
Beiträge: 1712
ehrlich gesagt ich habe keinen Schimmer was genau du willst bzw. fragst.. kannst du das mal ein wenig genauer und ausführlicher erklären?

_________________
~Inaktiv und Abwesend solange Mysql hier Moderatorenrechte hat~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: koordinatensystem
BeitragVerfasst: Mo 14 Sep, 2009 20:30 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Trage die Koords. in eine Tabelle ein und rufe diese dann ab. Das ist einfacher und du sparst zahlreiche Zeilen an Code...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: koordinatensystem
BeitragVerfasst: Mo 14 Sep, 2009 20:35 
Offline
Profi
Profi

Registriert: Mo 30 Okt, 2006 21:29
Beiträge: 195
Es kommt vorallem drauf an was du mit den feldern alles bezwecken willst.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: koordinatensystem
BeitragVerfasst: Mo 14 Sep, 2009 21:01 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
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

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: koordinatensystem
BeitragVerfasst: Di 15 Sep, 2009 16:19 
Offline
Newbie

Registriert: Mo 14 Sep, 2009 18:55
Beiträge: 5
LoGD: http://noch.nicht.vorhanden.xd
@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^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: koordinatensystem
BeitragVerfasst: Di 15 Sep, 2009 16:42 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 28 Aug, 2004 18:48
Beiträge: 1712
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 :) Das erinnert mich an abandoncastle.php vielleicht schaust da mal rein :) (solltest hier im Forum finden, ansonsten per google)

_________________
~Inaktiv und Abwesend solange Mysql hier Moderatorenrechte hat~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: koordinatensystem
BeitragVerfasst: Di 15 Sep, 2009 16:48 
Offline
Profi
Profi

Registriert: Mo 30 Okt, 2006 21:29
Beiträge: 195
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: koordinatensystem
BeitragVerfasst: Di 15 Sep, 2009 16:56 
Offline
Newbie

Registriert: Mo 14 Sep, 2009 18:55
Beiträge: 5
LoGD: http://noch.nicht.vorhanden.xd
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??


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: koordinatensystem
BeitragVerfasst: Di 15 Sep, 2009 17:08 
Offline
Profi
Profi

Registriert: Mo 30 Okt, 2006 21:29
Beiträge: 195
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]);
...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: koordinatensystem
BeitragVerfasst: Di 15 Sep, 2009 17:16 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: koordinatensystem
BeitragVerfasst: Di 15 Sep, 2009 18:05 
Offline
Newbie

Registriert: Mo 14 Sep, 2009 18:55
Beiträge: 5
LoGD: http://noch.nicht.vorhanden.xd
ok danke ich hoffe ich habs richtig verstanden^^ ich probiers dann mal aus.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: koordinatensystem
BeitragVerfasst: Di 15 Sep, 2009 21:53 
Offline
Profi
Profi
Benutzeravatar

Registriert: Mo 02 Feb, 2009 21:11
Beiträge: 168
Geschlecht: Männlich
LoGD: salator.selfhost.de/lotgd
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.

_________________
if(date("ymmd")=="10050502") echo("Der alte Sack wird heute 40");


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 20 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum