我开始学习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);
}
}
}
答案 0 :(得分:0)
首先,您是cannot initialize values in the struct declaration。为了挽救您的代码,也许我会建议这样的事情。
#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
声明存在相同的问题(也缺少结尾的}
)