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.
154 lines
6.8 KiB
154 lines
6.8 KiB
10 months ago
|
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")
|