Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1635 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Jeu du ver

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Jeu du ver

n°880419
Shaman Liz​ardKing
Blanc2poulet
Posté le 22-10-2004 à 22:22:14  profilanswer
 

Bonsoir,
 
Je suis en train de me mettre gentiment au C++ après 2 ans de Java et j'ai fait un pti prog avec une fonction récursive.
 
Voici le code
 

Citation :


//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
class Worm
{
        protected:
        int ***cube ;
        int *deltaX ;
        int *deltaY ;
        int *deltaZ ;
        int coup ;
        double pourcentage ;
        int hesitation ;
        int nbreSolutions ;
 
        public:
        Worm()
        {
                deltaX = new int[6] ;
                deltaY = new int[6] ;
                deltaZ = new int[6] ;
 
                int deltaX[6] =  {0, 0, 1, -1, 0, 0} ;
                int deltaY[6] =  {1, -1, 0, 0, 0, 0} ;
                int deltaZ[6] =  {0, 0, 0, 0, 1, -1} ;
 
                coup = 1 ;
                pourcentage = 0 ;
                hesitation = 0 ;
                nbreSolutions = 0 ;
 
                cube = new int**[10] ;
 
                for(int i=0;i<10;i++)
                        cube[i] = new int*[10] ;
 
                for(int j=0;j<10;j++)
                        for(int k=0;k<10;k++)
                                cube[j][k] = new int[10] ;
 
                for(int l=0;l<10;l++)
                        for(int m=0;m<10;m++)
                                for(int n=0;n<10;n++)
                                        *(*(*(cube+l)+m)+n) = 0 ;
        }
 
        ~Worm()
        {
                delete[] deltaX ;
                delete[] deltaY ;
                delete[] deltaZ ;
                delete[] cube ;
        }
 
        void moveWorm(int x, int y, int z, int coup)
        {
                if((x >= 0) && (x <= 9) && (y >= 0) && (y <= 9) && (z >= 0) && (z <= 9) && ((*(*(*(cube+x)+y)+z)) == (0)))
                {
                        *(*(*(cube+x)+y)+z) = coup ;
                        coup++ ;
 
                        if(coup>1000)
                        {
                                afficher(cube) ;
                        }
 
                        else
                        {
                                for(int i=0;i<6;i++)
                                moveWorm((x+deltaX[i]), (y+deltaY[i]), (z+deltaZ[i]), coup) ;
                        }
 
                        *(*(*(cube+x)+y)+z) = 0 ;
                 }
                 else
                 {
                        afficher(cube) ;
                 }
        }
 
        void afficher(int ***cube)
        {
                int freeCase = 0 ;
                nbreSolutions++ ;
 
                for(int a=0;a<10;a++)
                        for(int b=0;b<10;b++)
                                for(int c=0;c<10;c++)
                                        if((*(*(*(cube+a)+b)+c))==0)
                                                freeCase++ ;
 
                pourcentage = freeCase/100 ;
                cout << "Solution no : " << nbreSolutions << " Pourcentage de case libre = " << pourcentage ;
                cout << endl ;
                for(int i=0;i<10;i++)
                {
                        for(int j=0;j<10;j++)
                        {
                                for(int k=0;k<10;k++)
                                {
                                        cout << *(*(*(cube+i)+j)+k) ;
                                }
                                cout << endl ;
                        }
                        cout << endl ;
                }
 
        }
 
};
//---------------------------------------------------------------------------


 
 
J'ai passé un peu de temps sur le debugger et j'ai tracer, apparemment il y a un problème lorsque je rappelle la fonction dans ma méthode moveWorm.
 
Qqun pourrait-il m'aiguiller ??
 
Merci
 
 
edit: les règles du jeu, un cube, un ver qui se déplace, afficher lorsque le ver ne peut plus avancer, soit paske il se mange, soit pask'il touche un mur soit paske il a remplit tour le cube.


Message édité par Shaman LizardKing le 22-10-2004 à 22:24:22
mood
Publicité
Posté le 22-10-2004 à 22:22:14  profilanswer
 

n°880425
kadreg
profil: Utilisateur
Posté le 22-10-2004 à 22:25:15  profilanswer
 

C'est quoi cette horreur ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°880430
Shaman Liz​ardKing
Blanc2poulet
Posté le 22-10-2004 à 22:30:08  profilanswer
 

