JEU DE DOMINO AVEC INTELLIGENCE ARTIFICIELLE (2 NIVEAU)

cs_SDan Messages postés 288 Date d'inscription dimanche 1 septembre 2002 Statut Membre Dernière intervention 13 juin 2008 - 20 juil. 2006 à 09:11
rami3b Messages postés 17 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 8 décembre 2008 - 7 août 2006 à 00:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38670-jeu-de-domino-avec-intelligence-artificielle-2-niveau

rami3b Messages postés 17 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 8 décembre 2008
7 août 2006 à 00:28
mon commentaire est a propos du jeu:belle réalisation
cs_yahaa Messages postés 15 Date d'inscription vendredi 17 septembre 2004 Statut Membre Dernière intervention 11 mai 2007
25 juil. 2006 à 17:35
Le jeu est bien fait, l'IA marche bien.
Cependant la structure du programme est très très lourde.
Pour l'accelerer, les modifications à faire sont très importante.
En fait, cadriller la zone de jeu avec des ImageBox est la cause principale. Il faudrait utiliser les propriétés de la PictureBox 'domino_board'.
- Tu détectes les déplacements de la souris avec MouseMove et tu calcule sur quelle case est la souris. Tu utilise domino_board.Line pour définir le carré.
- Lorsque l'utilisateur place sa pièce, tu utilise domino_board.PaintPicture

Pense à mettre la propriété AutoRedraw de domino_board à True

Il y a aussi plus simple :
- à la place de :
For k 1 To tile.Count - 1: tile(k).BorderStyle 0: Next
If tile(Index).Picture 0 Then tile(Index).BorderStyle 1
tu met :
if Index <> IndSel then
tile(IndSel).BorderStyle = 0
If tile(Index).Picture 0 Then tile(Index).BorderStyle 1
IndSel = Index
End If

( Il faut déclarer IndSel en global )
cs_SDan Messages postés 288 Date d'inscription dimanche 1 septembre 2002 Statut Membre Dernière intervention 13 juin 2008
20 juil. 2006 à 10:52
Je crois que la solution la plus simple pour moi car je suis débutant est de me procurer un module .dll car je l'ai vu pour pouvoir utiliser VB6 avec ma version

Merci à tous pour votre aide et à bientôt.
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009
20 juil. 2006 à 10:11
Salut SDan, aparament le round n'existe pas en VB5 donc il faudrait que tu le créé. Tu peux faire par exemple:

'La fonction round retourne le nombre arrondi
public fonction Round(Nombre as integer) as integer
'Si le dernier chiffre est 4 ou inférieur on arrondi à la valeur inférieur
if right(nombre, 1) <= 4 then
'Prend la premiere partie du nombre, sans le dernier chiffre et met 0
round = left(nombre, len(nombre)-1) & 0
'Sinon on arrondi a la valeur supérieur
else
'Idem qu'en haut mais on incrémente l'avant dernier chiffre de un
round = left(nombre, len(nombre)-2) & mid(nombre, len(nombre) - 2, 1) & 0
end if

Bon voila je sais pas si c'est très claire, sa va buger(quand on incrémente de 1 il faut prévoire quand c'est 9 etc...) et je ne sais pas si il y a les fonction left, right, mid et len en VB5, dans ce cas faudrait faire du VB6 sa marchera surement ;)
Teste la fonction si tu veux et dis si sa marche!

@+
DragonDo Messages postés 93 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 22 juillet 2006
20 juil. 2006 à 09:50
Salut,
La fonction Round n'existe pas en VB5. Tu peux la coder en utilisant la source de Julien39 à l'adresse: http://www.vbfrance.com/codes/ENCADREMENTS-APPROXIMATIONS_35216.aspx. (remplace le nom roundapp par round).
Regarde également à l'adresse : http://www.vbfrance.com/forum.v2.aspx?ID=671735&post=ok c'est intéressant.

Bon cod
cs_SDan Messages postés 288 Date d'inscription dimanche 1 septembre 2002 Statut Membre Dernière intervention 13 juin 2008
20 juil. 2006 à 09:11
Salut,

Je viens de télécharger ton jeu que je trouve intéressant mais en le testant, j'ai un petit problème, j'utilise la version 5.0 de VB et dans la procédure suivante :

Function Create_Map(Board As PictureBox, MX, MY)
Board.Width = Round(((MX * 480) / 480)) * 480
Board.Height = Round(((MY * 480) / 480)) * 480
X = Round((Board.Width / 480))
Y = Round((Board.Height / 480))
For i = 1 To X * Y
Load tile(i)
Board_Tile(i) = 0
If i <= X Then
tile(i).Left = (i * 480) - 480
tile(i).Top = 0
Else
tile(i).Left = tile(i - X).Left
tile(i).Top = tile(i - X).Top + 480
End If
tile(i).Visible = True
Next
Reset_Board
End Function

Dans la procédur suivante, le round me pose problème, Board.Width = Round(((MX * 480) / 480)) * 480 car il me dit dans la boîte de dialogue la phrase suivante :

Erreur de compilation
Procedure Sub ou Function non définie

Que dois-je faire ou par quoi puis-je remplacer le round?

Merci d'avance.
Rejoignez-nous