Je fais un jeu un clicker et dans celui ci je veux ajouter des sauvegardes avec csv. J'ai donc rajouté un fichier csv qui met ma variable fric sous cette forme, exemple: fric=685 donc ma liste sera sous cette forme["6","8","5"], j'ai donc "bricolé" pour essayer d'extraire ceci pour n'en faire qu'un seul chiffre mais je n'y arrive pas, également j'ai du mal a extraire la liste.
PS: je sais que mon code est dégueulasse patati patata mais je débute
Voici mon code(python 3.6):
import csv
import tkinter
from tkinter import *
import random
import os
# Variables
fric = 0
fpc = 1
fps = 0
TITAN = 0
GOD = 0
color = '#ffffff'
reducfpc = 0
prixfpcvar = 20
nbreachatcolor = 0
nbreachatgod = 0
nbretourgod = 0
upgradewindow = ""
tktgod = "+ 1 fpc (20$)"
_fricpopup = 0
# fonction de la fenetre principale
def quitwindow():
global fric, score, writer, listfriccreation
with open("score.txt", "w") as score:
writer = csv.writer(score)
listfriccreation = list(str(fric)) #ici on enregistre dan sune liste le résultat puis on quitte le jeu
writer.writerow(listfriccreation)
print(str(listfriccreation))
root.quit()
def click():
global fric, fpc, _god, _titan, TITAN, GOD, color, root, button, fpc1, gradetitan, gradegod, _fricpopup
fric += fpc
_fric.config(text=fric)
_fricpopup.config(text="")
_fricpopup.config(text=fric)
if _god or _titan == "Sorry bro :/":
_god.config(text="pas de grade")
_titan.config(text="pas de grade")
if TITAN == 1:
color = "#"
for i in range(6):
color = color + str(
random.choice(["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]))
root.config(bg=color)
frame.config(bg=color)
button.config(bg=color)
fpc1.config(bg=color)
gradetitan.config(bg=color)
gradegod.config(bg=color)
# fenetre
root = Tk()
root.title("ClickIt")
root.configure(bg='#a3774a')
frame = Frame(root, bg='#a4774a')
frame.pack(expand=YES)
# aller chercle l'inmage du cookie et l'applique a la variable photo
photo = tkinter.PhotoImage(file=r"C:\8\cookie\cookiechoco.png")
# bouton
button = Button(frame, text="clique >:(", font=("courrier", 40), command=click, bg=color, image=photo)
button.pack(pady=50, fill=X)
# label
_fric = Label(frame, text=fric, fg='white', bg='#582900')
_fric.pack()
# on essaye d'aller lire les infos, dans le cas ou le fichier n'est pas crée on le crée sinn on le lit et on l'affiche sur le label _fric
if os.path.isfile("fric.txt"):
global listfriccreation
with open("fric.txt", "r") as score:
myreader = csv.reader(score, delimiter=",")
listtest = myreader[0]
recollagedelaliste = ""
for i in listtest:
recollagedelaliste += str(i)
print(recollagedelaliste)
_fric.config(text=recollagedelaliste)
else:
with open("fric.txt", "w") as score:
writer = csv.writer(score)
writer.writerow([fric])
# [Menu bar
menubar = Menu(root)
file_menu = Menu(menubar, tearoff=0)
# premier menu]
file_menu.add_command(label="Click")
file_menu.add_command(label="upgrades",)
file_menu.add_command(label="quitter", command=root.quit)
menubar.add_cascade(label="Outils", menu=file_menu)
# fonction qui crée la pop up et tous ses buttons et composants
def createwindow():
global _fpc, _god, _titan
global upgradewindow
global _fric
global _fricpopup
global tkinter
global TITTAN
root.withdraw()
def powerfulcolor():
global fric
global _titan
global TITAN
global reducfpc
global nbreachatcolor
global TITAN
if fric > 10 and nbreachatcolor == 0:
upgradewindowerror.config(text="GG new grade unlock titan")
TITAN = 1
nbreachatcolor += 1
fric -= 10
_fricpopup.config(text=fric)
_fric.config(text=fric)
elif nbreachatcolor >= 1:
upgradewindowerror.config(text="Déjà acheté")
else:
upgradewindowerror.config(text="Sorry bro :/")
return TITTAN
def add1fpc():
global fpc
global fric
global reducfpc
if reducfpc == 1 and fric >= 10:
fric -= 10
fpc += 1
_fric.config(text=fric)
elif reducfpc == 0 and fric >= 20:
fric -= 20
fpc += 1
_fric.config(text=fric)
_fricpopup.config(text=fric)
else:
upgradewindowerror.config(text="pas assez de fric :/")
_fpc.config(text=fpc)
def buygod():
global GOD
global fric
global reducfpc
global nbretourgod
global _fricpopup
if fric > 10 and nbretourgod == 0:
upgradewindow.config(text="grade débloqué")
GOD = "ok"
reducfpc = 1
nbretourgod += 1
txtgod = "+ 1 fpc (10 $)"
fric -= 10
_fricpopup.config(text=fric)
_fric.config(text=fric)
elif nbretourgod >= 1:
upgradewindowerror.config(text="Déjà acheté")
else:
upgradewindowerror.config(text="Sorry bro :/")
def backtocookie():
upgradewindow.withdraw()
root.deiconify()
# créé la pop up
upgradewindow = tkinter.Toplevel(root)
upgradewindow.geometry("1000x1000")
upgradewindow.config(bg='#a4774a')
label = Label(upgradewindow, text="UPGRADES")
label.pack()
# création de la menubar
menubarpopup = Menu(upgradewindow)
file_menupopup = Menu(menubarpopup, tearoff=0)
# premier menu
file_menupopup.add_command(label="Click", command=backtocookie)
file_menupopup.add_command(label="upgrades")
file_menupopup.add_command(label="quitter le jeu", command=root.quit)
menubarpopup.add_cascade(label="Outils", menu=file_menupopup)
# frame de la pop-up
framepopuptxt = Frame(upgradewindow, bg='#a4774a')
framepopuptxt.pack()
framepopupfpc = Frame(upgradewindow, bg='#a4774a')
framepopupfpc.pack()
framepopupcolor = Frame(upgradewindow, bg='#a4774a')
framepopupcolor.pack()
framepopupprice = Frame(upgradewindow, bg='#a4774a')
framepopupprice.pack()
framepricecount = Frame(upgradewindow, bg='#a4774a')
framepricecount.pack()
# mettre les boutons
buttonpopupfpc = Button(framepopupfpc, text="+ 1 fpc", command=add1fpc, bg="#582900", fg='white')
buttonpopupfpc.pack(pady=50, fill=X)
buttonpopupcolor = Button(framepopupcolor, text="achète le grade powerfulcolor", command=powerfulcolor, bg='#582900', fg='white')
buttonpopupcolor.pack(pady=50, fill=X)
buttonpopupprice = Button(framepopupprice, text="Divise les prix par deux", command=buygod, bg="#582900", fg='white')
buttonpopupprice.pack(pady=50, fill=X)
# labels
_fpc = Label(framepopupfpc, text=fpc)
_fpc.pack()
_titan = Label(framepopupcolor, text="pas de grade", bg='#a4774a', fg='white')
_titan.pack()
_god = Label(framepopupprice, text="pas de grade", bg="#582900", fg='white')
_god.pack()
_txtpopup = Label(framepricecount, text=" VOUS POSSÉDEZ ACTUELLEMENT :", bg="#582900", fg='white')
_txtpopup.pack()
_fricpopup = Label(framepricecount, text=fric, bg="#582900", fg='white')
_fricpopup.pack()
upgradewindowerror = Label(framepricecount, text="", bg="#582900", fg='white')
upgradewindowerror.pack()
upgradewindow.config(menu=menubarpopup)
return TITTAN
# fin de la pop up
# création des frames(ne servent pas en partie)
# [Menu bar
menubar = Menu(root)
file_menu = Menu(menubar, tearoff=0)
# ]premier menu
file_menu.add_command(label="Click")
file_menu.add_command(label="upgrades", command=createwindow)
file_menu.add_command(label="quitter", command=quitwindow)
menubar.add_cascade(label="Outils", menu=file_menu)
root.config(menu=menubar)
# afficher la page
root.mainloop()
Pourquoi ne pas stocker le nombre sans le découper? Pourquoi 260 lignes de code dont beaucoup n'ont rien à voir pour montrer lire et écrire dans un CSV?
Si j’ai bien compris, tu veux transformer une liste du type ["1","3","5"] en entier, dans cet exemple 135.
Si c’est bien le cas, utilise mon_entier=int("".join(ma_liste))
Explications:
on concatène tous les éléments de la liste avec comme séparateur "", c’est à dire aucun séparateur, puis on tranforme le résultat, dans l’exemple "135" en entier avec int()
pensez à mettre un pouce en l'air si le message vous a aidé!
Bonjour, après un essai je me retrouve avec les mêmes erreurs que hier."TypeError: '_csv.reader' object is not subscriptable" lorsque j'éxecute mon script.Dans mon programme qui me permet de quitter la fenêtre et d'enregistrer la variable fric dans un fichier csv. Voici ce code
def quitwindow():
global fric, score, writer, listfriccreation
with open("score.txt", "w") as score:
writer = csv.writer(score)
listfriccreation = list(str(fric)) #ici on enregistre dan sune liste le résultat puis on quitte le jeu
writer.writerow(listfriccreation)
print(str(listfriccreation))
root.quit()
au démarrage mon programme crée un fichier csv pour la première fois si nécessaire ou sinon il lit le contenus.
Voici le code:
# on essaye d'aller lire les infos, dans le cas ou le fichier n'est pas crée on le crée sinn on le lit et on l'affiche sur le label _fric
if os.path.isfile("fric.txt"):
global listfriccreation
with open("fric.txt", "r") as score:
myreader = csv.reader(score, delimiter=",")
listtest = myreader[0]
recollagedelaliste=int("".join(listfriccreation))
print(recollagedelaliste)
_fric.config(text=recollagedelaliste)
else:
with open("fric.txt", "w") as score:
writer = csv.writer(score)
writer.writerow([fric])
Mais je n'arrive pas a le faire marcher
- Edité par RobinBONFILL1 20 décembre 2021 à 9:35:11
Le not subscriptable provient sans doute de la ligne 6: listtest = myreader[0] qui pourrait être remplacée par listtest = next(myreader).
Mais un fichier CSV pour stocker un nombre aavec autant de colonnes que de chiffres, c'est un peu surdimensionné: un simple fichier texte aurait suffit.
Merci énormément. Par la suite j'ai eu quelques autres erreurs que j'ai réussi a enlever maintenant mon programme fait des sauvegardes du score. Maintenant je vais m'attaquer a un moyen d'associer le score a un nom. Pour se connecter "sur un scession" pour dire. si jean se roconnecte je remet son score a 1245 par contre si une nouvelle personne se connecte on met son score a zéro.
CSV utilisation
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
pensez à mettre un pouce en l'air si le message vous a aidé!