Vazy ca fait une semaine que je code fait pas le salaud

n°880433
verdoux
And I'm still waiting
Posté le 22-10-2004 à 22:33:27  profilanswer
 

Tu veux nous tuer notre Kadreg, hein !
(Mollo sur le stillrox, kad)
 
Et puis change de cat, si Taz te voit t'es mort.

n°880434
Shaman Liz​ardKing
Blanc2poulet
Posté le 22-10-2004 à 22:34:23  profilanswer
 

Excuse moi, mais je comprend pas ce que tu dis....

n°880435
kadreg
profil: Utilisateur
Posté le 22-10-2004 à 22:35:30  profilanswer
 

verdoux a écrit :

(Mollo sur le stillrox, kad)


 
c'est stilnox :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°880436
Shaman Liz​ardKing
Blanc2poulet
Posté le 22-10-2004 à 22:35:50  profilanswer
 

Vous pouvez pas m'aider donc ?

n°880437
verdoux
And I'm still waiting
Posté le 22-10-2004 à 22:36:25  profilanswer
 

kadreg a écrit :

c'est stilnox :o


Ca titre à combien, 60° ?

n°880438
kadreg
profil: Utilisateur
Posté le 22-10-2004 à 22:38:23  profilanswer
 

verdoux a écrit :

Ca titre à combien, 60° ?


 
10mg de tartrate de zolpidem :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°880439
Shaman Liz​ardKing
Blanc2poulet
Posté le 22-10-2004 à 22:39:50  profilanswer
 

Bon merci quand même j'irai demander sur un autre forum
 
Bonne soirée


Message édité par Shaman LizardKing le 22-10-2004 à 22:42:17
mood
Publicité
Posté le 22-10-2004 à 22:39:50  profilanswer
 

n°880445
kadreg
profil: Utilisateur
Posté le 22-10-2004 à 22:47:42  profilanswer
 

[:banguy]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°880896
el muchach​o
Comfortably Numb
Posté le 23-10-2004 à 18:34:01  profilanswer
 

Shaman LizardKing a écrit :

Excuse moi, mais je comprend pas ce que tu dis....


 
Le premier bug, c'est l'utilisation de l'abominable *(*(*(cube+l)+m)+n) là où un simple tableau à 3 dimensions cube[l][m][n] suffirait.Ensuite, je m'étonne même que ça compile sans gueuler alors que tu définis tranquillement int* deltaX =new int[6] et juste après int deltaX[6]. Bonjour les confusions. Après 2 ans de Java, que tu codes comme ça, ça fait franchement peur...


Message édité par el muchacho le 23-10-2004 à 18:39:03
n°881791
Shaman Liz​ardKing
Blanc2poulet
Posté le 25-10-2004 à 11:07:55  profilanswer
 

el muchacho a écrit :

Le premier bug, c'est l'utilisation de l'abominable *(*(*(cube+l)+m)+n) là où un simple tableau à 3 dimensions cube[l][m][n] suffirait.Ensuite, je m'étonne même que ça compile sans gueuler alors que tu définis tranquillement int* deltaX =new int[6] et juste après int deltaX[6]. Bonjour les confusions. Après 2 ans de Java, que tu codes comme ça, ça fait franchement peur...


 
Excuse moi.... mais j'ai eu la réponse sur le forum de developpez.com
 
C'est incroyable a quel point votre seul but c'est d'enfoncer les débutants ici !!
 
Pour ceux que ca intéresse, j'ai simplement modifié l'insertion des données dans le tableau comme ca :
 
deltaX[0] = 0 ;
deltaX[1] = 0 ;
 
etc....
 
et ca marche très bien
 
Good bye !

n°881831
red factio​n
Posté le 25-10-2004 à 11:30:03  profilanswer
 

kadreg a écrit :

10mg de tartrate de zolpidem :o


 
c pas avec ca que tu va c**** de toute facon ca fait 3 mois que jmen prend 10mg tous les soir mais moi c pour pieuter   :whistle:


Message édité par red faction le 25-10-2004 à 11:30:22
n°881834
chrisbk
-
Posté le 25-10-2004 à 11:32:05  profilanswer
 

el muchacho a écrit :

