GUILLAUME Baptiste
1 year ago
1 changed files with 186 additions and 0 deletions
@ -0,0 +1,186 @@ |
|||||
|
from random import randint |
||||
|
import sqlite3 |
||||
|
import time |
||||
|
|
||||
|
#Création de la table Personnage |
||||
|
conn = sqlite3.connect('JeuDeRole.db') |
||||
|
c = conn.cursor() |
||||
|
c.execute('''CREATE TABLE if not exists Perso(num_joueur INT, nom TEXT, pdv INT, exp INT, categorie TEXT)''') |
||||
|
conn.commit() |
||||
|
|
||||
|
class Personnage: |
||||
|
def __init__(self, nom, cat): |
||||
|
self.nom = nom |
||||
|
self.pdv = 20 |
||||
|
self.exp = 1 |
||||
|
self.cat = cat |
||||
|
if self.cat == "guerrier": |
||||
|
self.inv = ["épée", "potion"] |
||||
|
elif self.cat == "magicien": |
||||
|
self.inv = ["bâton", "potion"] |
||||
|
elif self.cat == "voleur": |
||||
|
self.inv = ["dague", "potion"] |
||||
|
elif self.cat == "elfe": |
||||
|
self.inv = ["arc", "potion"] |
||||
|
|
||||
|
def jet_attaque(self): |
||||
|
attaque = randint(1,20) |
||||
|
if self.cat == "guerrier": |
||||
|
attaque = attaque + self.exp*10 |
||||
|
elif self.cat == "mage": |
||||
|
attaque = attaque + self.exp*10 |
||||
|
elif self.cat == "voleur": |
||||
|
attaque = attaque + self.exp*3 |
||||
|
elif self.cat == "elfe": |
||||
|
attaque = attaque + self.exp*8 |
||||
|
return attaque |
||||
|
|
||||
|
def jet_defense(self): |
||||
|
defense = randint(1,20) |
||||
|
if self.cat == "guerrier": |
||||
|
defense = defense + self.exp*10 |
||||
|
elif self.cat == "mage": |
||||
|
defense = defense + self.exp*10 |
||||
|
elif self.cat == "voleur": |
||||
|
defense = defense + self.exp*3 |
||||
|
elif self.cat == "elfe": |
||||
|
defense = defense + self.exp*8 |
||||
|
return defense |
||||
|
|
||||
|
def change_pdv(self, nb_pdv): |
||||
|
self.pdv += nb_pdv |
||||
|
|
||||
|
def change_exp(self, nb_exp): |
||||
|
self.exp += nb_exp |
||||
|
|
||||
|
def affiche_caracteristiques(self): #Permet d'afficher les caracteristiques de votre personnage |
||||
|
print(" ") |
||||
|
print("Le nom de votre personnage est:", self.nom,".") |
||||
|
print("Votre personnage est un(e):", self.cat,".") |
||||
|
if self.pdv < 0: |
||||
|
print("Votre personnage possède 0 points de vie.") |
||||
|
else: |
||||
|
print("Votre personnage possède", self.pdv, "points de vie.") |
||||
|
print("Votre personnage possède", self.exp, "d'experience.") |
||||
|
|
||||
|
def affiche_inventaire(self): #Permet d'afficher l'inventaire du personnage |
||||
|
print("Inventaire de votre personnage:", self.inv) |
||||
|
|
||||
|
|
||||
|
nomP1 = input("Joueur 1, quel est votre nom ?: ") |
||||
|
nomP2 = input("Joueur 2, quel est votre nom ?: ") |
||||
|
catP1 = input("Joueur 1, choisissez votre catégorie entre guerrier, mage, voleur et elfe: ") |
||||
|
while not catP1 in ["guerrier", "mage", "voleur","elfe"]: |
||||
|
catP1 = input("Joueur 1, choisissez votre catégorie entre guerrier, mage, voleur et elfe: ") |
||||
|
catP2 = input("Joueur 2, choisissez votre catégorie entre guerrier, mage, voleur et elfe: ") |
||||
|
while not catP2 in ["guerrier", "mage", "voleur","elfe"]: |
||||
|
catP2 = input("Joueur 2, choisissez votre catégorie entre guerrier, mage, voleur et elfe: ") |
||||
|
P1 = Personnage(nomP1, catP1) |
||||
|
P2 = Personnage(nomP2, catP2) |
||||
|
|
||||
|
|
||||
|
J1 = (1, nomP1, 20, 1, catP1) |
||||
|
J2 = (2, nomP2, 20, 1, catP2) |
||||
|
liste = c.execute("SELECT nom FROM Perso") |
||||
|
if nomP1 in liste : |
||||
|
|
||||
|
c.execute("UPDATE Perso SET num_joueur = (?), nom = (?), pdv = (?), exp = (?), categorie = (?)", J1) |
||||
|
c.execute("UPDATE Perso SET num_joueur = (?), nom = (?), pdv = (?), exp = (?), categorie = (?)", J2) |
||||
|
else: |
||||
|
c.execute("INSERT INTO Perso VALUES (?, ?, ?, ?, ?)", J1) |
||||
|
c.execute("INSERT INTO Perso VALUES (?, ?, ?, ?, ?)", J2) |
||||
|
conn.commit() |
||||
|
|
||||
|
print("-----------------------------") |
||||
|
while P1.pdv > 0 and P2.pdv > 0: |
||||
|
print("---Phase 1 du tour (", nomP1,"attaque)---") |
||||
|
atkP1 = P1.jet_attaque() |
||||
|
defP2 = P2.jet_defense() |
||||
|
if atkP1 > defP2: |
||||
|
perte_pdv = -randint(1,8) |
||||
|
print(nomP1, "attaque", nomP2, "!!!", nomP2,"vient de perdre", -perte_pdv, "point(s) de vie.") |
||||
|
P2.change_pdv(perte_pdv) |
||||
|
if P2.pdv > 0: |
||||
|
pdv2 = (P2.pdv) |
||||
|
c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 2", (pdv2,)) |
||||
|
conn.commit() |
||||
|
else: |
||||
|
pdv2 = 0 |
||||
|
c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 2", (pdv2,)) |
||||
|
conn.commit() |
||||
|
else: |
||||
|
perte_pdv = -randint(1,4) |
||||
|
print(nomP2, "arrive à se défendre de l'attaque de", nomP1,"!!!", nomP1,"vient de perdre", -perte_pdv, "point(s) de vie.") |
||||
|
P1.change_pdv(perte_pdv) |
||||
|
if P1.pdv > 0: |
||||
|
pdv1 = (P1.pdv) |
||||
|
c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 1", (pdv1,)) |
||||
|
conn.commit() |
||||
|
else: |
||||
|
pdv1 = 0 |
||||
|
c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 1", (pdv1,)) |
||||
|
conn.commit() |
||||
|
P1.affiche_caracteristiques() |
||||
|
P2.affiche_caracteristiques() |
||||
|
print("") |
||||
|
if P1.pdv > 0 and P2.pdv <= 0: |
||||
|
P1.change_exp(1) |
||||
|
print("Le joueur", nomP1, "a gagné.") |
||||
|
valeur = 0 |
||||
|
c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 1", (valeur,)) |
||||
|
conn.commit() |
||||
|
break |
||||
|
elif P1.pdv <= 0 and P2.pdv > 0: |
||||
|
P2.change_exp(1) |
||||
|
print("Le joueur", nomP2, "a gagné.") |
||||
|
break |
||||
|
|
||||
|
|
||||
|
print("-----------------------------") |
||||
|
if P1.pdv > 0 and P2.pdv > 0: |
||||
|
input("~~~Veuillez appuyer sur Entrée~~~") |
||||
|
print(" ") |
||||
|
|
||||
|
|
||||
|
print("---Phase 2 du tour (", nomP2,"attaque)---") |
||||
|
defP1 = P1.jet_defense() |
||||
|
atkP2 = P2.jet_attaque() |
||||
|
if atkP2 > defP1: |
||||
|
perte_pdv = -randint(1,8) |
||||
|
print(nomP2, "attaque", nomP1, "!!!", nomP1,"vient de perdre", -perte_pdv, "point(s) de vie.") |
||||
|
P1.change_pdv(perte_pdv) |
||||
|
if P1.pdv > 0: |
||||
|
pdv1 = (P1.pdv) |
||||
|
c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 1", (pdv1,)) |
||||
|
conn.commit() |
||||
|
else: |
||||
|
pdv1 = 0 |
||||
|
c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 1", (pdv1,)) |
||||
|
conn.commit() |
||||
|
else: |
||||
|
perte_pdv = -randint(1,4) |
||||
|
print(nomP1, "arrive à se défendre de l'attaque de", nomP2, "!!!", nomP2,"vient de perdre", -perte_pdv, "point(s) de vie.") |
||||
|
P2.change_pdv(perte_pdv) |
||||
|
if P2.pdv > 0: |
||||
|
pdv2 = (P2.pdv) |
||||
|
c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 2", (pdv2,)) |
||||
|
conn.commit() |
||||
|
else: |
||||
|
pdv2 = 0 |
||||
|
c.execute("UPDATE Perso SET pdv = (?) WHERE num_joueur = 2", (pdv2,)) |
||||
|
conn.commit() |
||||
|
P1.affiche_caracteristiques() |
||||
|
P2.affiche_caracteristiques() |
||||
|
if P1.pdv > 0 and P2.pdv <= 0: |
||||
|
P1.change_exp(1) |
||||
|
print("Le joueur", nomP1, "a gagné.") |
||||
|
elif P1.pdv <= 0 and P2.pdv > 0: |
||||
|
P2.change_exp(1) |
||||
|
print("Le joueur", nomP2, "a gagné.") |
||||
|
|
||||
|
print("-----------------------------") |
||||
|
if P1.pdv > 0 and P2.pdv > 0: |
||||
|
input("~~~Veuillez appuyer sur Entrée~~~") |
||||
|
print(" ") |
||||
|
|
||||
|
conn.close() |
Loading…
Reference in new issue