variable variablen ?



  • hi,
    ich programmier hier ein kleines spielchen, was u.a. am anfang nachfrägt, wieviel spieler es sein sollen.

    die spieler realisier ich durch eine struktur "player" als einzelne instanzen:

    struct player p1, p2, p3, ...;
    

    da das programm auch informationen der spieler auf dem bildschirm ausgibt, z.B. ihre momentanen punkte, ihr name etc., müsste ich aber irgendwie die instanzen variabel anlegen.

    weil diese infos werden als tabelle auf dem bildschirm gezeigt, und wenn es z.B. nur 3 spieler gibt, möchte ich halt nicht in der tabelle 10 spieler haben, die dann eh keinen namen und nix haben..

    also die frage:

    ich bekomme einen int-wert vom user, nennen wir ihn mal 'x', wieviel spieler es sind.
    wie kann ich dann genau 'x' instanzen der struktur player erstellen?
    in einer schleife geht das ja nicht, weil die instanzen natürlich unterschiedliche namen haben müssen.

    per switch-konstrukt würde das halt gehen, im fall von 10 spielern ist das auch nicht so wild, aber ich würde das mal generell wissen.

    ausserdem wird es spätestens bei der info-tabelle umständlich.
    ich kann ja nicht eine tabelle erstellen für den fall von 2 spielern, von 3, von 4, usw...
    da hab ich doch dann 10000 zeilen code..

    gibt's variable variablen? 😞



  • hdi schrieb:

    gibt's variable variablen? 😞

    Es gibt dynamische Arrays, die du mit malloc/free anlegen/freigeben kannst. Grobes Beispiel:

    struct Player* players = malloc(X * sizeof(Player));
    
    /* players[0] bis players[X-1] sind unterschiedliche Player-Instanzen. */
    
    /* Wenn die nicht mehr gebraucht werden: */
    free(players);
    

    Wobei X die Anzahl ist, die in dem Fall auch variabel sein darf.



  • Da würde auch ein Array mit fester Größe reichen (Ich nehme mal an, die Anzahl der Spieler wird kleiner 1000 sein). Die größe des Arrays musst du dir sowie so merken und dann merkst du dir noch wieviele gerade eingetragen sind.
    http://de.wikipedia.org/wiki/Array (unten ist sogar ein C Beispiel)



  • Da würde auch ein Array mit fester Größe reichen (Ich nehme mal an, die Anzahl der Spieler wird kleiner 1000 sein).

    😕


Anmelden zum Antworten