DEMINEUR

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 27 nov. 2004 à 23:24
DIRT_FIRE Messages postés 7 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 3 février 2006 - 28 nov. 2004 à 15:40
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/27867-demineur

DIRT_FIRE Messages postés 7 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 3 février 2006
28 nov. 2004 à 15:40
Ouai Kirua, je sais que j'aurais pu le faire avec des For sauve quand j'ai commencer a programmer ce jeux j'etait pas full bon pis je connaiser pas sa des for et des structure pi sa vaut pas la peine il trop plate si je le refait sa va etre en graphique.

En tu cas merci quand meme.

DIRT_FIRE
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
28 nov. 2004 à 14:21
wow, alors... mince, comment as-tu eu la patience de coder ttes ces if sans chercher une solution plus élégante ?? c'est pas des maths très poussées. euhm, au passage, juste un truc pt de vue syntaxe alors:

switch(variable)
{
case valeur1:
instructions;
break;
case valeur2:
instructions;
break;
case valeur3:
instructions;
break;
default:
instructions;
};


qu'est-ce que ça veut dire? si tu veux faire une discussion sur une certaine variable, tu utilises une switch qui va effectuer des instructions différentes selon que cette variable a telle ou telle autre valeur. les break sont importants pour délimiter les blocs d'instructions associés à chaque case (chaque cas).

voici une page de référence qui te permettra de mieux comprendre: http://glinfrench.apinc.org/article.php3?id_article=20 (vers le milieu de la page)


Autre chose, à propos de la simplification justement...
Par exemple, ce bloc-ci:

if(casse == t3[0])
{
t3[0] = 0;
}

if(casse == t3[1])
{
t3[1] = 0;
}

if(casse == t3[2])
{
t3[2] = 0;
}

if(casse == t3[3])
{
t3[3] = 0;
}

if(casse == t3[4])
{
t3[4] = 0;
}

if(casse == t3[5])
{
t3[5] = 0;
}

if(casse == t3[6])
{
t3[6] = 0;
}

if(casse == t3[7])
{
t3[7] = 0;
}

if(casse == t3[8])
{
t3[8] = 0;
}

if(casse == t3[9])
{
t3[9] = 66;
}

if(casse == t3[10])
{
t3[10] = 66;
}

if(casse == t3[11])
{
t3[11] = 66;
}

if(casse == t3[12])
{
t3[12] = 66;
}

if(casse == t2[13])
{
t3[13] = 66;
}

if(casse == t3[14])
{
t3[14] = 66;
}

if(casse == t3[15])
{
t3[15] = 66;
}

if(casse == t3[16])
{
t3[16] = 66;
}

if(casse == t3[17])
{
t3[17] = 66;
}

if(casse == t3[18])
{
t3[18] = 66;
}

if(casse == t3[19])
{
t3[19] = 66;
}

if(casse == t3[20])
{
t3[20] = 66;
}

if(casse == t3[21])
{
t3[21] = 66;
}

if(casse == t3[22])
{
t3[22] = 66;
}

if(casse == t3[23])
{
t3[23] = 66;
}

if(casse == t3[24])
{
t3[24] = 66;
}

if(casse == t3[25])
{
t3[25] = 66;
}

if(casse == t3[26])
{
t3[26] = 66;
}

if(casse == t3[27])
{
t3[27] = 66;
}

if(casse == t3[28])
{
t3[28] = 66;
}

if(casse == t3[29])
{
t3[29] = 66;
}

if(casse == t3[30])
{
t3[30] = 66;
}

if(casse == t3[31])
{
t3[31] = 66;
}

if(casse == t3[32])
{
t3[32] = 66;
}

if(casse == t3[33])
{
t3[33] = 66;
}

if(casse == t3[34])
{
t3[34] = 66;
}

if(casse == t3[35])
{
t3[35] = 66;
}

peut se réécrire (en plus rapide en plus parce que tu aurais du mettre des else if, mais tant pis) comme ceci:

for(int i = 0; i <= 35; i++)
{
if(Casse == t3[i])
{
t3[i] = (i >= 9) ? 66 : 0 ;
break;
}
}


et voilà, tu as tout condensé... renseigne-toi sur la structure (condition) ? valeur vraie : valeur fausse;

l'extrait du cours de cette adresse http://ireswww.in2p3.fr/ires/recherche/dzero/cours_dea_2003_Intro_C++_OO_.html:

L'opérateur ternaire d'évaluation conditionnelle ?: est le seul opérateur qui demande 3 paramètres (à part l'opérateur fonctionnel () des fonctions, qui admet n paramètres, et que l'on décrira plus tard).

Cet opérateur permet de réaliser un test sur une condition et de calculer une expression ou une autre selon le résultat de ce test.

La syntaxe de cet opérateur est la suivante :


test ? expression1 : expression2


Dans cette syntaxe, test est évalué en premier. Son résultat doit être booléen ou entier. Si test est vrai (ou si sa valeur est non nulle), expression1 est calculée et sa valeur est renvoyée. Sinon, c'est la valeur de expression2 qui est renvoyée.

Par exemple, l'expression :


Min=(i<j)?i:j;


calcule le minimum de i et de j.


L'opérateur virgule, quant à lui, permet d'évaluer plusieurs expressions successivement et de renvoyer la valeur de la dernière expression.

La syntaxe de cet opérateur est la suivante :


expression1,expression2[,expression3[...]] où expression1, expression2, etc. sont les expressions à évaluer.


//--------------

bon, il faudrait que tu condenses toutes tes batteries de if, ça devrait pas mal raccourcir, et puis faut vraiment étudier les boucles hein :) tu verras, ça te permettra de bcp progresser. autre chose: tes déclarations du début ou tu écris 1, 2, 3, 4, 5, 6, .... ça aussi tu peux les réécrir sous forme de boucle, c'est plus élégant et plus lisible.

j'ai pas envie de bcp m'attarder sur le code, mais prends conscience que la programmation, ce n'est pas faire du copier coller ;)

bonne continuation en tout cas, si tu as eu la patience de faire ça, tu auras aussi la paitence de faire tes premiers débuggages sérieux jusqu'au bout (waah, 8h sur le même problème, ça n'arrive pas qu'une fois ^^)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
27 nov. 2004 à 23:24
oulala Y a pas plus simple pour un démineur mode console ???
Rejoignez-nous