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

Développement 2D, 3D et Jeux Discussion :

Snake en C


Sujet :

Développement 2D, 3D et Jeux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 23
    Par défaut Snake en C
    Salut tout le monde,

    Je m'apprette à faire le fameux snake en C ( ou C++ ), j'ai (comme dit la bonne habitude ) pris ma feuille et mon crayon en esseyant d'arriver a une structure de code plus ou moins vraisemblable.

    Dans un premier temps, il me faudrai donc d' un coté un serpent qui bouge et de l'autre une interface I/O ( que le joueur puisse controller le serpent ).

    On m'a parlé de threads pour pouvoir faire les 2 tâches en même temps, mais voila que depuis quelque jours que je lis sur les pthreads (gnu/linux) et ça me semble quandmême pas mal compliqué, surtout si après je veux en faire une version graphique ( GTK par exemple ).

    Donc voila, je veux savoir si je suis en train de perdre mon temps avec les fameux pthreads ou si l'on utilse vraiement des threads pour faire des jeux-vidéos.

    J'ai aussi pensé à l'utilisation d'événements ( très utilisé pour les interfaces graphiques ) mais je n'ai pas la moindre idée de comment l'appliquer à mon serpent

    PS: On m'a aussi évoqué la fonction kbdhit() (DOS) mais cela ne m'interesse pas vraiement, mon objectif étant d'avoir plusieurs procès en même temps.

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    pour ce qui est du multi tache, il n'y a pas 36 solution...
    Je crois qu'il te faudra effectivement passer par les threads...

    tu parlais d'évènements... mais le plus souvent, programmation évènementielle sous-entend mutlithread
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 23
    Par défaut
    D'accord donc je continue ma guerre avec les pthreads. D'autre part, est-ce que la plupart des jeux les utilisent ? Ou y-a-til d'autres solutions / manières ?

    Donnezmoi des pistes :-)

  4. #4
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Oui, je pense qu'on peut dire que la plupart des jeux utilisent les threads...

    Il y a bien un autre moyen, mais il en est très proche, ce sont les process...

    pour se représenter la chose, disons que chaque application a (peut avoir) plusieurs process et chaque process a (peut avoir) plusieurs threads...

    Ensuite, je n'ai jamais utilisé les process personellement... et même si ç'a l'air compliqué de prime abord, tu verra qu'en fait la lib pthread est très simple d'utilisation
    Malheureusement, je ne possède pas de tuto sur cette lib...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  5. #5
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 23
    Par défaut
    Bein merci beaucoup pour ta réponse, depuis quelques jours je me demandai vraiement si j'essayai de peindre la lune avec une plume.
    Je continue donc ma croisade, hier je suis allé faire un tour sur Amazon et je pense que je finirai par achetter un livre à propos des pthreads. Pour le moment tous les docs que j'ai trouvé sur Internet me semblent difficiles de comprendree ou incomplets ...

    D'autre part, si je choisi les Pthreads j'assume que mon jeux ne sera plus portable sur Win32, il y a quoi comme lib de threads sinon ?

    Merci encore.

  6. #6
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    alors, phtread est la libraire POSIX pour les threads (c'est à dire UNIX et BSD je crois) pour windows, il te faut utiliser WinThread (go to MSDN)

    à l'époque, j'avais commencer à réempaqueter les deux API dans de classes (C++) mais il faudra que j'y retravaille... Quand ce sera fait, tu pourras peut-être t'en inspirer pour faire un empaquetage en C...

    l'avantage, c'est que tu as quelques .h, .o/.c et directives de compilation à changer, au lieu de devoir modifier tout le code qui utilise les threads
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Par défaut
    Lol je vois pas l'interet d'utiliser les Treads Posix pour un jeu et encore un moins un serpent (si c'est bien de ca dont tu parles).

    Les threads (dont les Pthread ne sont qu'un exemple propre a linux, tu peux aussi prendre ceux de la SDL qui sont portable ou ceux de boost ou autre) servant surtout lors de calcul tres compliqué afin de parralélisé tout ca. Ensuite dans la pluspart des cas tu reparti tes "threads" a des processeur afin de tout traité mais dans ton cas c'est completement inutile.

    Regarde sur le site la FAQ de la SDL, on y parle de thread propre a la librairie si jamais ca t'interesse, mais dans ton cas c'est inutile sauf pour si tu veux apprendre comment ca marche.

  8. #8
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par shuygar
    On m'a parlé de threads pour pouvoir faire les 2 tâches en même temps,
    On n'utilise pas des Threads pour un simple Snake !!!
    A quoi cela va-t-il te servir ?
    Et ça risque de ralentir le jeu ...


    A croire que cela soit contagieux : on veut faire compliqué alors qu'on peut faire simple !
    Fais le plus simple possible sinon c'est ingérable

  9. #9
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 887
    Par défaut
    Bonjour,

    Je pense que faire des threads est nécessaire quand on a envie de faire deux actions en simultané, ce qui n'est pas ton cas, car tu as envie que ton serpent réagisse tout de suite après l'appui sur ta touche.

    Imaginons le cas de threads pour le serpent : tu appuierais sur les touches de déplacement, et cette séquence de touche irais dans une queue; ton thread d'affichage du serpent déplacerait le serpent en vidant la queue, et quand ta queue serait trop grande, tu aurais un temps de latence entre le moment où tu appuierais, et le moment où le serpent se déplacerait, ce qui serait ennuyeux pour le gameplay

    A+

  10. #10
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 787
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 787
    Par défaut
    Citation Envoyé par KiLVaiDeN
    tu appuierais sur les touches de déplacement, et cette séquence de touche irais dans une queue;
    Non surtout pas car dans ce cas le jeu serait perdu

    Désolé je pouvais pas la rater

  11. #11
    Membre chevronné Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Par défaut
    Moi perso j'ai fait mon premier projet graphique il y a maintenant 2 ans :
    C'était une jeu de serpent en C++, avec DirectDraw pour afficher, DirectInput pour ce qui est des périphériques, mais je n'ai pas utilisé de thread, ni de process....
    Avant de surcharger le processeur avec un jeu comme un serpent il y a 2 solutions : soit c'est codé comme un porc et le proc rame dans la mer**, ou alors il ne ressemble pas trop à un serpent traditionel, il y a des effets de fou qui demande de la ressource....
    J'ai mis environ 6 mois pour faire (ou commettre ) ce projet....
    Avec du recul maintenant je n'aurai pas fait certaines choses de la même manière. Si tu veux des conseils, demande moi...

    Pour ce qui est des jeux en multithread, je ne suis pas certain qu'énormement de jeu soient en multi thread....
    Il y a énormement de contraintes : la syncronisation de l'ensemble de l'application, le calages entre les threads.... Seul les jeux très récent et encore commence à toucher au multi-threading.

Discussions similaires

  1. [ancien jeu] Snake deux joueur en ligne?
    Par Extra-Nitro dans le forum Web
    Réponses: 7
    Dernier message: 28/02/2007, 18h59
  2. [Source] [SDL] [C++] snake en SDL
    Par loka dans le forum Contribuez
    Réponses: 4
    Dernier message: 14/07/2006, 22h32
  3. Snake en C
    Par tittoto dans le forum C
    Réponses: 15
    Dernier message: 29/11/2005, 21h04
  4. [TP][Projet] Réaliser un Snake-Like
    Par Giovanny Temgoua dans le forum Turbo Pascal
    Réponses: 69
    Dernier message: 17/01/2005, 18h04

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