-
-
Save Yass1978/fa8fbf7de87aa4088c994f9e01fffb12 to your computer and use it in GitHub Desktop.
game code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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