Developpez.com - Python
X

Choisissez d'abord la catégorieensuite la rubrique :


Bot pour le jeu Park Soccer

Date de publication : 03/10/2006

Par Guillaume Duriaud (Page personnelle)
 

Exemple d'un programme Bot minimaliste qui joue au jeu Park Soccer

               Version PDF (Miroir)   Version hors-ligne (Miroir)

I. Prérequis
II. Introduction
III. Explication du code
IV. Source
V. Téléchargement


I. Prérequis

Système d'exploitation: Windows
Langage: Python
Bibliothèque: pyHook, pyWin32


II. Introduction

Ce programme va permettre à l'ordinateur de jouer tout seul au jeu Park Soccer. Park Soccer est un petit jeu qui consiste simplement à jongler avec une balle de football à l'aide de la souris.

Mon objectif était simplement d'arriver à faire jouer l'ordinateur et au vue du jeu, il s'est avéré que la force brute suffisait. Je me suis contenter du minimum, à savoir programmer l'IA (si on peut appeler cela une IA). Vous devez donc au préalable lancer le jeu, ne pas le mettre en pleine écran puis bien positionner la fenêtre en haut à gauche de l'écran de votre ordinateur. Comme le programme Python contrôle la souris, il est important que la fenêtre du jeu soit au premier plan et bien positionnée, sinon le programme risque de cliquer avec la souris en dehors de la fenêtre de jeu. Une fois cela fait, vous pouvez donc exécuter le fichier Parksoccer.pyw

Le jeu étant aussi sur Internet (vous n'aurez pas de mal à le trouver), vous pouvez aussi utilisez ce lien pour tester le programme en modifiant au préalable les valeurs de parcours de la souris.


III. Explication du code

Le programme va se contenter de déplacer la souris de gauche à droite en cliquant à chaque fois à une vitesse suffisante pour toucher à chaque passage au moins une fois le ballon.

La bibliothèque pyWin32 va nous permettre de contrôler la souris. La fonction win32api.SetCursorPos(x, y) positionne le curseur de la souris sur le pixel (x,y) et la fonction win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,100,100,0) permet d'envoyer l'évènement de l'appui sur le bouton gauche de la souris.
Les valeurs de déplacement et du timer ont été définies après expérimentation. Suivant la puissance de votre ordinateur et la taille de la fenêtre du jeu, vous devrez peut-être modifier ces valeurs.

La bibliothèque pyHook permet d'intercepter les évènements clavier et souris et nous sera utile pour stopper le programme quand on appuiera sur n'importe quelle touche du clavier.


IV. Source

Parksoccerbot.pyw

import win32api
import win32con
import pyHook
import pythoncom
import time
import sys
import threading

__version__ = (0, 2, 0)
__build__ = (0, 0)
__date__ = (2006, 5, 15)
__author__ = ('Guillaume', 'Duriaud')


def OnKeyboardEvent(event):
    sys.exit()

def MyThread():
    # create a hook manager
    hm = pyHook.HookManager()
    # watch for all keyboard events
    hm.KeyDown = OnKeyboardEvent
    # set the hook
    hm.HookKeyboard()
    # wait forever
    pythoncom.PumpMessages()

i=0
a = threading.Thread(target = MyThread)
a.start()
while True:
    time.sleep(0.005)
    win32api.SetCursorPos((30+((40*i) % 500),350 - min(270, (30 * (i / 200))) ))
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,100,100,0)
    i+=1

V. Téléchargement

Version Date Taille Mode FTP Mode HTTP de secours
0.2.0.0.0 2006.05.15 682 Ko Parksoccerbot.zip Parksoccerbot.zip


               Version PDF (Miroir)   Version hors-ligne (Miroir)

Valid XHTML 1.1!Valid CSS!

Copyright © 2006 Guillaume Duriaud. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Contacter le responsable de la rubrique Python