Commit 07733b5a authored by jwacyk's avatar jwacyk
Browse files

Ajout de commentaire

parent 301da84d
#Screen
SCREENSIZE = (800, 600)
REFRESHTIME = 5
......
......@@ -2,11 +2,18 @@ import pygame
import constants
class Cursor(pygame.Surface):
"""
Cette classe permet de créer un curseur.
"""
def __init__(self, length, color):
pygame.Surface.__init__(self, size=(length, length))
self.fill(color)
self.set_alpha(200)
def get_position_center(self, position):
"""
Cette fonction permet de retourner la position du centre du curseur afin
de pouvoir déssinner le curseur à la position de la wiimote sur l'écran.
"""
size_cursor = self.get_size()
return (position[0]-size_cursor[0]/2, position[1]-size_cursor[1]/2)
......@@ -8,29 +8,27 @@ from cursor import Cursor
from player import Player
from menu import Menu
pygame.display.init()
player_1 = Player(1)
#players est la liste des joueurs
players = [player_1]
#screen correspond à l'ensemble de l'affichage.
screen = pygame.display.set_mode(constants.SCREENSIZE, pygame.FULLSCREEN)
pygame.time.set_timer(pygame.USEREVENT,constants.REFRESHTIME)
screen.fill(constants.WHITE)
pygame.display.update()
side_menu = Menu()
#background correspond uniquement à la surface sur laquelle les joueurs déssinent.
background = pygame.Surface(screen.get_size())
background.fill(constants.WHITE)
while 1 :
for player in players :
#On récupère la position et les boutons du joueurs.
player.set_position()
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
player.set_boutons()
if cwiid.BTN_HOME in player.get_boutons():
try:
#On créer un nouveau joueur en l'ajoutant à la liste des joueurs.
players.append(Player(len(players)+1))
except Exception as e:
pass
......@@ -55,16 +53,20 @@ while 1 :
if cwiid.BTN_A in player.get_boutons() :
if side_menu.get_show_menu() :
if not(side_menu.collision(player, background)) :
#Pour déssiner on dessine des cercles sur le background.
pygame.draw.circle(background, player.get_color(), player.get_position(), player.get_size())
else :
pygame.draw.circle(background, player.get_color(), player.get_position(), player.get_size())
elif cwiid.BTN_B in player.get_boutons() :
elif cwiid.BTN_B in player.get_boutons()
#Pour effacer on dessine en blanc sur le background.
pygame.draw.circle(background, constants.WHITE, player.get_position(), player.get_size())
#On affiche le nouveaux background sur le screen
screen.blit(background, (0,0))
for player in players:
if player.get_position() !=None :
screen.blit(player.get_cursor(), player.get_cursor().get_position_center(player.get_position()))
if side_menu.get_show_menu() :
#On affichage le menu par dessus le nouveaux background
side_menu.show_menu_on_screen(screen)
#Met à jour l'affichage.
pygame.display.update()
......@@ -5,6 +5,10 @@ import sys
import datetime
class Menu(object):
"""
Cette classe permet de créer le menu de gauche et de gérer les collisions et
actions de celui-ci. Ce menu est constitué de rectangle.
"""
def __init__(self):
pygame.font.init()
my_font = pygame.font.SysFont("arial",17)
......@@ -29,7 +33,14 @@ class Menu(object):
self.save_button_rect = pygame.Rect(10, constants.SCREENSIZE[1]-90, 160, 30)
self.show_menu = True
def collision(self, player,background):
def collision(self, player, background):
"""
Cette fonction permet de vérifier si le joueur et en collision avec le
menu. Il permet également de changer la couleur du joueur,
sauvegarder le background et de quitter le jeu. Le fonction retourne un
boolean, Vraie si le joueur et en collision avec le menu et Faux si
ce n'est pas le cas.
"""
position = player.get_position()
if self.menu_color.collidepoint(position):
if self.green_rect.collidepoint(position):
......@@ -87,6 +98,9 @@ class Menu(object):
return False
def show_menu_on_screen(self, screen):
"""
Cette fonction permet d'afficher le menu sur l'écran.
"""
pygame.draw.rect(screen, constants.GREEN, self.green_rect)
pygame.draw.rect(screen, constants.BLACK, self.black_rect)
pygame.draw.rect(screen, constants.YELLOW, self.yellow_rect)
......
......@@ -6,6 +6,14 @@ from cursor import Cursor
from wiimote import Wiimote
class Player(object):
"""
Cette classe permet d'implémenter un joueur. Celui-ci contient une Wiimote,
la position de la wiimote, la l'index de sa couleur, la taille de son curseur,
son curseur, la liste des boutons appuyé, un boolean vérifiant si la couleur
a été changer et un booléan vérifiant si le menu latéral a été modifier.
Ces booléans permettent de vérifier si un boutons à déjà été appuyer avant
et ainsi éviter qu'une action s'enclenche à chaque frame.
"""
def __init__(self, numero_de_joueur):
self.wiimote = Wiimote(numero_de_joueur)
self.position = None
......@@ -17,12 +25,18 @@ class Player(object):
self.color_panel = False
def change_color_down(self):
"""
Cette fonction permet de changer sa couleur en descandant l'index de couleur.
"""
if self.pos_color > 0 and not(self.color_changed):
self.pos_color -=1
self.color_changed = True
self.set_cursor()
def change_color_up(self):
"""
Cette fonction permet de changer sa couleur en augmentant l'index de couleur.
"""
if self.pos_color+1 < len(constants.LIST_COLOR) and not(self.color_changed):
self.pos_color +=1
self.color_changed = True
......@@ -35,6 +49,9 @@ class Player(object):
return self.color_panel
def set_cursor(self):
"""
Cette fonction permet de redéfinir son curseur par rapport à sa taille.
"""
self.cursor = Cursor(self.size*2, self.get_color())
def get_cursor(self):
......
......@@ -5,6 +5,9 @@ import cwiid;
import time;
class Wiimote(object):
"""
Cette classe permet de s'occuper des wiiimotes.
"""
def __init__(self, numero_de_joueur):
print("Appuyez sur 1 & 2 pour connecter la wiimote")
self.data=cwiid.Wiimote()
......@@ -12,6 +15,9 @@ class Wiimote(object):
self.data.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_ACC | cwiid.RPT_IR
def get_boutons(self):
"""
Cette fonction permet de retourner l'ensemble des boutons appuyés.
"""
boutons = []
valeur_boutons = self.data.state['buttons']
if (valeur_boutons & cwiid.BTN_1) == cwiid.BTN_1:
......@@ -39,6 +45,11 @@ class Wiimote(object):
return boutons
def get_position(self):
"""
Cette fonction permet de retourner la position de la led infrarouge
vue par la caméra de la wiimote. La position horizontal a été inversé
pour que cela sois plus naturelle.
"""
data = self.data.state['ir_src']
if data[0] != None :
position_given = data[0]["pos"]
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment