структура не имеет члена с именем ... и ожидаемым идентификатором - PullRequest
0 голосов
/ 28 января 2019

Я начал изучать немного C, и для этого я программирую небольшую игру, поэтому, пожалуйста, будьте осторожны со мной.Я хочу поместить свои массивы в две разные структуры.Первая структура имеет пять массивов и описывает атрибуты монстров.Второй должен описать атрибуты персонажа, которого вы играете.

struct monster_eigenschaften {
    const int monster_leben[MONSTER_ANZAHL] = {10,12,15,19,25};
    const int monster_schaden_mod[MONSTER_ANZAHL] = {5,6,7,8,9};
    const int monster_schaden_const[MONSTER_ANZAHL] = {3,4,5,6,7};
    const int monster_erfahrung[MONSTER_ANZAHL] = {5,10,20,30,50};
    // Array aus 5 Pointern mit den jeweiligen Namen der Monster
    const char *monster_name [MONSTER_ANZAHL] = {"Bob","Horst","Gerd","Bonobo","Olaf"};
};
struct monster_eigenschaften -> eigenschaften[MONSTER_ANZAHL];

struct charakter_eigenschaften {
    // Anzahl der Heiltränke des Charakters
    int heiltrank;
    // Benötigte EXP zum nächsten level-up
    unsigned int char_erfahrung_need;
    // EXP des Charakters
    unsigned int char_erfahrung_haben;
    // Benötigte EXP zum level-up
    int char_erfahrung_aufstieg = 50;
    // Level des Charakters
    int char_level = 1;
    // Schaden den der Charakter mindestens macht
    int atk_char_const = 10;
    // modularer Schaden der auf den Konstanten Schaden gerechnet wird
    int atk_char_mod = 5;

int monster(int id, int spieler_leben) {
    struct charakter_eigenschaften -> charakter[MONSTER_ANZAHL];
    int leben = eigenschaften.monster_leben[id];
    int dmg;
    int atk_char;
    char kampf_flucht;
    char trank_auswahl;
    printf("Ein wildes %s erscheint!\n", eigenschaften.monster_name[id]);
    printf("Wollen sie Kaempfen oder flüchten? (k/f)\n");
    scanf("%s", &kampf_flucht);
    do{
        atk_char = rand() %  charakter.atk_char_const + charakter.atk_char_mod;
        dmg = rand() % eigenschaften.monster_schaden_mod[id] + eigenschaften.monster_schaden_const[id];
        // Wenn k oder K gedrückt wird, startet der Kampf und endet sobald die Lebenspunkte des Charakters oder des Monsters auf Null sind
        if (kampf_flucht == 'k' || kampf_flucht == 'K'){
            printf("%s greift an und richtet %d schaden an\n", eigenschaften.monster_name[id], dmg);
            spieler_leben = spieler_leben - dmg;
            printf("Sie greifen an und richten %d Schaden an\n", charakter.atk_char);
            leben = leben - charakter.atk_char;
            printf("%s hat %d Leben\n",eigenschaften.monster_name[id], leben);
            printf("Sie haben noch %d Leben\n", spieler_leben);
        }
        // Wenn f oder F gedrückt wird, soll der Charakter vor dem Monster fliehen
        else if(kampf_flucht == 'f' || kampf_flucht == 'F'){
            printf("Sie sind gefluechtet\n");
            break;
        }
        // Wenn weder k, K, f oder F gedrückt wird, wird die Schleife verlassen
        else{
            break;
        }
        if(charakter.heiltrank >= 1){
            printf("Möchten Sie einen Heiltrank benutzen?(y)\n");
            scanf("%s", &trank_auswahl);
            if(trank_auswahl == 'y' || trank_auswahl == 'Y'){
                spieler_leben = spieler_leben + HEILUNG;
                heiltrank --;
                printf("Sie haben einen Heiltrank getrunken und haben nun %d Lebenspunkte\n", spieler_leben);
                printf("Ihnen verbleiben %d Heiltränke\n", heiltrank);
            }
        }
    }

Logs

1 Ответ

0 голосов
/ 28 января 2019

Прежде всего, вы не можете инициализировать значения в объявлении структуры .Чтобы спасти ваш код, я бы предложил что-то вроде этого, возможно.

#define MONSTER_ANZAHL 5

struct monster_eigenschaften {
    const int monster_leben[MONSTER_ANZAHL];
    const int monster_schaden_mod[MONSTER_ANZAHL];
    const int monster_schaden_const[MONSTER_ANZAHL];
    const int monster_erfahrung[MONSTER_ANZAHL];
    // Array aus 5 Pointern mit den jeweiligen Namen der Monster
    const char *monster_name [MONSTER_ANZAHL];
};

static const struct monster_eigenschaften EIGENSCHAFTEN = {
.monster_leben = {5, 10, 23, 25, 6},
.monster_schaden_mod = {...}
...
};

Та же проблема присутствует с вашим объявлением charakter_eigenschaften (в котором также отсутствует закрывающий })

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...