Cours 2 Jeux Python

Les classes

Dans ce cours, vous allez apprendre comment programmer une classe !

I. Introduction

 Nous avons déjà vu les classes dans des cours specialisés. Si vous avez un doute ou besoins d’aide vous pouvez les revoirs.

 

II. Les classes

Nous allons donc commencez par un classique:

class Player:

          def __init__(self):

               self.health = 100

               self.max_health = 150

               self.attack = 20

               self.velocity = 10

velocity correspond à la vitesse de votre joueur. max_health est la limite de vie que vous pouvez avoir.

III. Sprite

Pour une classe qui a un composant graphique, vous devez utiliser Sprite:

class Player(pygame.sprite.Sprite):

Puis dans la méthode init vous allez récuperer cette super classe :

def __init__(self):

           super().__init__()

Puis, vous pouvez ajouter un composant graphique à votre joueurs:

           self.image = pygame.image.load(‘imgg/Player.png’)

IV. get_rect et charger le joueur

Ici, vous allez définir ou vas ce trouver votre personnage:

self.rect = self.image.get_rect

Cela vas autoriser votre joueurs à ce déplacer.

Puis vous créez une classe:

class mainG():

           def __init__(self):

                  self.player =Player()

Pour le charger rien de plus simple, vous alles en dessous de:

background = pygame.image.load('imgg/BKG.jpg')

Puis vous créez une classe mainG:

game = mainG()

Puis dans la boucle

while window:

Marquez :

sbkg.blit(game.player.image, game.player.rect)

(Ligne 5, 28,35)

 

 

V. Les mouvements

 Premièrement, nous allons voire l’emplacement de début de partie :

self.rect.x = 500

(500 nombre de pixel sur l’axe x => rect.x)

Et pour l’axe y:

self.rect.y = 400

Ensuite vous devez allez dans votre class Player(): Et vous rajoutez les méthodes :

def move_left(self):

self.rect.x -= self.velocity

def move_right(self):

self.rect.x += self.velocity

def move_up(self):

self.rect.y -= self.velocity

def move_down(self):

self.rect.y += self.velocity

VI. Déplacement

Ensuite, tout en bas dans while window :

elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_w:
game.player.move_up()
elif event.key == pygame.K_a:
game.player.move_left()
elif event.key == pygame.K_s:
game.player.move_down()
elif event.key == pygame.K_d:
game.player.move_right()

Ici, pygame.KEYDOWN s’exécute si une touche est pressé. Vous pouvez choisir vos touche comme vous le désirez. Ici, j’utilise w pour aller en haut mais vous pouvez utiliser n’importe quel touche du clavier. Si vous tenez la touche cela ne bougera votre personnage qu’une fois de 10 pixel. Donc comment faire pour rendre votre jeux fluide ? C’est très simple. Vous allez supprimer ce bloque que vous venez d’écrire et à la place:

elif event.type == pygame.KEYDOWN:
game.pressed[event.key] = True
elif event.type == pygame.KEYUP:
game.pressed[event.key] = False

 Puis dans votre class mainG: 

self.pressed = {}

 Puis dans while window: en-dessous de vos sbkg.blit:

if game.pressed.get(pygame.K_w):
game.player.move_up()
elif game.pressed.get(pygame.K_a):
game.player.move_left()
elif game.pressed.get(pygame.K_s):
game.player.move_down()
elif game.pressed.get(pygame.K_d):
game.player.move_right()