Conditions ou récursivité?

Résolu
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 - 25 juil. 2010 à 14:46
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 - 25 juil. 2010 à 18:27
Bonjour à tous,
J'ai une toute petite question mais il faut d'abord que je vous explique mon cas, c'est ça qui risque d'être long!!!

En fait je développe un morpion (10 cases sur 10) ou pour gagné il faut aligner 5 croix ou ronds. Mes cases sont des boutons (dynamiques) que je mets dans un tableau à 2 dimensions "case". Une dimension pour les ligne "i" et une autre pour les colonnes "j".

Mes conditions de victoires disent que:

pour chaque ligne
{
et pour chaque colonne
{
//horizontale
si case[i, j]=case[i, (j+1)]=case[i, (j+2)]=case[i, (j+3)]=case[i, (j+4)] alors gagné

//verticale
si case[i, j]=case[(i+1), j]=case[(i+2), j]=case[(i+3), j]=case[(i+4), j] alors gagné
...
}
}

Bref, il y a en tout 4 grandes conditions à étudier pour chacune des 100 cases (horizontale, verticale, diagonale descendant vers la droite et vers la gauche).

Le problème est que ça rame!!! Ça marche très bien mais c'est long!!! (1 bonne seconde à chaque fois).
Je me suis donc intéressé à la récursivité parce que j'ai entendu dire que c'était "LA" Solution (avec un grand S) mais au final j'aurais le même traitement, par boucle.

D’où ma question (enfin!) est-ce que ça vaut vraiment le coup de remplacer une grande condition par une boucle? Est-ce que je vais vraiment gagner du temps?

Voilà j'espère que vous comprendrez mon problème et que vous pourrez m'aider à le résoudre!

A bientôt.
moi

4 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
25 juil. 2010 à 16:04
Bonjour
en effet quelque soit la methode d'implementation, si tu fais des boucles ça prend un peu de temps.

par contre tu peux sans doute faire autrement et n'évaluer que les cases autour de celle qui vient d'être cliquée.
ça limite fortement le nombre de tests.

Bob
C# is amazing, enjoy it!
3
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
25 juil. 2010 à 17:20
De rien

à ta place, j'utiliserais des totaux pndérés de colonnes et de lignes
puis avec un masque de bit, je testerais l'existance d'une suite de x bits concecutifs.
cela devrait être quasi immédiat, même si la grille est plus grande, et le nombre de cases gagnantes consécutif plus élévé.
mais chacun sa voie...

Bob.

+l'important ce n'est pas le but, mais le chemin.+
3
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 3
25 juil. 2010 à 17:06
Salut,
J'ai envie de dire bon sang, mais c'est bien sûr! Je n'y avais pas pensé...
Et bien je vais essayer ça! Je te remercie.

moi
0
moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 3
25 juil. 2010 à 18:27
Salut,
et bien ça par contre je n'y avais pas pensé!!!
C'est le principe des ECC (dans les barrettes de mémoire).

Sinon le fait de tester uniquement les cases autour de celles sur laquelle je clique marche nickel.

Mais je vais essayer "pour le fun" les totaux pondérés... C'est toujours intéressant de connaître
plusieurs chemin, même pour atteindre le même but! Quoi qu'après réflexion, pour les diagonales ça ne fonctionnera pas...

Enfin bref, tout ça pour te dire merci de m'avoir accorder un peu de ton temps!
moi
0
Rejoignez-nous