SPACE INVADERS

aera group Messages postés 382 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 8 novembre 2010 - 8 mai 2007 à 12:00
Shakan972 Messages postés 43 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 17 avril 2015 - 22 mai 2007 à 03:49
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/42599-space-invaders

Shakan972 Messages postés 43 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 17 avril 2015
22 mai 2007 à 03:49
Je te remerçie de tes encouragements et je tacherai dans tirer un certain enseignement pour avancer dans ce domaine que j'aime et je veux bien sûr parler de la programmation.
Sinon sache que si j'ai dit ne pas t'avoir trop dégouté c'est justement parce que je sais que je n'avais respecté aucune règle préalable dans la réalisation de ce projet mais je suis content que tu me l'ai rappelé car il n'y a rien de plus utile qu'une bonne méthode pour réussir quelque chose en l'occurence un bon projet en programmation.
Sinon je te souhaites bonne chance à toi aussi et au plaisir de lire tes messages sur cette partie du site ;)
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
21 mai 2007 à 21:58
En fait pour tout te dire, c'est mon métier et j'en vis plutôt bien. Même s'il est vrai que je ne suis pas du tout dans la branche "jeux" et interfaces graphiques mais dans des trucs moins drôles comme la compta et le contrôle de gestion.

Je connais bien au moins 10 langages de prog et j'ai un "vernis" de connaissance sur au moins une dizaine d'autres...

Même s'il n'est pas du tout (du tout) académique, ton style de programmation démontre une certaine capacité à trouver des solutions à des problèmes abstraits, une opiniatreté à aller jusqu'au bout de ce que tu commences.
...reste plus qu'à prendre quelques cours et à prendre un peu de bouteille et tu ira loin !!!

Bonne chance.
Shakan972 Messages postés 43 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 17 avril 2015
17 mai 2007 à 04:38
J'en suis vraiment navré à l'avenir je ferais en sorte de coder de manière plus claire et plus explicite sur ce j'espère ne pas t'avoir trop dégouté de la programmation ;)
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
16 mai 2007 à 21:33
Bonsoir,
Bon, je jette l'éponge le code de Shakan972 est vraiment trop penible à analyser :
variables globales re-déclarées 4 fois, mélange entre les fonctions de Tk et la logique du jeu etc...

En fait, pour refaire tout ca dans les règles de l'art, il faut TOUT refaire, donc, pas drôle, donc je jette l'éponge (bis).

Tchuss
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
13 mai 2007 à 16:40
Hello tout le monde,
En fait, j'ai laissé de côté Python depuis quelques temps pour revenir à ruby et samlltalk et la lecture de ce prog m'a fait byzare.
Même si je suis d'accord qu'on n'est pas obligé d'utiliser du c4 pour tuer une mouche, je pense malgré tout que s'avoir décomposer un problème et l'organiser permet de le resoudre à 80%.
Je viens de passer 3 heures sur le code de Shakan972 à essayer de mettre à plat une approche différente, en expliquant chaque étape, et j'ai pris beaucoup de plaisir à découvrir les "astuces" qu'il a choisis pour faire tourner son appli. L'informatique est aussi riche que la philosophie pour découvrir l'âme humaine et on ne dit jamais assez que c'est un art.
Trève de bavardages, je termine le "reingeneering" de ce trés noble Space Invaders et j'espère que d'autres prendront le temps de plancher dessus, la page python de ce site a besoin d'un peu de "sang neuf" !!
A bientôt donc...
Shakan972 Messages postés 43 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 17 avril 2015
12 mai 2007 à 16:47
Merçi de tes félicitations ça fait toujours plaisir ;)

Faut dire que j'ai la sale habitude de ne pas finir un chapitre sans avoir fini tous les exercices qui vont avec d'où le fait que je n'ai pas terminé le livre et puis si en plus je me rajoute des épreuves comme ce jeu ben je suis pas prêt de voir le bout :D