Ensuite, je m'étonne même que ça compile sans gueuler alors que tu définis tranquillement int* deltaX =new int[6] et juste après int deltaX[6].


 
y'a pas a s'etonner, ca s'apelle du shadowing de variable et c'est autorisé (youpi)
par contre ca pue un max


---------------
NP: HTTP Error 764 Stupid coder found
n°881843
cris56
Posté le 25-10-2004 à 11:37:08  profilanswer
 

Shaman LizardKing a écrit :

Excuse moi.... mais j'ai eu la réponse sur le forum de developpez.com
 
C'est incroyable a quel point votre seul but c'est d'enfoncer les débutants ici !!
 
Pour ceux que ca intéresse, j'ai simplement modifié l'insertion des données dans le tableau comme ca :
 
deltaX[0] = 0 ;
deltaX[1] = 0 ;
 
etc....
 
et ca marche très bien
 
Good bye !


 
ils ne t'ont pas aider en te donnant la solution
 
c'est architecturé à la java, et tout ces new sont inutiles
il faudrait d'ailleur redefinir constructeur par copie et operateur d'affectation, et apprendre à liberer correctement la memoire
 

Citation :


cube = new int**[10] ;  
 
                for(int i=0;i<10;i++)  
                        cube[i] = new int*[10] ;  
 
                for(int j=0;j<10;j++)  
                        for(int k=0;k<10;k++)  
                                cube[j][k] = new int[10] ;  
 


 

Citation :


~Worm()  
        {  
                delete[] deltaX ;  
                delete[] deltaY ;  
                delete[] deltaZ ;  
                delete[] cube ;
        }


 
delete[] c'est magique  :D


Message édité par cris56 le 25-10-2004 à 11:37:58
n°881944
smaragdus
whores, drugs & J.S. Bach
Posté le 25-10-2004 à 12:33:11  profilanswer
 

cris56 a écrit :

delete[] c'est magique  :D


 
Ah mais le compilateur est magique : :o  
comme la variable s'appelle "cube", il sait qu'il faut faire les delete des lignes à l'intérieur du cube :o  
 
En tout cas, ça confirme une fois de plus que le java n'aide pas à coder proprement.

n°881965
KangOl
Profil : pointeur
Posté le 25-10-2004 à 12:55:17  profilanswer
 

Code :
  1. for(int i=0;i<10;i++)
  2.                         cube[i] = new int*[10] ;
  3.                 for(int j=0;j<10;j++)
  4.                         for(int k=0;k<10;k++)
  5.                                 cube[j][k] = new int[10] ;
  6.                 for(int l=0;l<10;l++)
  7.                         for(int m=0;m<10;m++)
  8.                                 for(int n=0;n<10;n++)
  9.                                         *(*(*(cube+l)+m)+n) = 0 ;


ca ca pourrait ce faire en 3 for...


---------------
Nos estans firs di nosse pitite patreye...
n°881991
sircam
I Like Trains
Posté le 25-10-2004 à 13:38:26  profilanswer
 

Smaragdus a écrit :

En tout cas, ça confirme une fois de plus que le java n'aide pas à coder proprement.


Mais qu'est-ce que tu racontes ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°882070
smaragdus
whores, drugs & J.S. Bach
Posté le 25-10-2004 à 14:59:16  profilanswer
 

sircam a écrit :

Mais qu'est-ce que tu racontes ?


 
On parle du "delete[] cube" pour ceux qui n'ont pas suivi  :sarcastic:

n°882242
sircam
I Like Trains
Posté le 25-10-2004 à 17:06:29  profilanswer
 

Smaragdus a écrit :

On parle du "delete[] cube" pour ceux qui n'ont pas suivi  :sarcastic:


Et qu'est-ce que Java vient faire là-dedans, hein ? Je ne vois pas en quoi Java n'aide pas à coder proprement.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°882253
smaragdus
whores, drugs & J.S. Bach
Posté le 25-10-2004 à 17:15:42  profilanswer
 

sircam a écrit :

Et qu'est-ce que Java vient faire là-dedans, hein ? Je ne vois pas en quoi Java n'aide pas à coder proprement.


 
Si t'as pas compris, c'est pas la peine d'insister.

n°882254
cris56
Posté le 25-10-2004 à 17:15:45  profilanswer
 

peut etre que Smaragdus veut dire que Java n'aide pas à coder proprement en c++
 
ce qui est forcement vrai ?

