Jeu du ver - C++ - Programmation
Marsh Posté le 22-10-2004 à 22:25:15
C'est quoi cette horreur ?
Marsh Posté le 22-10-2004 à 22:33:27
Tu veux nous tuer notre Kadreg, hein !
(Mollo sur le stillrox, kad)
Et puis change de cat, si Taz te voit t'es mort.
Marsh Posté le 22-10-2004 à 22:35:30
verdoux a écrit : (Mollo sur le stillrox, kad) |
c'est stilnox
Marsh Posté le 22-10-2004 à 22:38:23
verdoux a écrit : Ca titre à combien, 60° ? |
10mg de tartrate de zolpidem
Marsh Posté le 22-10-2004 à 22:39:50
Bon merci quand même j'irai demander sur un autre forum
Bonne soirée
Marsh Posté le 22-10-2004 à 22:47:42
Marsh Posté le 23-10-2004 à 18:34:01
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...
Marsh Posté le 25-10-2004 à 11:07:55
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 !
Marsh Posté le 25-10-2004 à 11:30:03
kadreg a écrit : 10mg de tartrate de zolpidem |
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
Marsh Posté le 25-10-2004 à 11:32:05
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
Marsh Posté le 25-10-2004 à 11:37:08
Shaman LizardKing a écrit : Excuse moi.... mais j'ai eu la réponse sur le forum de developpez.com |
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 : |
Citation : |
delete[] c'est magique
Marsh Posté le 25-10-2004 à 12:33:11
cris56 a écrit : delete[] c'est magique |
Ah mais le compilateur est magique :
comme la variable s'appelle "cube", il sait qu'il faut faire les delete des lignes à l'intérieur du cube
En tout cas, ça confirme une fois de plus que le java n'aide pas à coder proprement.
Marsh Posté le 25-10-2004 à 12:55:17
Code :
|
ca ca pourrait ce faire en 3 for...
Marsh Posté le 25-10-2004 à 13:38:26
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 ?
Marsh Posté le 25-10-2004 à 14:59:16
sircam a écrit : Mais qu'est-ce que tu racontes ? |
On parle du "delete[] cube" pour ceux qui n'ont pas suivi
Marsh Posté le 25-10-2004 à 17:06:29
Smaragdus a écrit : On parle du "delete[] cube" pour ceux qui n'ont pas suivi |
Et qu'est-ce que Java vient faire là-dedans, hein ? Je ne vois pas en quoi Java n'aide pas à coder proprement.
Marsh Posté le 25-10-2004 à 17:15:42
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.
Marsh Posté le 25-10-2004 à 17:15:45
peut etre que Smaragdus veut dire que Java n'aide pas à coder proprement en c++
ce qui est forcement vrai ?
Marsh Posté le 25-10-2004 à 17:17:22
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 : |
bah pour la desalloc, oui. Apres, bon, c'est a voir
Marsh Posté le 25-10-2004 à 18:05:12
+1 chrisbk, c'est comme ça que je l'entendais
Marsh Posté le 25-10-2004 à 23:08:47
Shaman LizardKing a écrit : Excuse moi.... mais j'ai eu la réponse sur le forum de developpez.com |
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.
Marsh Posté le 25-10-2004 à 23:10:39
chrisbk a écrit : y'a pas a s'etonner, ca s'apelle du shadowing de variable et c'est autorisé (youpi) |
Du shadowing dans le même bloc ??? Jamais vu ça jusqu'à présent.
Marsh Posté le 26-10-2004 à 09:04:11
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 :
|
Marsh Posté le 26-10-2004 à 09:07:51
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 : |
c'est sur que ca va l'aider
Marsh Posté le 22-10-2004 à 22:22:14
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
//---------------------------------------------------------------------------
#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