Skip to content

seloufian/Adventurous-Mouse-Game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Adventurous Mouse Game

A simple game which consists of guiding a mouse towards objective points (cheese), both located in a 2D interface. The mouse is moved in the direction of an arrow described by two colors: start and end, thus, it's about detecting the arrow's direction defined by these colors (choosen manually). These shoud be preferably in a uniform background (for precise detection).

General Info

Project realized in January 2020 as a university practical work, field : Artificial Intelligence (AI), level : Master 2. The goal was to put into practice the different OpenCV's functions related to the artificial processing of digital images for the creation of a small game.

ScreenShots

Game in progress

Game 'Won' status Game 'Over' status

Project content

.
├── screenShots                     <- Contains images used as illustration of the game
│
├── src                             <- Contains Python source-code of the project
│    ├── icons                      <- Contains different objects icons used in the game
│    │
│    ├── include                    <- Contains the core of the game (functions and classes)
│    │      ├── colors.xml          <- Color definition file, minimum and maximum color thresholds
│    │      ├── detect.py           <- Color contour and arrow direction detection function
│    │      ├── gamegroup.py        <- Class of the game interface (current state and movement of objects)
│    │      ├── gameicon.py         <- Class of a game object (location and collision detection)
│    │      ├── importcolors.py     <- Import function for colors defined in "colors.xml"
│    │      ├── mainwindow.py       <- Main GUI class of the application (grouping of the game interface, settings and camera capture)
│    │      ├── paramsgroup.py      <- Class of game parameters (colors, speed and difficulty levels)
│    │      └── placeobjects.py     <- Function for defining difficulty levels (placing objects in the game interface)
│    │
│    └── __main__.py                <- Application entry point (the main file to execute)
│
├── Report.pdf                      <- Project report: Detailed description of developed algorithms for the game (in French)
│
└── README.md                       <- Current project info

Technologies

  • Python (Used version: 3.7.4), with some external packages:
    • OpenCV (Used version: 4.1.2).
    • Numpy (Used version: 1.16.5).
    • PyQt5 (Used version: 5.13.1).

Application use

To run this game, make sure that all the packages are installed. Then, an adjustment of the min/max thresholds for the colors to be detected (which define the arrow) in HSV format must be made. For this, a modification of the values and/or addition of other colors is necessary in the file "./src/include/colors.xml" (respecting the syntax described in the comment at the beginning of the file) which contains by default two colors: red and green. Finally, the game can be launched via the entry point:

$ python3 src/__main__.py

Features

  • Detection of an arrow described by two colors (start and end):

    • Identification of the contours of each color by drawing the AABB (Axis-Aligned Bounding Box).
    • Specification of the angle (in an interval [0, 360]°) created by the arrow.
    • Definition of the direction of the arrow (8 possible directions).
  • A simple game based on moving a mouse according to the detected arrow:

    • Collision detection with other objects (eating cheeses while avoiding mice traps).
    • Adjustment of the speed of movement.
    • Three difficulty levels (easy, medium and hard) with three stages each.

Status

Since this simple game was developed as a practical work, it will no longer be developed or improved.

About

Use of OpenCV functions to create a simple game.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages