Skip to content

Instantly share code, notes, and snippets.

@Yass1978
Last active May 17, 2021 21:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Yass1978/fa8fbf7de87aa4088c994f9e01fffb12 to your computer and use it in GitHub Desktop.
Save Yass1978/fa8fbf7de87aa4088c994f9e01fffb12 to your computer and use it in GitHub Desktop.
game code
import pygame
from random import randint
# classe représentant le jeu
class Game:
combat = False
def __init__(self):
# définir si le jeu à commencé
self.is_playing = False
# générer notre joueur
self.player = Player()
self.plenigme = Plenigme()
self.slime = Slime()
# self.slime = Slime()
self.pressed = {}
# classe représentant notre joueur
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.velocity = 5
self.image = pygame.image.load('assets/sprite/standing.png')
self.width = self.image.get_width()
self.height = self.image.get_height()
self.rect = self.image.get_rect()
self.rect.x = 1
self.rect.y = 455
# Mouvement du personnage vers la droite
def move_right(self):
if self.rect.x < 420:
self.rect.x += self.velocity
# Mouvement du personnage vers la gauche
def move_left(self):
if self.rect.x > 0:
self.rect.x -= self.velocity
# Classe représentant le système des énigmes.
class Plenigme(pygame.sprite.Sprite): # jeu de mot avec player + enigme
trove = False
b = randint(0, 7)
reponse_liste = ['a', 'r', 'z', 'e', 'r', 'a', 'z', 'e']
reponse = reponse_liste[b - 1]
print(b)
print(reponse)
def __init__(self):
super().__init__()
self.health_point = 3
self.image = pygame.image.load('assets/sprite/D3.png')
self.rect = self.image.get_rect()
self.rect.x = 1
self.rect.y = 455
def player_input(self):
if self.reponse == 'a':
self.reponse = pygame.K_a
if self.reponse == 'z':
self.reponse = pygame.K_z
if self.reponse == 'e':
self.reponse = pygame.K_e
if self.reponse == 'r':
self.reponse = pygame.K_r
for event in pygame.event.get():
if event.type == pygame.KEYDOWN and self.trove:
if event.key != self.reponse:
self.health_point -= 1
print(self.health_point)
else:
self.trove = False
Game.combat = False
# Classe des monstres slimes et ils sont pris aléatoirement
class Slime(pygame.sprite.Sprite):
slime_image = ['basic', 'vert', 'blanc', 'orange', 'rose']
a = randint(0, 4)
# Définition de la classe slime, de ses attributs et de ses images.
def __init__(self):
super().__init__()
self.image = pygame.image.load(
'assets/slime/' + Slime.slime_image[Slime.a] + '/' + Slime.slime_image[Slime.a] + '.png')
self.rect = self.image.get_rect()
self.rect.x = 700
self.rect.y = 455
from classe3 import *
from pygame import gfxdraw as gfx
# Initialisation de pygame et de mixer (musique)
pygame.init()
pygame.mixer.init()
# variables
running = True
walkCount = 0
CLOCK = pygame.time.Clock()
FPS = 100
a = -2000
i = 0
b = 0
Jump = 0
# generer la fenetre de notre jeu
pygame.display.set_caption("Enigma")
H, W = 1080, 720
screen = pygame.display.set_mode((H, W)) # 1er valeur largeur, 2eme longueur
# fixation des limites de la fenêtre de notre jeu
offset_x, offset_y = 0, 0
poly = screen.get_rect()
polypoints = (poly.topleft, poly.topright, poly.bottomright, poly.bottomleft)
# arrière plan titre
bg1 = pygame.image.load('assets/backgrounds/TITRE.jpg').convert()
signal = pygame.image.load('assets/divers/test.png')
# chargement des différents arrières plan de notre jeu
background = pygame.image.load('assets/backgrounds/BG_1.jpg').convert()
bg = [pygame.image.load('assets/backgrounds/BG_2.jpg').convert(),
pygame.image.load('assets/backgrounds/BG_3.jpg').convert(),
pygame.image.load('assets/backgrounds/BG_4.jpg').convert()]
# importer/charger notre bannière
banner = pygame.image.load('assets/divers/banner.png')
banner = pygame.transform.scale(banner, (500, 500))
banner_rect = banner.get_rect()
banner_rect.x = screen.get_width() / 4
# importer/charger notre bouton pour lancer la partie
play_button = pygame.image.load('assets/divers/button.png')
play_button = pygame.transform.scale(play_button, (400, 150))
play_button_rect = play_button.get_rect()
play_button_rect.x = screen.get_width() / 3.33
play_button_rect.y = screen.get_height() / 2
# chargement des sprites du perso principal (jambe gauche)
walkRight = [pygame.image.load(f'assets/sprite/R{i}.png') for i in range(1, 10)]
# chargement des sprites du perso principal (jambe gauche)
walkLeft = [pygame.image.load(f'assets/sprite/L{i}.png') for i in range(1, 10)]
# Chargement des images du slime pour l'animation de saut
JumpSlime = [pygame.image.load('assets/slime/' + Slime.slime_image[Slime.a] + '/Saut/S1.png'),
pygame.image.load('assets/slime/' + Slime.slime_image[Slime.a] + '/Saut/S2.png'),
pygame.image.load('assets/slime/' + Slime.slime_image[Slime.a] + '/Saut/S3.png')]
enigme = pygame.image.load('assets/enigme/enigme' + str(Plenigme.b + 1) + '.png')
# chargement de la musique et lecture
music = ['assets/OST/Chippytoon.ogg', 'assets/OST/COMBAT.ogg', 'assets/OST/FINAL.ogg']
pygame.mixer.music.load('assets/OST/TITLE.ogg')
pygame.mixer.music.play(-1)
# chargement image coeur
heart_image = ['assets/divers/vie3.png', 'assets/divers/vie2.png', 'assets/divers/vie.png']
heart = pygame.image.load(heart_image[0])
# charger le jeu
game = Game()
# boucle tant que cette condition est vraie
while running:
# si le joueur atteint la limite du scrolling alors redéfinissions en 0
if offset_x < -32700:
offset_x = 0
# compteur de marche
if walkCount + 1 >= 27:
walkCount = 0
# compteur de marche
if Jump + 1 >= 27:
Jump = 0
# changement d'arriere plan si le joueur atteint une position en a et s'il y a encore assez de background
if offset_x < a and i != 3:
background = bg[i]
a = a - 2000
i = i + 1
# Chargement des images des points de vies.
if game.plenigme.health_point == 2:
heart = heart_image[1]
elif game.plenigme.health_point == 1:
heart = heart_image[2]
# Si le combat commence
if game.combat:
# lancer la musique de combat
pygame.mixer.music.load(music[1])
pygame.mixer.music.play(-1)
# boucle jusqu'à ce que le combat soit terminer
while game.combat and game.plenigme.health_point > 0:
game.plenigme.trove = True
game.plenigme.player_input()
pygame.mixer.music.load(music[0])
pygame.mixer.music.play(-1)
offset_x += 1
# Si 0 point de vie alors Game OVER
if game.plenigme.health_point == 0:
running = False
pygame.quit()
print("Game Over")
# verifier si le jeu à commencé ou non
if game.is_playing:
if offset_x != a:
# appliquer arriere plan de notre jeu
gfx.textured_polygon(screen, polypoints, background, offset_x, offset_y)
# verifier si le joueur souhaite aller à gauche ou a droite
if game.pressed.get(pygame.K_RIGHT):
game.player.move_right()
offset_x -= 5
screen.blit(walkRight[walkCount // 3], game.player.rect)
walkCount += 1
elif game.pressed.get(pygame.K_LEFT):
game.player.move_left()
screen.blit(walkLeft[walkCount // 3], game.player.rect) # Nous divisons walkCount par 3 pour garantir
# que chaque
walkCount += 1 # image est montré 3 fois à chaque animation
# si joueur ne bouge pas, appliquer l'image par défaut
else:
screen.blit(game.player.image, game.player.rect)
# lancement du combat si position a atteint
elif offset_x == a:
# screen.blit(signal, (game.player.rect.x + game.player.width, game.player.rect.y))
game.combat = True
screen.blit(background, (0, 0))
# Chargement image barre de vie
screen.blit(heart, (0, 0))
screen.blit(enigme, (25, 25))
screen.blit(game.plenigme.image, game.plenigme.rect)
screen.blit(game.slime.image, game.slime.rect)
# while reponseJ != reponse:
# pygame.time.wait(2000)
# screen.blit(JumpSlime[Jump // 3], game.slime.rect)
# Jump += 1
# verifier si notre jeu n'a pas commencé
else:
# ajouter l'écran de bienvenue
screen.blit(bg1, (0, 0))
screen.blit(play_button, play_button_rect)
screen.blit(banner, banner_rect)
# mettre à jour l'ecran
pygame.display.update()
CLOCK.tick(FPS)
# si le joueur ferme cette fenetre
for event in pygame.event.get():
# si l'evenement est fermeture de fenetre
if event.type == pygame.QUIT:
running = False
pygame.quit()
print("Fermeture du jeu")
# detecter si un joueur lache une touche du clavier
elif event.type == pygame.KEYDOWN:
game.pressed[event.key] = True
elif event.type == pygame.KEYUP:
game.pressed[event.key] = False
elif event.type == pygame.MOUSEBUTTONDOWN and game.is_playing is False:
# verification pour savoir si la souris est en collision avec le bouton jouer
if play_button_rect.collidepoint(event.pos):
pygame.mixer.music.load(music[0])
pygame.mixer.music.play(-1)
# mettre le jeu en mode "lancé"
game.is_playing = True
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment