Videos streaming images jeux et buzz
Connexion






Perdu le mot de passe ?

Inscrivez-vous maintenant !
Menu Principal
Communauté




Nwc-Vincent2
Eat the dots
 2  #1
J'aime glander ici
Inscrit: 22/05/2011 16:21
Post(s): 5371
Karma: 155
Eat the dots est un jeu assez simple où vous devez collecter les points de couleur le plus rapidement possible en se déplaçant avec les touches directionnelles, 60 secondes dans le mode classique et le mode extrême commence avec un timer de 5 secondes qui se réduit de plus en plus. J'ai fait respectivement 69 et 114 au premier essai, à vous de jouer

ipfs QmU4Tdt6tvUZJMXVy14GF92Sqk9FpvXT8xeSWjpM6AfUXM

Eat the dots

Contribution le : 21/10/2017 03:03
Signaler

PIume
 0  #2
Je masterise !
Inscrit: 07/01/2011 18:59
Post(s): 4476
Karma: 1017
56 et 88

Contribution le : 21/10/2017 03:35
Signaler

 0  #3
Fantôme
68 et 69

Contribution le : 21/10/2017 18:26
Signaler

365wanda
 0  #4
J'aime glander ici
Inscrit: 04/01/2006 18:09
Post(s): 6884
Karma: 4434
57 extrème, 65 facile.

Contribution le : 22/10/2017 11:51
Signaler

 0  #5
Fantôme
61 et 62, visiblement j'ai perdu 7 unités de puissance

Contribution le : 22/10/2017 12:34
Signaler

 0  #6
Fantôme
72

Contribution le : 22/10/2017 13:02
Signaler

Achilles
 0  #7
Je m'installe
Inscrit: 15/04/2010 15:04
Post(s): 469
114 en extrême, 76 en facile

Edit : 129 et 93 !

Contribution le : 22/10/2017 13:11
Signaler

lvishd
 2  #8
Je poste trop
Inscrit: 28/11/2010 19:49
Post(s): 12664
Karma: 5543
Bon...

Je voulais venir craner en disant que vous êtes tous des m*rdes et que le bot que j'ai fait en deux coups trois mouvements vous met tous en PLS mais c'est raté
Il s'avère qu'à chaque tour mon algorithme met environ 600ms pour faire le calcul des mouvements. Ensuite, il faut ajouter 93ms pour chaque mouvement donc au final on ne gagne pas grand chose

Je vous mets quand-même les stats du bot (échantillon de taille 8):
Mode normal: 62 58 60 64 62 58 60 64
Mode extrême: 77 70 77 87 70 71 78 72

Soit une moyenne de 61 en normal et 75 en extrême (même moi je fais mieux )


Je mets le code pour les curieux ou celui qui voudra s'en inspirer pour le rendre plus rapide parce que là je l'ai fait en 5 minutes pour déconner^^

#include <MsgBoxConstants.au3>

Global $prg_name = "eat_the_dots_bot"

;-------------------------------------------------------------------------
TrayTip($prg_name, "Running", 1, 1)
MsgBox(64,$prg_name,"Press <Esc> to stop the program")
HotKeySet("{ESC}", "_Terminate")
Func _Terminate()
	TrayTip($prg_name, "Closed", 5, 1)
	Sleep(2000)
    Exit
 EndFunc
;-------------------------------------------------------------------------


Global $coord_x[5] = [140, 240, 340, 444, 545]
Global $coord_y[5] = [215, 315, 418, 517, 620]

Global $white_x = 2
Global $white_y = 2
Global $blue_x = 0
Global $blue_y = 0

Global $BLUE = "2979FF"
Global $RED = "F44336"

Global $iSleep = 93

Func up_key($n)
   for $i=1 To $n Step 1
	  Send("{UP}")
	  Sleep($iSleep)
   Next
   EndFunc

Func down_key($n)
   for $i=1 To $n Step 1
	  Send("{DOWN}")
	  Sleep($iSleep)
   Next
   EndFunc

Func left_key($n)
   for $i=1 To $n Step 1
	  Send("{LEFT}")
	  Sleep($iSleep)
   Next
   EndFunc

Func right_key($n)
   for $i=1 To $n Step 1
	  Send("{RIGHT}")
	  Sleep($iSleep)
   Next
   EndFunc


Sleep(2000)

while 1
   for $i=0 To 4 Step 1
	  for $j=0 To 4 Step 1

		 If Hex(PixelGetColor($coord_x[$i], $coord_y[$j]), 6) == $BLUE Then
			$blue_x = $i
			$blue_y = $j
			ExitLoop (2)
		 EndIf

	  Next
   Next

   If $white_x < $blue_x Then
	  right_key($blue_x - $white_x)
   ElseIf $white_x > $blue_x Then
	  left_key($white_x - $blue_x)
   EndIf

   If $white_y < $blue_y Then
	  down_key($blue_y - $white_y)
   ElseIf $white_y > $blue_y Then
	  up_key($white_y - $blue_y)
   EndIf

   $white_x = $blue_x
   $white_y = $blue_y
WEnd



EDIT @CrazyCow: Je le fais tourner avec AutoIt mais ya moyen d'en faire une version sous python/C/java, j'ai pris AutoIt d'après mon humeur^^

Contribution le : 22/10/2017 15:28
Signaler

4Liberty
 0  #9
Je m'installe
Inscrit: 27/01/2015 21:01
Post(s): 455
117 en extrême

Contribution le : 22/10/2017 15:36
Signaler

FefefeuJejejeu
 1  #10
Je suis accro
Inscrit: 18/03/2016 21:26
Post(s): 1441
Karma: 1030
Citation :

@lvishd a écrit:
Je mets le code pour les curieux ou celui qui voudra s'en inspirer pour le rendre plus rapide parce que là je l'ai fait en 5 minutes pour déconner^^

Si le point blanc est sur un bord on doit pouvoir engager un mouvement vers le centre pendant qu'on cherche le nouveau point à attendre parce que statistiquement le nouveau point bleu à plus de chance d'être de l'autre coté du plateau.

Contribution le : 22/10/2017 16:56
Signaler

CrazyCow
 0  #11
Je poste trop
Inscrit: 29/07/2008 00:26
Post(s): 18991
Karma: 29871
1ère essai

52 Regular
81 en extrême


@lvishd T'utilise ce code où ?

Contribution le : 22/10/2017 18:44
Signaler

Mitri
 0  #12
Je poste trop
Inscrit: 14/12/2006 19:51
Post(s): 10036
Karma: 1123
106 en extrême, 65 en normal

Contribution le : 22/10/2017 18:50
Signaler

CrazyCow
 1  #13
Je poste trop
Inscrit: 29/07/2008 00:26
Post(s): 18991
Karma: 29871
A priori je tiens le record, puisque je suis à 84 en normal avec le code un peu modifié de @lvishd.



Contribution le : 22/10/2017 22:17
Signaler

Crazy-13
 0  #14
Je poste trop
Inscrit: 09/12/2005 16:32
Post(s): 83397
Karma: 8600
mes flèches directionnel ne marchent plus toutes correctement, alors je doit la jouer en faisant shift et les touche 4, 8, 6 et 2, ce n'est pas très pratique.

Contribution le : 22/10/2017 22:44
Signaler

Nwc-Vincent2
 0  #15
J'aime glander ici
Inscrit: 22/05/2011 16:21
Post(s): 5371
Karma: 155
Rah je viens de faire 79 mais le truc c'est qu'il faut avoir de la chance pour que le point réapparaisse super près à chaque fois j'ai perdu du temps en voulant me recentrer alors qu'il apparaissait juste à côté

Contribution le : 22/10/2017 23:05
Signaler

Alex333
 0  #16
Je poste trop
Inscrit: 07/07/2008 12:56
Post(s): 26241
Karma: 13552
Moi aussi j'ai un record ! 51. Alleeeez !




Et bj pour le code lvishd!!

