[Jeu] Comment coder des ennemis en C++?

Comment coder des ennemis en C++? [Jeu] - Programmation

Marsh Posté le 29-06-2001 à 23:30:38    

Maintenant que je sais comment marche l'aspect graphique d'un jeu 2D, je me demandais comment les developpeurs codaient les actions des ennemis et leurs chemins prédéfinis. Si quelqu'un pouvait un peu m'expliquer.
 
PS: je parle pas de l'intelligence artificiel, juste de faire bouger des ennemis dans un chemin prédéfini.

Reply

Marsh Posté le 29-06-2001 à 23:30:38   

Reply

Marsh Posté le 29-06-2001 à 23:36:04    

Comme dans les autres langages de prog :D

Reply

Marsh Posté le 29-06-2001 à 23:39:47    

A la brutale. En général, ils définissent une stucture pour les sprites qui contient les différentes frames composant le sprite et ses coordonnées. Tu fais varier les coordonnées dans la boucle principale de ton jeu.


---------------
http://www.chadenat.forez.com
Reply

Marsh Posté le 01-07-2001 à 03:14:25    

Il est cool de séparer l'affichage du reste, et définir pour un ennemi des actions à entreprendre, et des modes (en shoot'em up, c'est pas trop dur, dans pleins de jeux tout est prédéfini) d'action.
 
un ennemi veut attaquer et se défendre.
 
Soit un vaisseau ennemi.
Il a deux modes: agressif et défensif
 
le choix du mode peut être déterminé en fonctions de ses points de vie, et de l'armement du joueur.
 
S'il est en mode agressif, il se place à la distance optimale pour son arme et l'utilise, s'il est en défensif, il se cache dans le décors et tire quand il n'y a pas de tirs prêts.
 
dans tous les cas, s'il se prend des impacts, il se déplace.
 
Dans l'absolu, un langage de script c'est cool, mais ça demande du boulot. J'ai écrit une espèce de BASIC pour ce genre de choses, mais ça m'a pris une bonne vingtaine d'heures.
 
Donc je pense que le mieux à faire, est de définir une fonction d'affichage du vaisseau qui détemine la trame de son animation.
 
ex:
//on charge ces vectors d'un fichier
vector<Image *> shipframes;
 
 
vector<int> fireframes; //={10,11,12,13,12,11,10} par exemple
vector<int> normalship; //={0};
vector<int> moveup;     //={1,2}
vector<int>  
 
 
 
tu crées un fichier
EnnemiAffichage.alo
*****************
imagebasename=ennemipetit
imagenumber=20
imageextension=.bmp
 
MODE normal
COMMENCEMENT
PENDANT
1
2
ARRET
 
MODE tir
COMMENCEMENT //éxécuté une fois en debut de mode
10
11
12
PENDANT      //exécuté en boucle
13
14
ARRET        //exécuté à la fin du mode
12
11
10
 
MODE moveup
COMMENCEMENT
3
4
5
PENDANT
6
ARRET
5
4
3
 
MODE mort
COMMENTCEMENT
15 16 17 18 19
PENDANT
ARRET
*****************
 
L'écriture d'un fichier d'affichage t'économisera beaucoup de misères. C'est plus simple à coder qu'un interpréteur de script et pour un shoot'em up c'est plus simple.
 
ensuite dans ton code, t'as une string avec le nom du mode et ton code va chercher dans la structure de donnée construite à partir de ton fichier affichage parsé quels frames afficher.
 
Bien sûr c'est un exemple, mais la même chose un peu plus compliquée peut faire des miracles et des animations de folie.
 
maile moi si tu veux en parler.


---------------
-----------------------
Reply

Marsh Posté le 01-07-2001 à 04:44:40    

j'en avais marre de taper dans le post, et donc je t'ai mailé du code que j'ai pondu car je me suis levé trop tard et j'arrivais pas à dormir. Maintenant je suis fatigué et je vais pioncer.


---------------
-----------------------
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed