Nous sommes quatre gars qui font un jeu Tower Defense comme projet en première année dans une université. Le jeu va être vraiment simple!
- Trois tours différentes
- Trois monstres différents
- Une carte (peut-être en ajouter si nous avons le temps)
Le jeu doit être orienté objet.
La structure des classes est la suivante
- Jeu - Dessin graphique, etc.
- Niveau - Chaque niveau est un objet de cette classe. Chaque niveau a un nombre fini d'objets d'onde (dans une liste)
- Wave - Contient une liste d'objets monstres.
- Monster - C'est une superclasse. Nous faisons des sous-classes pour les différents types de monstres
- Tower - Superclass aux tours. Il existe des sous-classes pour chaque type de tour.
Nous réfléchissons à la façon de résoudre le problème que de nombreux objets doivent faire en même temps, par exemple déplacer un pixel dans une direction.
Nous avons eu l'idée d'implémenter la classe av Timer, pour contrôler quand les objets font des choses. Je ne suis pas sûr que ce soit la meilleure façon de procéder. Quelqu'un pourrait-il donner de bonnes idées sur la façon de résoudre le cas de mise à jour continue?
Fondamentalement, j'utilise une boucle de mise à jour et non un système basé sur des événements.
Pour mettre à jour des monstres, vous pouvez parcourir une liste de monstres et les mettre à jour dans la boucle de mise à jour avec, disons,
monster.update()
Si un monstre doit marcher, il doit mettre à jour sa position. Donc, dans la méthode de mise à jour, je calcule la nouvelle position sur la base du temps écoulé, qui est stocké dans une classe de «minuterie» séparée.
Cela devrait être tout ce qui marche '';)
la source
elapsedTime * movementPerSecond
. Ou vous pourriez avoir un temps de recharge sur la tour de tir:if(cooldown > 0){ cooldown -= elapsedTime } else { cooldown = X, shoot(); }
etc.Je suppose que cela remplira bien son objectif pour un projet uni, mais dans un vrai jeu, j'aurais une classe de monstres concrets, et au lieu de sous-classer les types, avoir les différents types de monstres décrits dans les fichiers de données. La vitesse, les points de vie, les résistances à différents types de dégâts et les sprites peuvent être parfaitement décrits dans les fichiers, il vous sera plus facile d'ajouter de nouveaux types de monstres à votre jeu, et vous n'aurez pas à compiler chaque fois que vous le feriez veulent le faire.
Bref, sur le mouvement. Donnez à tous vos objets "mobiles" différents une variable de vitesse. Chaque image de votre logique de jeu vous fait parcourir tous ces objets mobiles et fait quelque chose comme
Cela s'applique aux monstres, aux missiles des tours, etc ...
la source