You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

159 lines
7.0 KiB

### le programme n'est pas fonctionnel, problème avec les tuples (qui n'en sont pas) passés en paramètres
### dans les requètes SQL : c.execute("DELETE FROM personnage WHERE nom = ?", (player2.nom))
### note : 8.5/10
from random import randint
import sqlite3
import os
# A
if os.path.exists("Types.db"):
os.remove("Types.db")
conn = sqlite3.connect("Types.db")
c = conn.cursor()
c.execute("CREATE TABLE types(categorie TEXT, attaque INT, defense INT, item TEXT)")
c.execute("INSERT INTO types VALUES('Le Guerrier', 10, 8, 'Épée')")
c.execute("INSERT INTO types VALUES('Le Magicien', 10, 7, 'Baton')")
c.execute("INSERT INTO types VALUES('Le Voleur', 3, 9, 'Dague')")
c.execute("INSERT INTO types VALUES('L Elfe', 8, 10, 'Arc')")
conn.commit()
conn.close()
# A
# B
if os.path.exists("Personnages.db"):
os.remove("Personnages.db")
conn = sqlite3.connect("Personnages.db")
c = conn.cursor()
c.execute("CREATE TABLE personnage(nom TEXT, pdv INT, exp INT, cat TEXT, inventaire TEXT)")
conn.commit()
# B
import random
class Personnage:
def __init__(self,nom,exp,cat,inventaire):
self.nom=nom
self.pdv=20
self.exp=exp
self.cat=cat
self.inventaire=inventaire
c.execute("INSERT INTO personnage (nom, pdv, exp, cat, inventaire) VALUES (?, ?, ?, ?, ?)", (self.nom, self.pdv, self.exp, self.cat, ",".join(self.inventaire)))
conn.commit()
def jet_attaque(self):
de=randint(1,20)
attack=self.exp*gamedata[1][gamedata[0].index(self.cat)]
print(self.nom,self.cat,"lance le dé icosaèdre",chr(10),"Le nombre obtenu est",de,"Celui-ci est amplifié par la grande puissance de",self.nom,self.cat,"qui ajoute de",attack)
return attack+de
def jet_defense(self):
de=randint(1,20)
defense=self.exp*gamedata[2][gamedata[0].index(self.cat)]
print(self.nom,self.cat,"lance le dé icosaèdre",chr(10),"Le nombre obtenu est",de,"Celui-ci est amplifié par la grande puissance de",self.nom,self.cat,"qui ajoute de",defense)
return defense+de
def change_pdv(self,status):
loss=randint(1,status)
self.pdv=self.pdv-loss
print(self.nom,self.cat,"perd",loss,"points de vie")
def change_exp(self):
self.exp+=1
def affiche_caracteristiques(self):
print(self.nom,self.cat,chr(10),"Points de vie",self.pdv,"Expérience",self.exp)
def affiche_inventaire(self):
print("Voici votre inventaire")
for item in self.inventaire:
print(item)
def menu1(answer):
if answer=="help":
answer=5
try:
answer=int(answer)
except:
print("Entrez une réponse valide")
answer=0
if answer==5:
print(helpprofile)
back="invalid"
elif int(answer)>0 and int(answer)<5:
back=gamedata[0][answer-1]
else :
back="invalid"
return back
def interact(answer):
if answer=="help":
print("écrivez 'stats' pour afficher vos statistiques")
print("écrivez 'stock' pour afficher votre inventaire")
print("écrivez 'advers'pour avoir les statisiques de",player2.nom,player2.cat)
print("écrivez 'heal' pour utiliser votre potion et gagner 3 points de vie")
if answer=="stats":
player.affiche_caracteristiques()
if answer=="stock":
player.affiche_inventaire()
if answer=="advers":
player2.affiche_caracteristiques()
if answer=="heal" and player.inventaire.count("potion"):
player.inventaire.remove("potion")
player.pdv+=3
gamedata=[["Le Guerrier","Le Magicien","Le Voleur","L'Elfe"],[10,10,3,8],[8,7,9,10],["épée","baton","dague","arc"]]
veryrandomizednames=[["Nico","Manu","Rod"],["Desforêts","Delay","Cargnelutti"]]
exp=1
helpprofile="Encyclopédie :"+chr(10)+"Le Guerrier : --- Attaque 10 --- Défense 8 ---"+chr(10)+"Le Magicien : --- Attaque 10 --- Défense 7 ---"+chr(10)+"Le Voleur : --- Attaque 3 --- Défense 9 ---"+chr(10)+"L'Elfe : --- Attaque 8 --- Défense 10 ---"
print("Bienvenue dans The Elder Scrolls VII")
nom=input("Entrez votre nom : ")
print("Choisissez votre catégorie :",chr(10),"1)Le Guerrier",chr(10),"2)Le Magicien",chr(10),"3)Le Voleur",chr(10),"4)L'Elfe",chr(10),"entrez 'help' pour avoir le profil de chaque catégorie")
command=input("entrez un numéro (1 à 4) pour devenir membre de la catégorie correspondante : ")
command=menu1(command)
if command=="invalid":
while command=="invalid":
command=menu1(input())
cat=command
inventaire=[gamedata[3][gamedata[0].index(cat)]]
inventaire.append("potion")
print("Bonjour",nom,cat)
print("Entrez 'help' pour découvrir toutes vos fonctions")
player=Personnage(nom,exp,cat,inventaire)
while player.pdv>0:
nom=random.choice(veryrandomizednames[0])
cat=random.choice(gamedata[0])
inventaire=[gamedata[3][gamedata[0].index(cat)]]
player2=Personnage(nom,exp,cat,inventaire)
print("Voici",player2.nom,player2.cat)
while player.pdv>0 and player2.pdv>0:
interact(input())
attack1=player.jet_attaque()
defense2=player2.jet_defense()
if attack1>defense2:
print("Votre jet d'attaque est supérieur au jet de défense de l'adversaire (",attack1,"/",defense2,")")
player2.change_pdv(8)
else:
print("Votre jet d'attaque est inférieur au jet de défense de l'adversaire (",attack1,"/",defense2,")")
player.change_pdv(4)
c.execute("UPDATE personnage SET pdv = ?, inventaire = ?, exp = ? WHERE nom = ?", (player.pdv, ",".join(player.inventaire), player.exp, player.nom))
c.execute("UPDATE personnage SET pdv = ?, inventaire = ?, exp = ? WHERE nom = ?", (player2.pdv, ",".join(player2.inventaire), player2.exp, player2.nom))
conn.commit()
interact(input())
attack2=player2.jet_attaque()
defense1=player.jet_defense()
if attack2>defense1:
print("Votre jet de défense est inférieur au jet d'attaque' de l'adversaire (",attack2,"/",defense1,")")
player.change_pdv(8)
else:
print("Votre jet de défense est supérieur au jet d'attaque de l'adversaire (",attack2,"/",defense1,")")
player2.change_pdv(4)
c.execute("UPDATE personnage SET pdv = ?, inventaire = ?, exp = ? WHERE nom = ?", (player.pdv, ",".join(player.inventaire), player.exp, player.nom))
c.execute("UPDATE personnage SET pdv = ?, inventaire = ?, exp = ? WHERE nom = ?", (player2.pdv, ",".join(player2.inventaire), player2.exp, player2.nom))
conn.commit()
if player2.pdv<=0:
print("Vous avez vaincu",player2.nom,player2.cat)
print("Vous gagnez 1 point d'expérience et vos points de vie sont régénérés")
player.pdv=20
player.change_exp()
exp+=1
c.execute("DELETE FROM personnage WHERE nom = ?", (player2.nom))
c.execute("UPDATE personnage SET pdv = ?, inventaire = ?, exp = ? WHERE nom = ?", (player.pdv, ",".join(player.inventaire), player.exp, player.nom))
conn.commit()
print("Vous avez été vaincu par le Seigneur",veryrandomizednames[1][veryrandomizednames[0].index(player2.nom)])
print("FIN DU JEU")