Einen Array nochmals definieren

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Einen Array nochmals definieren

    hi.
    Ich mache gerade ein Spiel... und bei dem hab ich Lieferanten.

    Diese Lieferanten bekommen bei mir auch namen (diese werden nachher gedrawt)

    und das sieht inetwa so aus:

    lieferant[0] = Test
    lieferant[1] = Test2

    Jetzt möcht ich aber nicht nur definieren, das lieferant 0 Test heißt, sondern auch das dieser Preiswerter ist. (Ein Computerspiel: 10 Euro, bei dem anderen lieferant 15)

    muss ich da was mit case verwenden? Keinen schimmer..^.^ mit dem hab ich noch nie gearbeitet...
    danke schonmal für eure antworten...


    Edit: Warum ich arrays verwende? Ich will das nicht immer jeder Lieferant zur verfügung steht und das lös ich mit arrays^^
    mfg Salmi
  • Benutz doch einfach zwei Arrays:

    GML-Quellcode

    1. lieferant_name[0] = "Hans"
    2. lieferant_name[1] = "Peter"
    3. lieferant_name[2] = "Rudi"
    4. lieferant_preis[0] = 10;
    5. lieferant_preis[1] = 5;
    6. lieferant_preis[2] = 7;


    Beispiel Verwendung:

    GML-Quellcode

    1. for (i=0;i<3;i+=1)
    2. show_message(lieferant_name[i]+" verkauft die Ware für "+string(lieferant_preis[i]));
    Einige meiner Spiele:
  • Huhu,
    ich weiß ich schmeiß mich jetzt einfach mitten in die Diskussion .. und ich weiß, es wurde hier schon irgendwann mal erklärt.
    Aber mir brennt gerade die Frage, da ich mit diesen "eckigen Klammern in den Variablen" jetzt auch arbeiten muss: Was zum Teufel ist genau ein Array? Was macht ihn anders als eine Variable?
    Wäre nett, wenn mir das jem anschaulich ohne Fachbegriffe kurz hier einwerfen kann, oder ne PM schickt :D

    Sorry nochmal, wenn ich das hier so einwerfe, aber es passt halt zum Thread so ein bisschen :P

    grüße
    naibaf
    True story!
  • Nene, mir machts nichts wenn du dich hier einmischt xD

    Naja wennste jetzt schreibst:

    hallo[0] = 10120
    hallo[1] = 1101
    hallo[2] = 10101
    usw...

    dann kannst du das abfragen... du kannst sagen das du per zufall ein hallo haben möchtest. Der Computer wählt eines aus, und den wert der hallo[0,...] hat spuckt er dann aus^^

    Anders kann ichs nich erklären, vorallem weil ichs selber noch nich genau weiß^^ ich kenne zumindest nur diese funktion von arrays...
    mfg Salmi
  • Einen eindimensinalen Array kannst du dir wie eine Liste vorstellen. Liste[1..x] hat x Einträge und mittels Liste[y] kannst du auf den Eintrag mit dem Index y zugreifen.
    Eigent sich besonders gut um mittels Schleife verarbeitet zu werden, da du innerhalb der Schleife die Indexvariable durchgehen kannst.
    Gibt auch Zweidimensionale Arrays: Feld[x,y]

    Für weitere Informationen kannst du einen Blick in die Hilfe werfen oder auch allgemein nach "Array" googeln. In anderen Programmiersprachen tut es das selbe.
  • Ich versuchs mal mit den Arrays: XD

    Also: Ein Array ist grundsätzlich nichts weiter als eine Liste.
    Diese Liste hat einen Namen und einen Index (entspricht dem eintrag bzw absatz).

    Wenn du nun also schreibst:

    GML-Quellcode

    1. Handy[1] = "Nokia 123"

    Dann trägst du in die Liste "Handy" in den Index (eintrag) 1 den String "Nokia 123" ein.

    Soweit verstanden? ;)

    Du kannst nun einen zweiten Eintrag vornehmen indem du schreibst:

    GML-Quellcode

    1. Handy[2] = "Sony Ericsson 16"

    Hier trägst du (wie oben) das Handy "Sony Ericsson 16" in die Liste "Handy" ein (eintrag 2).


    Arrays werden eben für solche kleinen "Datenbanken" verwendet. z.B: ein Inventar: Du hast im Inventar auch mehrere Felder denen ein Item zugeordnet ist. Um nun all diese Daten zu speichern, benutzt man eben Arrays.
    Man könnte zwar auch für jedes Feld eine eigene Variable definieren, aber das wäre viel zu umständlich. ;)

    War das halbwegs verständlich? ^^'

    /Edit: Mist! Zu spät....
  • Ein Array ist eine Datenstruktur, die mehrere Variablen enthält. Die einzelnen Variablen kann man über den Index (die Zahl in den eckigen Klammern) ansteuern.
    Das kann für einige Dinge übersichtlicher und praktischer sein.

    Das obere Andwendungsbeispiel soll die folgenden Nachrichten als Textbox ausgeben:
    Hans verkauft die Ware für 10
    Peter verkauft die Ware für 5
    Rude verkauft die Ware für 7

    Das kann man natürlich auch direkt so schreiben:

    GML-Quellcode

    1. show_message("Hans verkauft die Ware für 10");
    2. show_message("Peter verkauft die Ware für 5");
    3. show_message("Rude verkauft die Ware für 7");

    Das sind aber 3 Zeilen und nicht sehr variabel. Der Name Hans und der Preis 10 werden sicher noch an anderen Stellen im Code gebraucht. Deshalb will man die wohl in Variablen auslagern.
    Mit normalen Variablen wäre das dann so:

    GML-Quellcode

    1. lieferant_name_0 = "Hans";
    2. lieferant_name_1 = "Peter";
    3. lieferant_name_2 = "Rudi";
    4. lieferant_preis_0 = 10;
    5. lieferant_preis_1 = 5;
    6. lieferant_preis_2 = 7;
    7. show_message(lieferant_name_0+" verkauft die Ware für "+string(lieferant_preis_0));
    8. show_message(lieferant_name_1+" verkauft die Ware für "+string(lieferant_preis_1));
    9. show_message(lieferant_name_2+" verkauft die Ware für "+string(lieferant_preis_2));
    Alles anzeigen

    Jetzt sind Name und Preis in Variablen ausgelagert und ich kann sie wunderbar unabhängig von der Textausgabe bearbeiten. Allerdings brauche ich für jede Textausgabe eine eigene Zeile. Das mag bei 3 Lieferanten noch funktionieren, mit mehreren artet die Schreibarbeit aber bald aus.
    Deshalb habe ich die Namen und die Preise je in einem Array zusammengefasst und kann sie jetzt in einer for-Schleife alle nacheinander ausgeben:

    GML-Quellcode

    1. for (i=0;i<3;i+=1) // führt die untere Zeile 3x aus, zuerst mit i=0, dann mit i=1 und zuletzt mit i=2
    2. show_message(lieferant_name[i]+" verkauft die Ware für "+string(lieferant_preis[i]));
    Wenn ich jetzt irgendwann mal 42 Lieferanten habe, muss ich nicht wie vorher 42 Zeilen mit show_message schreiben, sondern ändere nur die Zahl in der for-Schleife:

    GML-Quellcode

    1. for (i=0;i<42;i+=1) // führt die untere Zeile 42x aus, zuerst mit i=0, dann mit i=1 usw. bis zuletzt mit i=41
    2. show_message(lieferant_name[i]+" verkauft die Ware für "+string(lieferant_preis[i]));


    Ich hoffe, das Beispiel erklärt es ganz gut. Ansonsten schau dir mal den "Simple English" Wikipedia-Eintrag an:
    simple.wikipedia.org/wiki/Array
    Einige meiner Spiele: