Hallo Game-Studio Community ich hoffe ihr könnt mir bei meinem Problem weiterhelfen.

GER:
Meine Problemstellung ist es einige structpointer des typ HERO und einige structpointer des typ MONSTER im Heap zu allocieren. ich hab es so gelöst:


ENG:
My problem is to allocate a few structpointer from type of HERO and a few from type of MONSTER in the heap. I've solved it this way:



Code:
typedef struct MONSTER
{
...
	var INIT_M;
...
}MONSTER;

typedef struct HERO
{
...
	var INIT;
...
}HERO;

//initialisierung über enmies_create() und hero_create()


MONSTER* create_enemies()
{
MONSTER* enemy = (MONSTER*)malloc(sizeof(MONSTER));
...
		enemy->INIT_M = 14;
...
		return enemy;
}

int hero_order[3] = {0,1,2};
int cur_hr = 0;

HERO* create_hero()
{
		HERO* hero = (HERO*)malloc(sizeof(HERO));
...
		switch(hero_order[cur_hr])//hero_order enthält die werte 0,1,2
		{
		case 0:
...
			hero->INIT = 16;
		case 1:
...
			hero->INIT = 12;
		case 2:
...
			hero->INIT = 15;
		}
...
                cur_hr++;
		return hero;
}

//direkte übergabe des pointer an andere HERO pointer

void create_battle_startup()
{
	
	HERO* hero0 = create_hero();
	HERO* hero1 = create_hero();
	HERO* hero2 = create_hero();
	MONSTER* monster0 = create_enemies();
	MONSTER* monster1 = create_enemies();
	MONSTER* monster2 = create_enemies();

       
       i= hero1.INIT; //hier entsteht das Problem
        // i = 408
...



GER:
nachdem ich also die structs initialisiert habe und übergeben hab, liest er einen falschen Wert für Init aus. theorethisch müsste hero1.INIT die 12 beinhalten, zum Zeitpunkt der initialisierung tut sie das auch nur am Zeitpunkt nach der Übergabe enthält sie einen anderen Wert. ich habe es auch bereits kontrolliert, ob der Pointer "hero1" vieleicht eine andere adresse enthält aber er hat genau die adresse welche er bekommen soll nur ist einzig und allein der INIT wert fehlerhaft. Es ist nun ziemlich schwer dafür noch eine sinnvolle erkläung zu finden und ich würde mich freuen wenn mir jemand erklären könnte was ich falsch mache.


ENG:
after I've initialize and handed over the structs to the other pointer hero0,hero1 which works fine the compiler read out a wrong content of hero1.INIT. In theory hero1.INIT should content the 12 instead of 408. it's really hard for me to understand this matter because the transfer of other components like ATTACK, DEFENSE works fine only the INIT component gives me headache. I'd be very grateful if there is someone how could explain what is wrong with my considerations.

Gruß Tommy

Last edited by Tails01; 04/17/12 13:22.

An implemented second-rate idea is better than a good idea, which gathering dust in your brain.