Pieges/piege.py

230 lines
7.2 KiB
Python
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# Concept :
# - Donjon : action par tour, manipule des salles
# - Salles : passages vers des directions cardinales, contiennent des dragons
# - Dragons : plusieurs niveaux, tous différents
#
# - Aventurier : déplacement tour par tour de salle en salle vers l'intention
# - Intention : cible le dragon le plus fort accessible (orgueil)
#
# Doc FLTK : https://antoinemeyer.frama.io/fltk/
import random, fltk, time, os, importlib
import game
## VARIABLES DE CONFIGURATION
LARGEUR_FENETRE = 900
HAUTEUR_FENETRE = 1000
DIM = 7
VERTICAL = 0
HORIZONTAL = 1
def phase1(joueur,joueur2,plateau):
compteur=0
while(True):
print( "{}, c'est à vous de poser une bille ! ".format(i) +
"Entrez les coordonnées x et y séparées par une virgule:")
demande=input()
def clic_sur_case(i, j):
if joueur1.game.placer_bille(i,j)==True:
return True
elif joueur2.game.placer_bille(i,j)==True:
return True
def run_game(joueur1, joueur2, plateau):
"""
Running game
@params joueur1, joueur2, players (class Joueur)
plateau, game board (class Plateau)
@return void
"""
fltk.cree_fenetre(LARGEUR_FENETRE, HAUTEUR_FENETRE)
fltk.texte(LARGEUR_FENETRE/2, HAUTEUR_FENETRE/20,
"Pièges",
couleur="black",
taille=30,
ancrage='center')
fltk.texte(LARGEUR_FENETRE/2, HAUTEUR_FENETRE/8,
"Tapez Echap pour quitter le jeu",
couleur="green",
taille=10,
ancrage='center')
modeles = {
"tirette_horiz":"sprites/tirette.png",
"barre_horiz":"sprites/barre.png",
"tirette_vert":"sprites/tirette2.png",
"barre_vert":"sprites/barre2.png",
"bille1":"sprites/bille1.png",
"bille2":"sprites/bille2.png",
"tour_de_plateau":"sprites/bois3.png",
"case1":"sprites/bois1.png",
"case2":"sprites/bois2.png",
"trou": "sprites/trou.png"
}
OFFSET_X = 230
OFFSET_Y = 230
# Boucle principale
while True:
fltk.mise_a_jour()
plateau.mise_à_jour()
# Affichage plateau
# Tirettes verticales
for i in range(DIM):
#XXX récupérer la position de la tirette -> n
# boucler x fois pour afficher des barres
n = plateau.tirettes[0][i].position
fltk.image( OFFSET_X + (i+1)*62,
OFFSET_Y + (DIM+1)*62 + n*30,
modeles["tirette_vert"],
ancrage = "center",
largeur=50,
hauteur=50,
tag="{}".format(i))
for x in range(n):
fltk.image( OFFSET_X + (i+1)*62,
OFFSET_Y + (DIM+1)*62 + x*30,
modeles["barre_vert"],
ancrage = "center",
largeur=50,
hauteur=50,
tag="{}".format(i))
# Tirettes horizontales
for j in range(DIM):
#XXX récupérer la position de la tirette -> n
# boucler x fois pour afficher des barres
n = plateau.tirettes[1][j].position
fltk.image( OFFSET_X + 20 + (0)*62 - n*30,
OFFSET_Y + 20 + (j+1)*62,
modeles["tirette_horiz"],
ancrage = "center",
largeur=55,
hauteur=55,
tag="{}".format(i))
for x in range(n):
fltk.image( OFFSET_X + 20 + (0)*62 - x*30,
OFFSET_Y + 20 + (j+1)*62,
modeles["barre_horiz"],
ancrage = "center",
largeur=50,
hauteur=50,
tag="{}".format(i))
# Plateau
for i in range(0,DIM):
for j in range(0,DIM):
# Choix du type de sprite selon position
if (i+j) % 2 == 0:
type_modele = "case1"
#elif trou:
# type_modele = trou
else:
type_modele = "case2"
fltk.image( OFFSET_X + 2 + (i+1)*62,
OFFSET_Y + 20 + (j+1)*62,
modeles[type_modele],
ancrage = "center",
largeur=60,
hauteur=60,
tag="{},{}".format(i,j))
#XXX TROUS
if plateau.est_ce_un_trou(i,j):
fltk.image( OFFSET_X + 2 + (i+1)*62,
OFFSET_Y + 20 + (j+1)*62,
modeles["trou"],
ancrage = "center",
largeur=60,
hauteur=60,
tag="{},{}".format(i,j))
# Billes
for bille in plateau.billes:
if bille[2] is joueur1:
fltk.image( OFFSET_X + 2 + (i+1)*62,
OFFSET_Y + 20 + (j+1)*62,
modeles["bille1"],
ancrage = "center",
largeur=30,
hauteur=30,
tag="{},{}".format(i,j))
if bille[2] is joueur2:
fltk.image( OFFSET_X + 2 + (i+1)*62,
OFFSET_Y + 20 + (j+1)*62,
modeles["bille2"],
ancrage = "center",
largeur=30,
hauteur=30,
tag="{},{}".format(i,j))
#XXX Affichage instructions liées au mode de jeu
fltk.mise_a_jour()
event = fltk.attend_ev()
if "Quitte" in fltk.type_ev(event):
for i in range(6):
for j in range(6):
fltk.efface("{},{}".format(i,j))
fltk.ferme_fenetre()
return None
if "Touche" in fltk.type_ev(event) and "Escape" in fltk.touche(event):
for i in range(6):
for j in range(6):
fltk.efface("{},{}".format(i,j))
fltk.ferme_fenetre()
fltk.ferme_fenetre()
return None
if "ClicGauche" in fltk.type_ev(event):
# XXX à améliorer
x = fltk.abscisse(event)
y = fltk.ordonnee(event)
i = int( (x - OFFSET_X - 2 + 62/2)/62 - 1)
j = int( (y - OFFSET_Y - 20 + 62/2)/62 - 1)
print("Clic sur coords ({},{})".format(x,y))
print(" case {},{}".format(i,j))
#clic_sur_case(i, j)
## XXX Gérer évènement de clic
## Fonction principale
def main():
while True:
importlib.reload(fltk) # corrige un bug sérieux de fltk avec les images
plateau = game.Plateau()
joueur1 = game.Joueur(plateau)
joueur2 = game.Joueur(plateau)
run_game(joueur1, joueur2, plateau)
#XXX vérifier condition de sortie
return 0
main()