Reversi |
Auteur |
Message |
Gui958
Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 26 Mai 2007, 23:15
|
Posté le : Jeu 21 Jui 2007, 13:35
|
|
|
Bonjour la communauté, je me demandais si quelqu'un serai capable de faire un reversi!
Je vois deja comment on peut le faire en rentrant les coordonnées dans une matrice !
Puis apres je ne sais pas comment faire pour maitre un pion au bon endroit c'est a dire en face de l'un de ces pions pour continuer!
Oué je sais je suis pas clair 
---------------------- Longue vie a la Programmation !! |
 |
|
|
coc5
Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
|
Posté le : Jeu 21 Jui 2007, 13:55
|
|
|
(On dit "mettre un pion" et pas "maître un pion")
C'est faisable.
Par exemple on peut construire un terrain (de la même manière dont j'ai fais mon démnieur d'ailleurs). On choisis la case ou on met le point etc...
Pour ta question, je pense qu'on peut faire qu'après la validation du posage de pion une identification des alentoures. Avec la position du piont en (B,A), 1 la présence d'un point à soi et 2 la présence d'un pion adverse.
Code | Getkey->K
If K=105:Then
For(I,-1,1
For(J,-1,1
J->H:I->L
Lbl 5
If (I or J) and [A](B+J,A+I)=2:Then
2I->I:2J->J
Goto 5
End
If[A](B+J,A+I)=1:Then
For(V,H,J
For(W,L,I
1->[A](V,W
End:End:End
End:End
|
Ou quelque chose comme ça 
---------------------- Ne cliquez pas ici ! |
 |
|
|
Gui958
Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 26 Mai 2007, 23:15
|
Posté le : Jeu 21 Jui 2007, 14:27
|
|
|
Hum a vrai dire j'ai pas trop compris mais je pense que sa va !
[ oué je sais je suis toujours pas clair ] 
---------------------- Longue vie a la Programmation !! |
 |
|
|
coc5
Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
|
Posté le : Jeu 21 Jui 2007, 14:43
|
|
|
Tu t'y connais en programmation ?
Explication:
Getkey->K
i]Mettre dans K la valeur de la touche appuyé (O si aucun signal)[/i]
If K=105:Then
Si tu appuies sur [Enter]For(I,-1,1 Pour I de -1 à 1
For(J,-1,1
Pour J de -1 à 1J->H:I->L H prend la
valeur de J et L prend la valeur de I
Lbl 5
Debut de boucle n°5
If (I or J) and [A](B+J,A+I)=2:Then
Si I ou J existe (n'est pas égal à O quoi, pour éviter qu'il fasse le travail sur l'endoirt ou tu pose le pion) et la case où tu as poser le pion -décalé de J cases en hauteur et I cases de coté- comprend un pion adverse.
2I->I:2J->J
Alors le décalage est doublé par rapport à la position de départ.
Goto 5
Et on revient Au début de la boucle avec le nouveau décalage.
End
Fin de la condition If
If[A](B+J,A+I)=1:Then
Si quand il n'y a plus de point adverse on tombe sur un point à soi.
For(V,H,J
For(W,L,I
Alors pour [A](V,W) de la position du premier pion adverse identifié
autour du pion posé jusqu'au dernier pion adverse identifié,
1->[A](V,W
leur donner la valeur d'un pion à soi.
End:End:End
End:End Fin de tout^^
Tu comprends mieux maintenant ?
---------------------- Ne cliquez pas ici ! |
 |
|
|
Gui958
Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 26 Mai 2007, 23:15
|
Posté le : Jeu 21 Jui 2007, 14:56
|
|
|
nan nan c'etait bon mais je savais pas comment l'integrer dans mon programme, c'est pour sa !
---------------------- Longue vie a la Programmation !! |
 |
|
|
coc5
Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
|
Posté le : Jeu 21 Jui 2007, 18:15
|
|
|
Faut l'intégrer au moment où tu appuies sur enter pour mettre ton pion 
---------------------- Ne cliquez pas ici ! |
 |
|
|
Gui958
Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 26 Mai 2007, 23:15
|
Posté le : Jeu 21 Jui 2007, 19:13
|
|
|
Ok mais il est complet ?
Code | Getkey->K
If K=105:Then
For(I,-1,1
For(J,-1,1
J->H:I->L
Lbl 5
If (I or J) and [A](B+J,A+I)=2:Then
2I->I:2J->J
Goto 5
End
If[A](B+J,A+I)=1:Then
For(V,H,J
For(W,L,I
1->[A](V,W
End:End:End
End:End |
Il fait aussi les diagonales ? Vers la droite puis vers la gauche ? Vers le haut puis vers le bas ?
---------------------- Longue vie a la Programmation !! |
 |
|
|
Stupid
Autorisation : Membre
Nb de messages : 768
Inscrit le : Jeu 28 Sep 2006, 18:42
|
Posté le : Jeu 21 Jui 2007, 19:16
|
|
|
il fait les diagonales mais n'affiche pas le pion ne gere pas le fait que tu pourrais etre au bout de l'écran et j'ai pas l'impression qu'il retourne tout les pions sur toute une ligne
|
 |
|
|
Gui958
Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 26 Mai 2007, 23:15
|
Posté le : Jeu 21 Jui 2007, 19:19
|
|
|
Enfet il verifi juste sur les lignes s'il y a deux fois le meme numero ?
---------------------- Longue vie a la Programmation !! |
 |
|
|
Google_AdSense
|
Publicité
|
|
|
|
|
Stupid
Autorisation : Membre
Nb de messages : 768
Inscrit le : Jeu 28 Sep 2006, 18:42
|
Posté le : Jeu 21 Jui 2007, 19:21
|
|
|
je crois que ça transforme que le piuon d'a coté
en fait il faut que tu geres
-la verification d'un pion sur la meme ligne ou colonne
-donc il faut gerer la position des pions par rapport au minimum et au maximum de la matrice
-qu'en consequence ça retourne tout les pions et ça change leurs valeurs
c'est faisable mais c'est chaud et j'ai la flemme de faire un truc complet
|
 |
|
|
Gui958
Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 26 Mai 2007, 23:15
|
Posté le : Jeu 21 Jui 2007, 19:25
|
|
|
Mdr je te comprends, sa fait plus d'une heure que je suis sur la conversion des pions ! 
---------------------- Longue vie a la Programmation !! |
 |
|
|
Stupid
Autorisation : Membre
Nb de messages : 768
Inscrit le : Jeu 28 Sep 2006, 18:42
|
Posté le : Jeu 21 Jui 2007, 19:27
|
|
|
si tu dit que le reversi fait 10 de longueur alors faut que tu fasses des boucles qui testent si sur 10-la position du pion y'ait un pion de la meme couleur et que sur la position du pion jusqu'à un ça fasse pareil.
|
 |
|
|
Gui958
Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 26 Mai 2007, 23:15
|
Posté le : Jeu 21 Jui 2007, 19:31
|
|
|
Le mien ne fait pas 10 sur 10 car 10/10 fait un rectangle sur l'ecran normal, alors j'ai pris 8/11 et ça a la forme d'un carré !
---------------------- Longue vie a la Programmation !! |
 |
|
|
Stupid
Autorisation : Membre
Nb de messages : 768
Inscrit le : Jeu 28 Sep 2006, 18:42
|
Posté le : Jeu 21 Jui 2007, 19:33
|
|
|
c'est que t'as pas les bonnes dimensions de la fenetre
et dans ce cas tu geres une fois le max c'est 11 et apre sle max c'est 8
|
 |
|
|
Gui958
Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 26 Mai 2007, 23:15
|
Posté le : Jeu 21 Jui 2007, 19:43
|
|
|
Oué c'est ce que je fais mais y'a une seul case qui marche correctement, tandis que les autres quand je veux mettre mon pion ça me met des pions un peu partout ! 
---------------------- Longue vie a la Programmation !! |
 |
|
|
Gui958
Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 26 Mai 2007, 23:15
|
Posté le : Jeu 21 Jui 2007, 21:57
|
|
|
y'a un truc que je comprends pas :
Code | For(S,X,7)
B+1->B
If [A](A,B)=1
Goto D
End
Goto 2
Lbl D
For(T,X,B)
1->[A](T,A)
End
Lbl 2 |
Sa devrai me mettre le pion au endroit indiqué mais nan sa m'en fou un de comme sa sur l'ecran et pas a l'endroit attendu !
Y'a un truc de faux dans la parti du programme ?
---------------------- Longue vie a la Programmation !! |
 |
|
|
coc5
Autorisation : Membre
Nb de messages : 891
Inscrit le : Sam 16 Jui 2007, 13:37
|
Posté le : Ven 22 Jui 2007, 10:01
|
|
|
> Par rapport à ce que je écris ça gère l'identification dans tous les sens tant qu'il en y a et le retournement des pions. Vous auriez lu mon explication (on dirait qu'elle est pas claire^^) vous auriez compris. La seule choses non prise en compte c'est si le pion est sur le coté du plateau. Mais dans ces genres de jeu je met toujours une colonne en plus et une ligne de chaque coté.
Mais sinon c'est facile tu met d'abord la condition
Code |
If A and B and A=/=11 and B=/=11:Then
[...]
End |
Donc pas besoin de ton truc au dessus il est trop compliqué pour un truc simple et ne remplit pas les conditions( Contrairement à ce que vous avez dis ce que j'ai écris gère tout (en dehors des limites mais bon ) même les diagonales...
---------------------- Ne cliquez pas ici ! |
 |
|
|
Sangohan38
Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
|
Posté le : Ven 22 Jui 2007, 14:42
|
|
|
Pour retourner une ligne, il faut à chaque pion placé regarder sur la ligne, sur la colonne, en diagonal et puis, selon l'emplacement du pion de la même ligne, on enlève un à sa coordonnée si c'est en horizontal ou en vertical et on fait une boucle qui change les nombres de la matrice pour que ça devienne la même couleur.
Il n'y as pas forcément besoin de matrice pour faire ce prog, une liste peut faire le même effet.
Sangohan38
|
 |
|
|
Gui958
Autorisation : Membre
Nb de messages : 31
Inscrit le : Sam 26 Mai 2007, 23:15
|
Posté le : Ven 22 Jui 2007, 15:43
|
|
|
Oui mais avec une matrice c'est plus simple 
---------------------- Longue vie a la Programmation !! |
 |
|
|
Sangohan38
Autorisation : Membre
Nb de messages : 3370
Inscrit le : Sam 31 Déc 2005, 19:48
|
Posté le : Ven 22 Jui 2007, 17:50
|
|
|
Plus simple? Je trouve pas.
Moi j'adore les liste et elle me le rendent bien.
Sangohan38
|
 |
|
|