Bref merçi !!
aera group Messages postés 382 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 8 novembre 2010 18
12 mai 2007 à 16:37
Au faite, Shakan972 je voullais te felliciter pour ce travail : en être arrivé à faire ce jeu en étant au chapitre 9 du cour de Gérard Swinnen, c'est remarcable. J'ai fini le livre et je suis long de savoir faire un tel jeu aussi bien.
aera group Messages postés 382 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 8 novembre 2010 18
12 mai 2007 à 16:35
Tu peut être un peut brutale TMONOD quand tu parles des "mauvaises habitude de programmation" : ici, l'utilisation de classes n'est pas indispensable, bien qu'elle accéléreraient le jeu. On peut discuter longtemps sur le fait d'utiliser des classes ou plutôt les fonctions, mais sache que pour ce genre de jeu, je n'utiliserais pas non plus de classes (trop de travail :) il faut savoir rester simple parfois !). Pareil, je pense qu'il ne faut pas séparer la logique du jeu et l'interface, ça n'a aucun sens, même pour le passage sous WxPython ou autre : c'est complettement différent de Tkinter (au passage, si tu pouvez nous expliquer comment tu fais parce que la je vois pas comment on peut le faire). Par contre tu a raison quand tu parles des fonctions que l'on pourrait répété, l'a, je doit dire que c'est tout de même dommage, on pouvait faire quelque chose de bien. Très bonne idée que celle du "mini concours d'optimisation du code". Bon courrage à tous et j'espère que certaine personne présenterons des programmes interressants !
_____
Aéra
Shakan972 Messages postés 43 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 17 avril 2015
12 mai 2007 à 15:54
La vérité c'est que je savais très bien que ce programme méritait une optimisation poussée d'où le fait de l'avoir commenté au maximum déjà j'avais pensé qu'il aurait fallut utiliser les classes car ce genre de procédé que sont les classes semble ma foi bien plus adapté et plus correcte d'utilisation dans ce genre de projet.
Le problème étant que je n'ai pas encore abordé les classes qui plus est je ne connais aucune bibliothèques graphiques pour python omis Tkinter, c'est un fait donc je sais très bien que mon code est un foutoir notable j'en suis conscient à 100% mais j'ai tout de même limité la casse en commentant au maximum et cela il faut bien l'admettre.
La notion de fonction est donc la notion qui m'a le plus aidé dans ce projet bien entendu le code mérite d'être raccourci mais n'ayant pas encore une fois les notions suffisantes pour répondre à ce problème j'ai donc présenté le programme tel quel.
Certes il est long mais comme tu dis il fonctionnes mais comme tu dis il y a des défauts apparents j'en prends note et j'y réfléchirai.
Mais saches que j'ai réalisé ce programme avec les notions acquises au cours des 9 premiers chapitres du livre de Gérard Swinnen donc voilà.
Ce n'est pas une excuse valable pour expliquer mes erreurs mais il y a une part de la raison qui fait que le code soit présenté comme il t'est présenté actuellement donc en espérant qu'il puisse néanmmoins servir de source d'inspiration je suis tout de même content d'avoir posté cette source ici.

@+ et bon coding !! :)
TMONOD Messages postés 256 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 6 novembre 2009 1
12 mai 2007 à 12:22
Bonjour,
Même si le résultat fonctionne bien, (même si c'est un peu lent ;)) il y a beaucoup à dire sur l'optimisation du code et les mauvaises habitudes de programmation :
- Pas de programmation objet, rien que des methodes
- pas de séparation de la logique du jeu et de l'interface (comment faire si on veux adapter le jeu en wx, qt ou gtk ?)
- des instructions comme celle ci :
can.delete(EnnemiBonus[0])
can.delete(EnnemiBonus[1])
can.delete(EnnemiBonus[2])
can.delete(EnnemiBonus[3])
ne peuvent-elles pas être mises dans une boucle ?

- même genre de remarque pour :
Ennemi_Categorie1()
Ennemi_Categorie2()
Ennemi_Categorie3()
imagine le boulot quand on voudra ajouter un Ennemi_categorie4...;

Les points positifs :
- Source trés bien commentée
- noms des variables explicites
- Design tout à fait correct

Si ca amuses quelqu'un je propose un mini concours d'optimisation du code de ce jeu sans qu'il n'y ait aucune modification de l'aspect visuel et de la logique du jeu !!
...allez ! je me lance de mon côté ! à bientôt
aera group Messages postés 382 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 8 novembre 2010 18
8 mai 2007 à 12:00
Très bonne source bravo, il n'y a rien à dire je met 10 sans aucune ésitation !!!
Bonne continuation et encore bravo
______
Aéra
Rejoignez-nous