begin process at 2012 05 27 19:16:42
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > SHOOT THEM UP (SPACE INVADER) AVEC CMUGRAPHICS

SHOOT THEM UP (SPACE INVADER) AVEC CMUGRAPHICS


 Information sur la source

Note :
5,5 / 10 - par 2 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Classé sous :shoot, space, invader, cmugraphics Niveau :Débutant Date de création :09/04/2006 Date de mise à jour :14/05/2006 17:08:40 Vu / téléchargé :5 628 / 663

Auteur : Pistol_Pete

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
C'est un shoot them up vertical. Le vaisseau ne peut bouger que sur une ligne horizontale et on le controle avec la souris.
Il y a 6 armes différentes dont des missiles à tête chercheuse.
Pour pouvoir upgrader son arme,il faut clicker sur le bouton droit de la souris pour sortir le crochet et récupérer les bonus.

bonus rouge => vie
bonus vert  => arme

Pour compiler ce programme il faut inclure CMUgraphics bien sure mais aussi MSIMG32 pour gérer la transparence


 Conclusion

On pourra améliorer le mouvement des vaisseaux ennemis. Si vous avez des idées pour améliorer ce point, n'hézité pas.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

11 avril 2006 17:16:36 :
Le crochet peut maintenant attraper les bonus.
05 mai 2006 13:05:38 :
Ajout d'une classe Bitmap pour permettre de gérer la transparence des images.
14 mai 2006 17:08:40 :
petite modif

 Sources du même auteur

Source avec Zip Source avec une capture VISUALISATION DES IMAGES EN 3D SANS OPENGL
Source avec Zip Source avec une capture ANALYSE DE LA TEXTURE D'UNE IMAGE : FILTRE DE GABOR
Source avec Zip Source avec une capture VIEWER COMPLET POUR LE TRAITEMENT DE L'IMAGE : IMANALYSE
Source avec Zip Source avec une capture ALGORITHMES D'OPTIMISATION NON LINÉAIRE: DESCENTE DE GRADIEN...
Source avec Zip Source avec une capture CLASSE GRAPH: GESTION DES GRAPHIQUES DANS LES APPLICATIONS W...

 Sources de la même categorie

Source avec Zip Source avec une capture JEU DES CARTES par eapaceinfo
PROGRAMME DE JEU DE MPT par KerizGarmm
Source avec Zip Source avec une capture JEUX SERPENT par antho974
Source avec Zip Source avec une capture PENDU EN SDL par Damsou91
Source avec Zip STATE MACHINE MODIFICATION MATH BUCKHAM par billybones79

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture DÉTECTION DES DROITES DANS UNE IMAGE : HOUGH par Pistol_Pete
Source avec Zip Source avec une capture TRANSFORMÉE DE HOUGH: DÉTECTION DE DROITES par Pistol_Pete
Source avec Zip Source avec une capture STÉGANOGRAPHIE : CAMOUFLAGE DE TEXTE DANS UNE IMAGE par Pistol_Pete
Source avec Zip Source avec une capture DIAGRAMME DE VORONOI par Pistol_Pete
Source avec Zip Source avec une capture JEU DE SPACE INVADER EN OPENGL par bny

Commentaires et avis

Commentaire de Orikata le 10/04/2006 16:02:18

chez moi le crochet n'attrape rien (j'ai lancé le .exe directement)

Commentaire de Kleidp le 11/04/2006 10:47:14

Salut,

Je vais devoir dire quelque chose que tu redoute peut être, ça ne fonctionne pas (sur mon PC du moins :). A mon avis ça doit venir de ta façon de gérer le timer, mais j'y connais rien sur time.h, clock() et slip(), donc je peux pas trop t'aider.

Sinon juste un (gros ?) conseil, revois les cours sur la programmation objet (ne le prend pas mal :). Tu as fais énormément d'erreurs dans ta classe (tu n'en utilise qu'une seule !). Je pense que tu n'as pas compris à quoi sert ce type de programmation. En fait l'un des avantages des classes est que l'on peut facilement les réutiliser dans d'autres programmes. Donc tu ne peux pas instancier dedans (etoile ETOILE[100]), utiliser les avion1.Open(..), utiliser des boucles sur le nombre d'ennemis par exemple. Tout ça doit être séparé de ta classe. Une classe se compose de variables (private ou protected dans la majorité des cas) et de méthodes (public). Par exemple si tu veux faire avancer des ennemis (dans ton main() ) :

Ennemi Ennemis[10] ;
For(i=0 ;i<Ennemi::GetNombre() ;i++) <- Méthodes static accedant a une variable static
{
    Ennemis[i].Anvance(2) ;
}

Un lien qui devrait t'aider : http://www.esil.univ-mrs.fr/~chaouiya/C++/coursCourcelle/
Tu peux me mailer si tu n'as pas bien compris a quoi sert la programmation objet (C'était le plus difficile dans mon cas :)

Voila bon courage si tu veux remodifier ton code, sinon n'hésite pas a juste poster une modif sur le problème de timer, j'étais curieux de voir comment fonctionne le crochet.

Commentaire de luhtor le 11/04/2006 12:03:35

Je pense pas que le main doit jouer ce role de faire avancer les ennemis.
Pour moi, l'idéal est de créer une classe singleton "game" qui s'occupe de faire avancer les ennemis, de démarrer la partie, de mettre en pause, etc... Chaque ennemi est bien sur une classe à part dérivant tous d'une classe virtuelle pure de base qui permet d'avoir une structure simple dans la classe singleton. Genre un vector<Cennemi_base*>.

Enfin, a mon avis, ya rien a mettre dans le main.

Commentaire de Kleidp le 11/04/2006 13:44:36

Ahh, c'est la seconde fois que je vois quelqu'un parler de classe singleton cette semaine. Alors j'ai essayé de me renseigner mais je vois mal l'interet d'une tel classe !
Copier-Coller d'une phrase qui résume bien ce que j'ai pu lire sur le singleton:

"Le modèle singleton permet une instanciation unique d'une classe de manière plus sûre que l'utilisation de variables globales."

Donc déja, j'ai jamais compris pourquoi l'utilisation de variables globale n'est pas sure (et j'arrete pas de le lire, donc ça serait bien que je sache enfin)!

Ensuite prenons l'exemple de mettre en pause le jeu, en quoi inclure ceci dans une classe singleton est un avantage par rapport a une procedure de détection du clavier ?

PS: C'est vrai que j'ai été un peut vite quand j'ai écrit "dans ton main()", bien sur je fait avancer l'ennemi dans une procedure IA, puis cette procedure dans le main. Donc meme question que plus haut :)

Merci pour tes explications

Commentaire de Pistol_Pete le 11/04/2006 15:13:21

Salut à tous. Merci de vos remarques. Tu as tout à fait raison Kleidp, je ne tire pas avantage de toutes les possibilités de la programmation objet. Je débute en prog objet et j'ai beaucoup à apprendre. Maintenant que j'ai plus avancé dans mes cours, je me rend compte de mes erreurs mais j'avais la flème de tout reprendre.

Le crochet sera reparé ce soir. Effectivement j'ai du supprimer une ligne de code par inadvertance.

Pour ce qui est du timer, je ne comprend pas pourquoi t'arrive pas à compiler. Toutes ses fonctions viennent de time.h et windows.h.
Tu utilises Linux?

Commentaire de luhtor le 11/04/2006 17:27:25

Pourquoi pas des variables globales ?
- Deja pasque c'est chiant à gérer. Imagine tu veux rajouter une variable, tu dois la définir en extern partout. Mais bon.
- Ensuite surtout par sécurité. Tu peux modifier accidentellement une variable globale, alors que si tout est encapsulé, il n'y pas plus trop de risque. Qui n'a jamais écrit : if (a = 4) {...} ?
et a perdu un temps fou pour détecter l'erreur.

Ensuite, pourquoi une classe singleton et pas une classe normal ? D'un point de vue sécurité, ca évite toute sorte de copie éventuelle de l'objet. Et la mettre en singleton, ca coute rien. Doit ensuite y avoir d'autres raisons, mais elles me viennent pas a l'esprit.
Autre exemple, la console dans un jeu. Pourquoi pourrait ton déclarer deux consoles ? Faut faire en sorte de pas pouvoir, donc on met ca en singleton. Mais faut pas se dire" mais le programmeur est pas con, il va pas en créer deux". Ah bon ?

Ensuite pour la pause, évidemment que ca sera détecter par le clavier. Mais quand tu as un jeu graphique, il est logique (et svt vital !) de séparer l'affichage et le calcul des positions (en gros tout ce qui n'est pas graphique). Mettre un jeu en pause, ne met pas en pause l'affichage, mais juste le thread qui s'occupe du calcul des trajectoires et autres.
Donc dans ton prog principal, quand tu détectes l'appuis sur P, tu éxécutes la fonction game->Toggle_pause() par exemple.

Tout le pb ici, c'est de séparer ce qui n'est pas lié. Pour mettre un jeu en pause, c'est pas  forcément la touche "P". Mais on s'en fou. Tout ce que l'on sait, c'est que le doit etre pouvoir etre mis en pause, donc on créé la fonction pour ca. Savoir quand on mettra la pause, c'est un autre problème, mais pas celui du singleton. C'est ce que l'on appelle la programmation modulaire  non ? cad de voir chaque partie indépendemment les unes des autres.

Enfin voila, mon avis, je suis ouvert au débat :)
++

Commentaire de luhtor le 11/04/2006 17:39:40

Ah oui j'avais une question a propros du jeu.

Pourquoi quand je touche un ennemi, il se téléporte sur un autre endroit de l'écran ?

Commentaire de Pistol_Pete le 11/04/2006 19:01:44

Pour ce qui est de la gestion des ennemis, à chaque fois que l'on tue un ennemi, celui-ci est recreer de manière aléatoire n'importe où sur l'écran. Je sais c'est pas terrible, j'aurais du les créer à l'extérieur de l'écran et les déplacer vers l'intérieur. Comment tu as fait pour ton shoot kleidp ?  

Commentaire de Kleidp le 12/04/2006 11:15:29

Ok Luthor je comprend mieux l'interet d'une classe singleton (reste plus qu'a l'utiliser :).

Pour les ennemis j'ai fait comme tu as dit Pistol, je les recréer juste en haut de l'écran. Par contre ne prend pas mon jeu comme un exemple de bonne programmation, je suis justement en train de le réécrire en objet et il y a beaucoup d'endroit pas optimisé du tout ^^. Par contre c'est un bon exemple pour voir qu'il faut bien séparer le code de l'affichage, ce que je n'ai pas fait pour les météorites et le texte qui s'affiche en bas (et on voit le résultat :).

Commentaire de Kleidp le 12/04/2006 11:25:31

oO Je viens d'essayer de tester ton jeu en mode "Compatible windows 95" et ca fonctionne bien ^^

Commentaire de Pistol_Pete le 12/04/2006 18:18:28

Vous en pensez quoi des missiles à tête chercheuse? C'est pas un peu trop facile lorsqu'on les a?
J'ai l'impression que la difficulté est trop faible non?

Commentaire de Pistol_Pete le 14/01/2007 19:58:02

Voila j'ai mis la lib CMUgraphics sur mon site internet comme ca il ne devrait plus y avoir de problème et tout le monde pourra compiler mes sources
http://pistol.petesampras.free.fr

A+

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Question sur Space Invader [ par Panther ] Bonjour je suis en train de monter un jeu comme Space Invader, mais il me manque quelques notions... Je voudrais savoir comment faire bouger le vaisse Fenetre très space [ par RegMakeYouCrazy ] Salut,Y a un ptit truc que j'aimerai faire pour mes progs depuis longtemps, c des interfaces à la Trillian ou Sonique. C'est à dire sans barre système les template [ par FlyFucker ] Bonjour,peut on se servir d'un struct en temps que type d'un template !car avec le template que j'ai fait, au moment de l'integration dans mon program cmugraphics [ par cbossa ] Je viens de récupérer le source du mastermind, mais lorsque je veux le compiler je m'aperçois que je n'ais pas stdafx.h ni cmugraphics.h.Comment puis CMUgraphics probleme [ par beuah ] Bonjour à tous! Je suis nouveau sur le site. Et donc un relatif "débutant" en C++, compte tenu des réalisations de certains membres... Vraiment impres probleme CMUgraphics [ par beuah ] Boujour tout le monde! Voila,je suis nouveau sur le site et relativement debutant... j'ai un probleme avec CMUgraphics qui me genere 1 erreur et 1 war cherche bibliotheque graphique [ par beuah ] bonjour a tous! ayant des problemes avec  la bibliotheque CMUgraphics.h, je cherche une autre bibliotheque graphique, si possible un peu plus efficace Découper un string par un autre string [ par borgeomi ] borgeomibonjouuuuuuur !!!!!Je voudrais décomposer un string en fonction d'un autre string ' - ' ( space tiret space )exemple 111111 - 22222 - 3333333- CMUGraphics [ par stevekitio ] svp bonsoirj ai télécharger Borland fast CMUgraphicsmais l'integration dans visual c++ 2008 ne passe pascmt l'intégrer dans dev cpp  et quelque exempl CMUGRAPHICS [ par stevekitio ] SVP comment fais t'on pour compiler les source de CMUGraphics mediumavec devCpp ou visual c++ 2008?comment l'intégrer dans un projet?ou peux on téléch


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,248 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales