Bubu a écrit :Bubu a écrit :C'est beaucoup moins fastidieux de faire des fonctions récursives en C et C++, qu'en Java.
En Java, les arguments de fonction (hors types primitifs. Pour les objets) sont passés par référence.
En C et C++, les arguments de fonction sont passés par valeur,
sauf pour les références (& en C++), ou pour les variables ciblées par des pointeurs ( * ) (Les pointeurs sont passés par valeur, mais pas les objets pointés)
Du coup en Java, il faut manuellement cloner les paramètres avant de les modifier et de les réinjecter dans la fonction récursive. C'est un peu pénible.
Je m'en sors avec mon programme de test de niveaux de notre jeu. Enfin ...

EDIT :
C'est pas fini.
L'analyse de la grille et des différentes possibilités fonctionne (j'ai la liste des coups correctement calculée) ..... mais pas les calculs des scores...
Pourtant c'est infiniment plus simple normalement.
Ça y est, c'est décidé : je vais manger mes doigts de pieds.
EDIT:
Bon c'est fini.
Enfin du moins la partie algorithmique, de détection des coups possibles.
Enfin, il y a des niveaux avec plus de 1000 possiblités. (Alors Virgule qui voulait des niveaux avec une unique solution mange des cailloux ....

).
Maintenant il faut filtrer les résultats.
N'afficher quelque chose que si nécessaire, quand il y a des erreurs.
Le problème :
C'est très lent (plusieurs heures). Je vais utiliser le multi-threading.
EDIT:
En fait, non, je ne vais pas utiliser le multi-threading. J'ai essayé mais ça déconne de partout.

Donc il faudra être patient !
Par contre je vais filtrer les résultats de manière "intelligente", seuls les cas d'erreurs seront affichés dans le rapport.
Screugneugneu de screugneugneu !

EDIT : je me suis trompé, en Java tout est passé par valeurs .... y compris les références des objets.
Mais ça ne change pas grand chose. Il faut voir les paramètres de méthode qui passent les objets Java, comme des pointeurs.
L'adresse est une copie, mais pas de l'objet pointé.
Au même titre, en C++ le pointeur est copié, (passé par valeur, mais juste l'adresse), mais l'objet pointé n'est pas concerné.
C'est un peu tordu, mais ça se tient très bien.
EDIT :
C'est en lien avec le sujet sur notre Jeu Sqwap, et le sujet juste pour geuler :
Virgule n'aime pas le filtrage des erreurs que je présente dans le logiciel de test.
Tantôt il voudrait une chose, tantôt son contraire ! Je vais le manger.
Après le principal n'est pas en question, il fonctionne. Mais tous les jours j'ai une version idéale par Virgule

.... sauf qu'elles se contredisent.
Je vais lui proposer une interface où il pourra n'afficher que ses requêtes, un peu comme dans une bdd SQL, mais il me court sur le haricot ce salopiaud !
Et puis sur le multi-tâche, c'est pas la peine, je ne fais que des conneries, que de la merde, cela ne marche pas du tout !
(On s'en fout, mais le backtracking me fournit toutes les solutions (indépendantes du genre ou de la "race"

). (Si la grille est vide à la fin, c'est fini, on arrête et on note le résultat). Il me faut en plus leur donner une sémantique. (Tu as cassé ta biscotte en la tartinant de beurre ? Oh malheur !)
Comme un bourrin, moi je récupère toutes les solutions qui engendrent une grille vide (c'est le but du jeu) à la chaîne.
Cette solution est moins pire que celle-là.
Cette solution est mauvaise car j'arrive au même résultat en moins de coups.
etc ...