Contribution le : 22/10/2017 23:11
Signaler

Crazy-13
 0  #17
Je poste trop
Inscrit: 09/12/2005 16:32
Post(s): 83397
Karma: 8600
j'ai pas dépassé les 33 en mode normal à cause de mon problème de clavier...

Contribution le : 22/10/2017 23:19
Signaler

CrazyCow
 1  #18
Je poste trop
Inscrit: 29/07/2008 00:26
Post(s): 18991
Karma: 29871
101 🙂







(Mon ordinateur a du ramer un coup pour perdre, parce qu'avec la nouvelle version du programme ci-dessous, il arrive tout juste à faire le trajet maximal en moins d'une seconde ; donc théoriquement ce serait illimité)


Code :

#include <MsgBoxConstants.au3>

Global $prg_name = "eat_the_dots_bot"

;-------------------------------------------------------------------------
TrayTip($prg_name, "Running", 1, 1)
MsgBox(64,$prg_name,"Press <Esc> to stop the program")
HotKeySet("{ESC}", "_Terminate")
Func _Terminate()
	TrayTip($prg_name, "Closed", 5, 1)
	Sleep(1000)
    Exit
 EndFunc
;-------------------------------------------------------------------------


Global $coord_x[5] = [640, 800, 960, 1120, 1280]
Global $coord_y[5] = [240, 400, 560, 720, 880]

Global $white_x = 2
Global $white_y = 2
Global $blue_x = 0
Global $blue_y = 0

Global $BLUE = 2846971
Global $RED = 15743287
Global $WHITE = 16777215

Global $iSleep = 93

Func up_key($n)
   for $i=1 To $n Step 1
	  Send("{UP}")
	  Sleep($iSleep)
   Next
EndFunc

Func down_key($n)
   for $i=1 To $n Step 1
	  Send("{DOWN}")
	  Sleep($iSleep)
   Next
EndFunc

Func left_key($n)
   for $i=1 To $n Step 1
	  Send("{LEFT}")
	  Sleep($iSleep)
   Next
EndFunc

Func right_key($n)
   for $i=1 To $n Step 1
	  Send("{RIGHT}")
	  Sleep($iSleep)
   Next
EndFunc

Sleep(2000)


while 1

   ; White position
   If PixelGetColor($coord_x[$white_x], $coord_y[$white_y]) <> $WHITE Then
	  for $i=0 To 4 Step 1
		 for $j=0 To 4 Step 1
			If PixelGetColor($coord_x[$i], $coord_y[$j]) == $WHITE Then
			   $white_x = $i
			   $white_y = $j
			   ExitLoop (2)
			EndIf
		 Next
	  Next
   EndIf

   ; Blue position when it appears
   while 1
	  for $i=0 To 4 Step 1
		 for $j=0 To 4 Step 1

			If PixelGetColor($coord_x[$i], $coord_y[$j]) == $BLUE Then
			   $blue_x = $i
			   $blue_y = $j
			   ExitLoop (3)
			EndIf

		 Next
	  Next
   WEnd

   If $white_x < $blue_x Then
	  right_key($blue_x - $white_x)
   ElseIf $white_x > $blue_x Then
	  left_key($white_x - $blue_x)
   EndIf

   If $white_y < $blue_y Then
	  down_key($blue_y - $white_y)
   ElseIf $white_y > $blue_y Then
	  up_key($white_y - $blue_y)
   EndIf

   $white_x = $blue_x;
   $white_y = $blue_y;

WEnd


Les différences (modestes) :

- Sans importance : j'ai repositionné les coordonnées des points en fonction de mon écran (FullHD). D'ailleurs je pourrai peut-être gagner un peu en performances en diminuant la taille de la fenêtre.

- Faible importance : les couleurs bleu et rouge n'étaient pas bonnes chez moi, donc j'ai eu un peu de mal à faire fonctionner le programme au début (peut-être une question de calibrage logiciel des écrans ?).
J'ai aussi converti directement l'HEX en décimal pour optimiser légèrement le code.