n°882256
chrisbk
-
Posté le 25-10-2004 à 17:17:22  profilanswer
 

cris56 a écrit :

peut etre que Smaragdus veut dire que Java n'aide pas à coder proprement en c++


 
nuance importante, il pourrait le dire tout seul comme un grand
 

Citation :


ce qui est forcement vrai ?


 
bah pour la desalloc, oui. Apres, bon, c'est a voir
 


---------------
NP: HTTP Error 764 Stupid coder found
n°882287
sircam
I Like Trains
Posté le 25-10-2004 à 18:05:12  profilanswer
 

+1 chrisbk, c'est comme ça que je l'entendais ;)


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°882612
el muchach​o
Comfortably Numb
Posté le 25-10-2004 à 23:08:47  profilanswer
 

Shaman LizardKing a écrit :

Excuse moi.... mais j'ai eu la réponse sur le forum de developpez.com
 
C'est incroyable a quel point votre seul but c'est d'enfoncer les débutants ici !!
 
Pour ceux que ca intéresse, j'ai simplement modifié l'insertion des données dans le tableau comme ca :
 
deltaX[0] = 0 ;
deltaX[1] = 0 ;
 
etc....
 
et ca marche très bien
 
Good bye !


 
alors pour moi, c'est simple, si ton but est d'apprendre à coder à peu près correctement, tu viens ici et t'essayes de comprendre ce qui t'y est dit. Par contre, si tu veux continuer à coder comme un porc, tu vas sur Programmez et tu attends qu'on te fournisse les réponses comme on gave les oies. Perso, entre ces deux pédagogies, ça fait longtemps que j'ai fait mon choix. Sache que pour la plupart d'entre nous, ton problème ne présente mais alors strictement aucun intérêt.
 
Ton programme est simplement et objectivement mauvais, et si ce n'est pas aujourd'hui, c'est évident que ce style (si on peut dire) de programmation finira par te donner à l'avenir des migraines bien plus importantes que le problème pour lequel tu es venu. C'est facile d'en corriger les défauts les plus flagrants, je te les ai donnés, et ce faisant, je t'ai rendu un service bcp plus important que la réponse que tu as obtenue sur l'autre forum.

n°882615
el muchach​o
Comfortably Numb
Posté le 25-10-2004 à 23:10:39  profilanswer
 

chrisbk a écrit :

y'a pas a s'etonner, ca s'apelle du shadowing de variable et c'est autorisé (youpi)
par contre ca pue un max


 
Du shadowing dans le même bloc ??? Jamais vu ça jusqu'à présent.

n°882795
Lam's
Profil: bas.
Posté le 26-10-2004 à 09:04:11  profilanswer
 

el muchacho a écrit :

Du shadowing dans le même bloc ??? Jamais vu ça jusqu'à présent.


Les variables ne sont pas déclarées dans le même bloc. Il y en a une qui est déclarée au niveau de la classe, et une dans le constructeur.
 

Code :
  1. static int elmuchacho;
  2. class Boo {
  3.   int elmuchacho;
  4.   Boo() {
  5.      ::elmuchacho = 1;
  6.      elmuchacho = 2;
  7.      int elmuchacho = 3;
  8.   }
  9. };


n°882798
chrisbk
-
Posté le 26-10-2004 à 09:07:51  profilanswer
 

el muchacho a écrit :

alors pour moi, c'est simple, si ton but est d'apprendre à coder à peu près correctement, tu viens ici et t'essayes de comprendre ce qui t'y est dit.  


Citation :


10mg de tartrate de zolpidem


 
c'est sur que ca va l'aider [:joce]


---------------
NP: HTTP Error 764 Stupid coder found
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Jeu du ver

 

Sujets relatifs
Cherche programmeur pour jeu de stratégie 3D temps réelCollision entre deux images pour un jeu ...
Integrer une zone d'animation (video,flash..)dans un ptit jeu en C++ ?BuzzLand : Jeu en ligne cherche repreneur
Réseau : synchronisation dans un jeuJeu en PHP > Cherche Beta Testeurs
Cacher les fichiers images,gfx,sons utilisés dans une appli (un jeu)?delimitation de zone dans un jeu
[Design] Jeu Video[MySQL] Organisation des tables pour un jeu
Plus de sujets relatifs à : Jeu du ver


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR