1

J'ai un prob avec un puissance 4 que je suis en train de faire(sur ti 92+) : le prog est tres long lorsqu'il doit verifie si un joueur a aligné 4 pions. La partie du prog chargé de cela est :

For y,1,4
For x,1,4
If (p[y,x]=p[y+1,x] and p[y+1,x]=p[y+2,x] and p[y+2,x]=p[y+3,x] or p[y,x]=p[y,x+1] and p[y,x+1]=p[y,x+2] and p[y,x+2]=p[y,x+3]) and p[y,x]0
Text "win"
EndFor
EndFor

ps : cette partie ne verifie pas toute la grille, ni en diagonal, mais le prog est deja lent alors......
je voudrais savoir si une simplification est possible pour rendre le prog + rapide

Merci d'avance

2

Pourquoi est-ce que tu veux vérifier toute la grille ? Après avoir posé un pion, il n'y a que celui-ci qui est succeptible de former une rangée de 4, ça diminue déjà considérablement le nombre de tests à effectuer.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

3

j'avais pensé à verifier que les cases adjacentes au dernier pion en place, mais je rencontre des prob lorsque le pion est mis dans les colonnes 1,2 et 6,7 car il y a une erreur de dimension

4

faut faire un tableau en mémoire pour représenter la grille qui est plus grand que la vrai grille. dans les cases sur les bords tu mets une valeur qui veut dire dehors comme ca ton algo sait qd il sors de la grille mais ne plante pas.

5

Soit ça, soit comme les copies de matrices sont très lentes, tu te contente d'arrêter les tests avant de sortir du tableau. T'as les coordonnées X et Y du pion que tu viens d'ajouter, donc ça devrait pas poser de problème.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

je trouve la 1ere solution plutot bien, je comprends pa trop la deuxieme.

7

Bah la deuxième ça consiste simplement à tester où t'en es dans la matrice pour éviter de sortir neutral
Elle a l'avantage d'être plus rapide puisqu'une copie de matrice ça va être très long en basic...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

8

ok
merci pour cette aide

9

la solution 1 est tres bien expliquer sur le site de f.leiber

10

c koi l'adresse?

11

http://leiber.free.fr

Vertyos>avec Vertel3, ça devrait être un peu plus rapide.
avatar
Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.

12

Un peu oui, mais tant qu'à utiliser cette méthode alors le mieux est de s'affranchir totalement des matrices du TiOS qui sont définitivement bien trop lentes pour ce genre d'operations.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

13

je suis aller sur le site, et la seule rubrique qui concerné mon prob était celle sur puissance 4 (dans la page d'othello). Je trouve pas que ca repondait aussi bien a mon problème...

14

15

c de cette page que je parlais......
le fonctionnement est comparable, mais il parle tout de meme de visual basic.

16

Tu comptais trouver le code tout pret à être recopié ? neutral
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

17

et ?
un algo que ce soit en vb, en C ou en caml c'est le même ...

18

la page du site traite de l'ia du programme : soit savoir quel coup sera le meilleur. Moi c'est juste savoir si 4 pions ont été alignés. Mon prog ne refléchi pas aux coups possibles mais si le dernier pion en place offre la victoire.

ps : je ne comptais pas trouver le code tout pret a etre recopié ou sinon je l'aurais demandé de suite...

19

Bah tu fais 8 ch'tites boucles dans chaque direction.

On regarde la couleur du joueur.
On regarde (par exemple) en haut à gauche.
Le pion en haut à gauche est-il de la même couleur ? Oui, on continue et on augmente de 1 une valeur repère qui compte le nombre de pions de la même couleur dans la diagonale de haut à gauche jusqu'au bas à droite, non, on fait ensuite vers le haut et on prend une uatre valeur repère qui s'occupe de la direction verticale cette fois-ci.

Une fois les tests effectués, une des 4 valeur repères (correspondant à chaque direction) est-elle supérieure ou égale à 4 ? Oui ? Bah le jeu se termine et on affiche la phrase en fonction de celui qui a joué.

20

ca risque d'etre lent ......,non

21

non, pas du tous, au pire, une 15-aines de test
avatar
Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.

22

les 8 boucles ne sont peut-etre pas indispensables, 4 suffisent : une boucle peut regarder de chaque coté du pion(jusqu'au 4°). Donc 1 boucle pour la diagonale haut-gauche-bas-droite, 1 pour la digonale bas-gauche-haut-droite, une pour la verticale, et une pour l'horizontal(ici, il suffit de regarder que le bas, vu que les cases du dessus ne peuvent etre remplies).

ca pourrait donner pour la digonale haut-gauche-bas-droite :
1->gagne
For z,1,3
if p[l-z,c-z]=u or p[l+z,c+z]=u
gagne+1->gagne
endfor
if gagne> ou =4
text "Win3.........


23

Hu, c'est vrai, mais tu as un peu faux :] En effet si la case qui se trouve juste au-dessus du pion ne sera jamais remplie, il en va tout autrement pour la case en haut à gauche ou en haut à droite ; par exemple, tu déposes un pion à côté d'une colonne bien bourrée d'autres pions...

De plus, évite le plus possible les for, c'est assez lent d'exécution.

24

si je depose un pion a coté d'une colonne pleine, seules les pions de la colonne qui se trouveront dans la diagonale de mon pion peuvent me permettre de gagner, il seront alors "analyser" par une des 2 boucles chargé des diagonales, non?

25

Bah ui, elles seront analysées les diagonales car ce sera indiqué dans le prog !

26

alors pas de prob avec les pions situés au dessus

27

Bah pas de problème avec les pions situés au-dessus par la diagonale. De toutes façons pour chaque case de ton puissance 4 il y a trois possibilités, blanc, noir ou vide.

28

par contre j'ai un autre prob, le prog ne reconnait la victoire qu'au coup suivant
ex : si le dernier pion que je met permet de gagner (alignement de 4 pions), la procedure de victoire ne s'enclenche qu'apres que le joueur adverse ait joué. Je vois pas trop d'ou ca vient

29

C'est ton prog qui est mal fichu tongue
Il faudrait organiser comme ça :

Loop

[Si Joueur 1 joue] alors
gnagnagnagnagnagnagna

[Si Joueur 2 joue] alors
gnagnagnagnagnagnagna

Test du pion

Endloop

30

ok, c'est ce que je vais faire.
Merci bcp
smile