Provient du message de
Hôte des Songes
Amis de l'informatique bonsoir
Bon voilà j'ai besoin d'un petit coup de main pour mon projet de cette année sous delphi 4, à savoir Othello
Le premier problème: j'ai créé ma grille de jeu en créant 64 shapes... sur chacune de ces shapes j'ai disposé une shape ronde représentant un pion (qui sera soit visible soit invisible selon l'avancement du jeu)Comment transformer ces shapes en coordonnées verticales et horizontales, de (1,1), (1,2)... à (8,8)?
Deuximème problème: ensuite, au passage de la souris au dessus d'une case, le curseur est sensé changer d'apparence selon que la case est jouable ou non... doit-on étudier
pour chaque case (x,x) du plateau les coordonnées des pions se trouvant sur les lignes diagonale, horizontale et verticale dont fait partie la case (x,x)? ou existe t-il une procédure marchant pour toutes les cases?
Merci d'avance
Que je sois sûr de bien comprendre :
1) Tu as 64 éléments, numérotés de 1 à 64, et tu voudrais, à partir d'un indice (variant entre 1 et 64, donc), calculer la ligne et la colonne correspondante ?
2) Toujours à partir d'un indice entre 1 et 64 (ou tes coordonnées 8/8), tu voudrais la formule des diagonales, de la ligne et de la colonne qui passe par cette case ?
Question 1, facile, pour un indice i, ta ligne, c'est i/8 (partie entière), et la colonne i modulo 8 (ou l'inverse, mais c'est moins courant...)
Question 2 :
a) Il est largement préférable de créer un tableau à la fin de chaque coup, tout simplement parce que tu n'as pas à tout recalculer à chaque fois que tu bouges la souris.
b) Même si tu tiens à calculer à la volée, je vois pas l'intérêt de savoir la diagonale, la ligne et la colonne. Pour chacune des 8 directions, tu regardes s'il y a un pion adverse. Si oui, tu continues dans la même direction, jusqu'à ce que tu trouves un pion de ta couleur. Si oui, la case est jouable. Tous les autres possibilités (bord trouvé, pas de pion adverse sur la case adjacente, etc.) rendent la case non jouable.
Au passage, petit conseil : tu éviteras pas mal de problèmes et une trop grande complexité du code en déclarant non pas 64 cases, mais 100 : ton plateau sera entouré par des cases "sentinelles", qui te serviront de condition d'arrêt (plutôt que de vérifier que tes coordonnées sont toujours dans les limites du plateau).