IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Projets Discussion :

Stralen


Sujet :

Projets

  1. #1
    Membre du Club

    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 57
    Points
    57
    Par défaut Stralen
    Bonsoir à tous, je viens de finir la programmation d'un jeux avec l'utilisation de la SDL, et dont le concept est très simple, je veux savoir vos avis
    voici le lien vers l'installation: Stralen_Setup_1.1.exe
    et vous trouverez le code source dans la pièce jointe.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Salut,

    Je n'ai malheureusement pas pu jouer à ton jeux car je suis sous Windows et j'avoue avoir la flemme de rebooter / compiler. Enfin soit j'ai ouvert ton main et même si le jeu est super fluide, sans aucun bugs, il y a une horreur qu'il faut absolument que tu corriges, c'est séparer ton code en fonction et en fichier ! Ton main ne doit pas être aussi long, c'est interdit Ça te permettra de mieux t'y retrouver dans 5 mois (lorsque tu voudras ajouter un contenu dont tu as rêvé la nuit), et d'éviter le code redondant.
    Tu peux éventuellement lire le livre "Coder proprement" qui donne d’excellent conseils.

    Pour te donner un ordre d'idée, une fonction de 10 lignes c'est quasi un maximum, Enfin c'est un "idéal" vers lequel il faut essayer de tendre.

    Néanmoins félicitation pour ton premier "gros" projet (je présume ?).

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Hello,

    Citation Envoyé par Trademark Voir le message
    Enfin soit j'ai ouvert ton main et même si le jeu est super fluide, sans aucun bugs, il y a une horreur qu'il faut absolument que tu corriges, c'est séparer ton code en fonction et en fichier ! Ton main ne doit pas être aussi long, c'est interdit Ça te permettra de mieux t'y retrouver dans 5 mois (lorsque tu voudras ajouter un contenu dont tu as rêvé la nuit), et d'éviter le code redondant. Pour te donner un ordre d'idée, une fonction de 10 lignes c'est quasi un maximum, Enfin c'est un "idéal" vers lequel il faut essayer de tendre.
    Je ne suis pas d'accord. Des fichiers ou des fonctions trop peu peuplées sont aussi pénibles à lire et à parcourir que des fichiers trop gros. Des fonctions d'un maximum de dix lignes sont aussi une hérésie.

    Personnellement, j'ouvre principalement une fonction soit pour factoriser le code (éviter de ré-écrire deux fois la même chose dans un même programme), soit pour regrouper une routine dédiée à une tâche particulière sous une entité sémantique et qui peut éventuellement être réutilisée dans une bibliothèque.

    Même chose pour les sous-répertoires : j'ai arrêté d'essayer de tout organiser à l'avance et de créer 1024 sous-répertoires pour la plupart vides et déposer mes rares fichiers au cinquième sous-niveau minimum. Je préfère maintenant faire des compromis et adopter la structure d'un « vrai » arbre végétal : il ne fait naître une nouvelle branche qu'à partir du moment où la branche-mère a atteint une certaine proportion. Donc, personnellement, je gère un « vrac » tant que je peux tout voir d'un seul coup d'œil et dès lors que mes fichiers, mes bookmarks ou tout autre ressource devient trop importante ou lorsqu'une catégorie particulière atteint un volume non-négligeable par rapport à l'ensemble de ma population, alors je les regroupe dans une sous-catégorie. Mais pas avant.

  4. #4
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Pour ce qui est des sous-répertoires, ton raisonnement tiens la route.

    Par contre je ne suis pas d'accord pour les fonctions, bien découper son programme est nécessaire pour celui qui relira derrière. Je pense que découper son programme en fonctions permet d'écrire des commentaires implicites (ceci couplé à des noms de variables adéquats).

    Tu es donc d'accord que son main fasse 300 lignes ? Je suppose que non.

    Sinon comme commentaires plus concrets, j'ajouterai que :

    Tous tes copier-coller de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        point4 = SDL_CreateRGBSurface(SDL_HWSURFACE, 5, 5, 32, 0, 0, 0, 0);
        SDL_FillRect(point4, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
        position4.x = 280;
        position4.y = 279;
    peuvent être avantageusement regroupés dans une fonction, et que point1, point2, ... devraient être dans un tableau de SDL_SURFACE*. Tu pourras ainsi initialiser en un tour de boucle

    Je vois que tu as souvent fait cette erreur de numéroter les variables, c'est donc à proscrire... N'hésite pas à utiliser les structures, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef struct point { double x, y} point;

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 184
    Points : 319
    Points
    319
    Par défaut
    J'ai testé le jeu et il me plait!!

    Le concept est simple et efficace.

    J'aime beaucoup que le fond d'écran change à chaque nouvelle partie.
    Sinon si je peux me permettre une suggestion, ce serait de mettre une bordure noire à la fenêtre, de sorte qu'on ai visuellement l'information qu'on est au bord de la fenêtre, et donc de perdre.

    Félicitations en tout cas.

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Bonjour,

    Sympa le jeu, mais je trouve étrange le choix d'avoir fait rebondir les points aléatoirement. Il serait plus judicieux de faire en sorte d'avoir des obstacles visibles, à la place de quelque chose d'aléatoire. Obstacles que si nous touchons, nous perdons.

    Je pense qu'il y a une fuite de mémoire (chargement image du fond, je pense). Mais je dis cela sans avoir vu le code.

    Si on appuie sur une touche, nous perdons. Il n'y a donc pas de pause de prévue ?

    Certains fond sont sombres, rendant les points noirs peu visibles.

    Se placer dans un coin peut permettre de gagner. Du coup, comme au bout d'un moment, la vitesse des ennemies est trop compliquée à suivre. Du coup pourquoi ne pas freiner la vitesse et en rajouter un, puis ils augmentent de vitesse, puis on en rajoute un en les ralentissant tous.
    Enfin, ce n'est qu'une idée.

    Sinon, c'est pas mal (je ne parle pas encore du code ). Petit détail qui tue, le titre de la fenêtre a un 's' minuscule.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Citation Envoyé par Trademark Voir le message
    Par contre je ne suis pas d'accord pour les fonctions, bien découper son programme est nécessaire pour celui qui relira derrière. Je pense que découper son programme en fonctions permet d'écrire des commentaires implicites (ceci couplé à des noms de variables adéquats).

    Tu es donc d'accord que son main fasse 300 lignes ? Je suppose que non.
    Ça ne me dérange pas outre mesure. Le fait que son programme fonctionne montre que son code n'a pas besoin en lui-même d'être factorisé. Et ce qui doit l'être l'a été : movepoint(). Les fonctions ont un impact à la compilation. Elles ne servent pas qu'à la présentation du code.

    Au mieux, je veux bien 3 ou 4 fonctions pour séparer les phases d'initialisation de la SDL et autre du moteur du jeu proprement dit, mais pas des fonctions de dix lignes, quand même.

  8. #8
    Membre du Club

    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Points : 57
    Points
    57
    Par défaut Stralen, Deuxieme version
    Salut à tous, je vous remercie infiniment pour tout vos remarques et vos encouragements, je viens de terminer la modification du code, j'ai essayé autant que possible de supprimer les fuites de mémoire et d'améliorer la gestion du score.
    Voici le lien vers l'installation: Stralen_Setup_1.2.exe
    et le lien vers le code source: Stralen_Source_1.2.rar
    J'espère que ça va vous plaire

  9. #9
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Chez moi,

    Cela Segfault:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    0x0000000000401216 in main (argc=1, argv=0x7fffffffe238) at main.c:42
    42	    SDL_SetColorKey(point, SDL_SRCCOLORKEY, SDL_MapRGB(point->format, 255, 255, 255));
    point vaut 0...

    C'est parce que c'est Star.bmp et linux fait une différence...

    Si je répare cela, ça plante ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    218	                score = TTF_RenderText_Blended(police, texte, couleurNoire);
    police vaut 0...

    Je pense que c'est dû au fait que je n'ai pas le ttf qu'il faut.

    Par contre, pour la prochaine fois :

    - Fait un tar.gz pour les linuxiens ou un zip...
    - Mets tes fichiers dans un répertoire, tu viens de polluer mon tmp ... ;-)

    Pour ce que est du code :

    - A chaque appel à la SDL / TTF, vérifie le retour et fait une sortie correcte...


    Jc

  10. #10
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Bonjour,

    En fait, il faudrait soit avoir le fichier projet de Code::Blocks (ou autre EDI), ou un Makefile.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  11. #11
    Membre habitué Avatar de MotorX
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Août 2011
    Messages : 87
    Points : 134
    Points
    134
    Par défaut
    Bonjour ,

    Peux tu fournir un fichier.rar , on à pas tous envie d'installer quelque chose d'inconnue sur son PC surtout si il n'y a même pas de screen .
    Mon twitter: Ici

  12. #12
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Je ne vois pas trop les différences avec la version 1.1
    De plus, certains fonds sont toujours trop sombre ce qui n'aide pas à la visibilité du jeu.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Stralen
    Par forum dans le forum Contribuez
    Réponses: 0
    Dernier message: 06/04/2012, 22h24
  2. Stralen
    Par forum dans le forum Télécharger
    Réponses: 1
    Dernier message: 29/03/2012, 20h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo