Conditions ou récursivité? [Résolu]

Signaler
Messages postés
180
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
25 juin 2017
-
Messages postés
180
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
25 juin 2017
-
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

Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
30
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!
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
30
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.+
Messages postés
180
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
25 juin 2017
3
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
Messages postés
180
Date d'inscription
samedi 22 novembre 2003
Statut
Membre
Dernière intervention
25 juin 2017
3
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