- Important : j'ai ajouté une boucle qui vérifie tous les points jusqu'à trouver le point bleu, ce qui évite certaines instructions inutiles.

- Important : j'ai vu que de temps à autres le programme se trompait sur la position du point blanc (au cas où l'envoi d'une touche n'est pas correctement pris en compte). J'ai donc ajouté une vérification sur la position réelle du point blanc.

- Remarque : j'ai beaucoup testé de possibilités avec la valeur de Sleep, Opt("SendKeyDelay"), ou en évitant le dernier sleep dans la boucle (qui me paraissait inutile), mais je ne suis arrivé à rien de mieux que la valeur de 93 ms d'attente.

- Remarque : j'étais aussi à un score d'environ 60 avec le code initial.


cc: @lvishd

Contribution le : 22/10/2017 23:30
Signaler

lvishd
 0  #19
Je poste trop
Inscrit: 28/11/2010 19:49
Post(s): 12664
Karma: 5543
@CrazyCow GG

J'ai fait tourner le code avec tes modifications sur ma machine mais je dois avouer que la différence n'est pas très notable chez moi.
L'impression que j'ai est que le point bleu est pris en compte plus vite dès son apparition mais je passe de 61 à 64 en normal. C'est sûrement mon pc qui est trop lent

Sinon en effet les couleurs affichées chez moi ne sont pas identiques aux tiennes.
Marrant de voir que chez toi aussi la valeur du sleep est la même (93)

Pour ce qui est du dernier Sleep() inutile, on peut s'en débarrasser facilement en diminuant la boucle d'une incrémentation (i=2 au lieu de i=1) comme suit (je n'ai pas pris le temps de le rendre efficace, hein^^)
Func up_key($n)
   for $i=2 To $n Step 1
	  Send("{UP}")
	  Sleep($iSleep)
   Next
   Send("{UP}")
EndFunc



EDIT @CrazyCow: Quitte à être grincheux et perfectionniste je te dirais que faire un if à chaque tour de boucle n'est pas top puisque tu rallonges la boucle
Mais en effet comme tu as dit il s’arrête à l'avant dernière manip' donc bon...
Après je n'ai pas l'intention de passer des lustres (@30Secondes) dessus non plus c'était pour s'amuser au départ^^

Contribution le : 23/10/2017 00:44
Signaler

CrazyCow
 1  #20
Je poste trop
Inscrit: 29/07/2008 00:26
Post(s): 18991
Karma: 29871
@lvishd Oui ou :

Func up_key($n)
   for $i=1 To $n Step 1
	  Send("{UP}")
	  if $i < $n Then
	  	  Sleep($iSleep)
	  EndIf
   Next
EndFunc


Mais le résultat était étrange, il s'arrêtait systématiquement un point avant la destination, donc finalement j'ai remis tel quel.

Je pense que l'ordi y est effectivement pour beaucoup (le miens est plutôt pas mal). Les réglages sont à ajuster d'un ordi à l'autre je pense. Si tu vois que le point blanc s'arrête ou ne fait pas le trajet en un déplacement horizontal et vertical c'est qu'il a manqué un appui de touche. Tu peux essayer de mettre plus que 93 ms de délai. Tu auras peut-être un meilleur score. Avec la boucle supplémentaire sur le point bleu ton ordi a peut-être besoin d'un peu plus de temps. La version compilée va aussi un peu plus vite.

101 est le record, mais la moyenne est plutôt stable entre 80 et 90.

EDIT : Je suis arrivé à 114, mais tout dépend ce qu'on considère de la triche, parce que là j'ai désactivé les halos et autres animations du jeu pour qu'il soit plus réactif.
Idem, j'ai pas plus envie que ça d'y passer mes soirées 😁

Contribution le : 23/10/2017 00:51
Signaler


 Haut   Précédent   Suivant






Si vous êtes l'auteur d'un élément de ce site, vous pouvez si vous le souhaitez, le modifier ou le supprimer
Merci de me contacter par mail. Déclaré à la CNIL N°1031721.