CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] Structures

Mouuh
Mouuh
Niveau 6
23 juillet 2004 à 13:52:28

Bonjour à tous.

Je programme un petit jeux de commerce spatial ( qui tourne dans une fenêtre DOS, j´ai pas encore le niveau pour m´attaquer à OpenGL...).

J´ai ajouté à ce jeux des ennemis qui apparaissent aléatoirement sur la carte.

Mon problème est que je ne sais pas comment faire pour avoir 200 ennemis si j´en ai envie sans devoir initialiser 200 structures, chose assez chiante.

Comment faire pour avoir à partir d´UNE seule initialisation plusieur " représentant" ?

J´ai pas l´impression que je sois très clair, dite-moi si vous piger pas ce que j´écris...

lag-it
lag-it
Niveau 10
23 juillet 2004 à 14:20:05

C´est dans ce cas de figure que l´on se dit que le C++ et ces constructeurs sont très utiles :)

Fait une fonction d´initialisation avec une boucle...

JeanYvesYves
JeanYvesYves
Niveau 10
23 juillet 2004 à 14:21:29

ben : un tableau ! !

notion essentielle :

typedef struct
{
int pointsdevie;
int attaque;
int cequetuveux...
} Ennemi;

Ennemi table[200];

et ensuite tu peut les commander facilement :

table[125].attaque=3;
/ * défini une attaque de 3 pour l´ennemi 125 */

for(i=0;i<200;i++)
{
if ( table[i].pointsdevie<=0) detruitennemi(i);
}
/ * teste pour TOUS les ennemis s´ils sont morts.*/

Mouuh
Mouuh
Niveau 6
23 juillet 2004 à 14:58:13

En fait j´avais déjà fais un truc dans ce style.

struct ennemi Ennemi1 = {truc, chose};

struct ennemi *pEnnemi[10]

for(i = 0; i < 10; i++)
{
*pEnnemi[i] = &1;
}

for(i = 0; i < 10; i++)
{
carte[(*pEnnemi[i]).coord_y][(*pEnnemi
[i]).coord_x] = position_ennemi;
}

Le problème c´estque de cette manière il n´y avait qu´un seul ennemi qui s´affichait. Il fallait que je fasse :
struct ennemi Ennemi1
struct ennemi Ennemi2
struct ennemi Ennemi3
struct ennemi Ennemi4
. ..

struct ennemi *pEnnemi[10] = {&1, &2, . ..};

pour que cela fonctionne.

Ferais-je une enorme erreur de logique ?

JeanYvesYves
JeanYvesYves
Niveau 10
23 juillet 2004 à 15:06:31

tout a fait, une belle erreur de logique :

struct ennemi Ennemi1
est une structure : elle est qq part en mémoire, on va dire a l´adresse 123456

struct ennemi *pEnnemi[10]
--> tu crées 10 pointeurs sur une struct ennemi

for(i = 0; i < 10; i++)
{

  • pEnnemi[i] = &1;

}
--> tu fais pointer tes 10 pointeurs sur l´adresse de Ennemi1 ( &1)
donc tes 10 pointeurs regardent l´adresse 123456

donc quand tu passes par l´un des pointeurs pour changer une donnée, ça change Ennemi1

donc conseil :

struct ennemi pEnnemi[10];
/ / te cree 10 ennemis statiques

si tu preferes faires pointeurs, alors :

struct ennemi* pEnnemi[10];

for(i = 0; i < 10; i++)
{

  • pEnnemi[i] = new struct Ennemi;

pEnnemi[i]->champ_a = truc;
pEnnemi[i]->champ_b = chose;
}

et la tu as bien, dans les 2 cas, 10 structures distinctes.

JeanYvesYves
JeanYvesYves
Niveau 10
23 juillet 2004 à 15:08:12

ou alors si tu veux faire comme tu disais ici :

au lieu de faire :

struct ennemi Ennemi1
struct ennemi Ennemi2
struct ennemi Ennemi3
struct ennemi Ennemi4
. . .

struct ennemi *pEnnemi[10] = {&1, &2, . . .};

tu fais :

struct ennemi Ennemi[10];
struct ennemi* pEnnemi[10];

for(i=0;i<10;i++)
{
pEnnemi[i]=&(Ennemi[i]);
}

Mouuh
Mouuh
Niveau 6
30 juillet 2004 à 00:31:52

Juste un petit up pour te remercier de tes réponses JeanYvesYves.

Merci.

JeanYvesYves
JeanYvesYves
Niveau 10
30 juillet 2004 à 09:24:45

:)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware