Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Puissance K - tre
The K le 16/03/2012 à 21:19
Bonjour à tous, progr-amateurs
ça faisait un moment que je n'étais pas venu, et comme vous le voyez je ne sais toujours pas faire un c cédille majuscule ! (si qqun peut m'aider ^^')
Mais bref. Je suis en train de programmer depuis 4 mois (booooon, trèèès lentement !) un puissance 4.
Et comme on est dans la rubrique aide, j'aurais pas directement besoin d'aide (logique non ?). Mais plus globalement d'avis ou de conseils.
Ma première question sert plus à introduire le sujet : quelles sont les dimensions d'une grille de puissance 4 ? (oui j'ai pas fait beaucoup de puissance 4 sur le gros plateau bleu quand j'étais petit

)
Vala, merci beaucoup ^^
sandro le 16/03/2012 à 21:29
Salut,
la taille d'une grille de puissance 4 est de 7*6 (7 de large et 6 de haut).
Sinon, pour le Ç , tu entre Charmap dans Executer (dans le menu démarer) puis tu clique sur le Ç (7ème ligne si tu choisit la police arial) puis Sélectionner puis "Copier" puis tu colle où tu le veux. Sinon tu apuis sur Alt (pas Alt Gr) puis, sans le lacher, tu tape 0199 puis tu lacher.
Sandrolinkakro le 16/03/2012 à 21:51
J'ai vu passer plusieurs puissance 4 depuis que je suis ici alors je peux t'assurer que tu trouveras autant d'exemples que nécessaire.
Et bien sûr je suis disponible pour me creuser les méninges.

Bonne chance !
( Tiens ? Normalement le code ascii de Ç est 128 ? Alors pourquoi 0199 donne-t-il Ç ? )
(Charmap powaa !!!)
The K le 16/03/2012 à 22:55
7 x 6 ? Eh ben j'ai eu raison de demander j'avais commencé à programmer sur une matrice de 7 x 8 x')
Ça marche merci Sandro ♥
Bien maintenant passons au choses concrètes ... en fait désolé mais j'évite de regarder toute autre source de programme. N'ayant que peu de créativité (y compris pour les programmes) je serai capable de tout recopier sans le vouloir un programme que je ne regarderai que 5 minutes
Donc j'étais parti sur une matrice de 7 x 8 (enfin ... 6 ^^') qui correspondait a la grille. Les cases de la matrice se remplissent avec des 1 ou 2 suivant le joueur. Afin que les "jetons" tombent bien en bas et que deux ne se superposent pas, je sauvegarde les positions verticales de chaque colonne dans une liste.
Qu'en pensez-vous ?
(si vous comprenez rien à mon charabia dites le x') )
ÇÇ ♥ ♥ ☺
sandro le 16/03/2012 à 22:59
perso, je te conseille plutôt 2 et 3 au lieux de 1 et 2 : si tu veux faire des tests en faisant des produits, ce sera peut-être plus simple (en tout cas, c'est pas plus compliqué, il faut just ajouter 1 au numéreau de joueur).
Après, à toi de voir selon si et/ou comment tu prévoit de tester la victoire.
Sandrolinkakro le 16/03/2012 à 23:09
Cette méthode est tout à fait jouable. Je l'ai d'ailleurs employée.
(il y a beaucoup de points communs entre morpion et puissance4)
(je ne voulais pas dire que tu devais consulter d'autres programmes, mais ceux-ci peuvent permettre de se débloquer)
Je ne suis pas d'accord avec ton affirmation sandro.
0,1,2 sont parfaits pour effectuer des tests en produit.
Le moindre zéro rend un alignement invalide. 0*?*?*?=0
Le résultat 1=1^4 n'est possible qu'avec le produit de quatres 1.
Le résultat 16=2^4 n'est possible qu'avec le produit de quatre 2.
On utilise A*B*C*D=J^4 pour les cases A,B,C,D et variable de joueur J.
La première difficulté est de choisir des tests à proximité de chaque pion joué ou un crible.
(Moi j'ai déjà opté pour la proximité.)sandro le 16/03/2012 à 23:28
c'est vrai, quand il n'y a que 0,1 et 2, ça va, par contre ça peut poser problème si tu veux une IA : dans ce cas, le 1 est bien pour vide , le 2 et 3 étant pour les joueurs : comme ça on détecte facilement le nombre de pièces déjà présente sur la ligne.
SandroThe K le 17/03/2012 à 10:58
Eh bien pour les conditions de victoire je comptais m'inspirer de mon morpion que j'ai déjà fait (hé ouais incapable de tout recréer x') ) avec une boucle for et des vérif' dans la matrice.
Mais pour l'IA euh ... on va laisser tomber je n'ai aucune idée comment en faire une

(mais vraiment aucune !)
linkakro le 17/03/2012 à 13:55
Le crible est probablement le plus simple, mais je présume quelques inconvénients de lenteur.
En tout cas je t'encourage, jusque là tu immagines des choses qui ont déjà fait leurs preuves.
Moi non plus je n'ai aucune idée de comment créer une IA.
sandro :
Détecter le nombre de cases remplies à partir de 1,2,3 n'est pas si facile.
Il faut prévoir 14 possibilités de produits, et on ne peut pas effectuer de tests d'inégalités car la table est irrégulière.
1*1*1*2=2
1*1*1*3=3
1*1*2*2=4
1*1*2*3=6
1*1*3*3=9 ///
1*2*2*2=8 ///
1*2*2*3=12
1*2*3*3=18
1*3*3*3=27 ///
2*2*2*2=16 ///
2*2*2*3=24
2*2*3*3=36
2*3*3*3=54
3*3*3*3=81
Je suis plutôt d'avis d'effectuer des opérations entre des tests, ce qui peut s'adapter aussi bien à la base 0,1,2 qu'à 1,2,3
Pour compter les cases remplies : (A=/=0)+(B=/=0)+...
Pour compter le nombre de 1 : (A=1)+(B=1)+...
Pour compter le nombre de 2 : (A=2)+(B=2)+...
Et pour tester des arrangements, c'est encore pire.
The K le 17/03/2012 à 21:53
Tiens, oui, si quelqu'un serait prêt à créer une IA pour mon puissance 4, je suis preneur
Ce serait une bonne idée (après, est-ce que qqun sur ce forum en est capable ... c'est tout de même assez compliqué non ?).
Je lui offrirais euh ... un gros smack ?

sandro le 17/03/2012 à 22:10
Le problème avec une IA, est d'abbord de connaitre le niveau qu'on veut qu'elle ait (plus elle est performante, plus c'est dur à faire).
Ensuite, il faut réussir à trouver les meilleurs manières de jouer (pour le puissance 4, on peut commencer par voir si l'IA peut gagner et sinon vérifier si tu peut gagner (eventuellement couplé à un risque "d'erreur d'inatention") et enffin si le mouvement qu'elle envisage te permet de gagner. La suite devient bien plus dure : comment programmer pour que l'IA évite les "pièges", ou qu'elle en crée?
SandroThe K le 17/03/2012 à 22:16
Ah ben oui dit comme ça c'est plus dur ^^'
Donc en gros une IA bien optimisée et tout ferait au minimum qqchose dans les 1500 octets, qui serait donc assez lente et qui ferait la moitié du programme.
J'en serai donc plus qu'à la moitié l'auteur ! J'crois que je vais faire sans au final
Bon ben du coup j'continue mon petit bout de chemin et je vous tiens au courant ... (actuellement y m'faut les conditions de victoires, faire une sorte de mode "compte à rebours" et peaufiner deux / trois détails ...)
The K le 18/03/2012 à 10:36
Eh ben en parlant de conditions de victoires ... j'y arrive pas

Et j'ai besoin de votre aide vraiment ce coup-ci
Donc on a la variable J qui détermine le joueur qui joue, à savoir J1 ou J2 ; la matrice [A], matrice de 6*7 qui répertorie les 1 ou 2 à l(intérieur (les cases jouées : je rappelle que le bas de la matrice est remplie avant le haut, c'est un puissance 4

), la variable V qui représente la ligne, et W la colonne.
Et avec tout ça j'arrive pas à vérifier toutes les combinaisons possibles, à savoir vertical horizontal en diagonale, sans que ça sorte de la matrice "DIM Invalide" et ... bref. HELP !
(micii ^^)
linkakro le 18/03/2012 à 13:10
J'ai deux solutions à te proposer.
La première est de regarder l'organisation des boucles de
ce programme
Les débuts et fins de boucles sont étudiés pour ne pas dépasser de la grille.
La seconde est d'effectuer des tests de validité des coordonnées qui empêchent les tests de cases de tomber dans le vide.
(de manière similaire à
ce programme sauf que toi tu veux tester toute la matrice)
Code
For
If coordonnées valides
Then
If alignement
Then
...
End
End
End
ps: j'ai fini par trouver ton morpion sur le forum
The K le 18/03/2012 à 15:22
Ah oui quand même ... eh bien je crois que tout considéré, je vais finir le puissance4 sans vérification, et je vais en rajouter une après, si j'en ai le temps et l'envie ^^'linkakro le 18/03/2012 à 15:59
Oublie mon programme qui diffère sur quelques aspects.
Ce qui est essentiel est la structure que j'ai décrite dans mon précédent message.
Elle est valable qu'on utilise une matrice ou des pixel-test, qu'on effectue un crible ou un test.
Je dis ça juste pour être clair car bien sûr tu peux choisir l'autre solution. Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.