Python Oyundaki istatistikler programı kapatınca siliniyor

404353

Decapat
Katılım
24 Aralık 2020
Mesajlar
869
Makaleler
2
Çözümler
1
import time
hak = 10
toplamoyun = 0
kazanilanoyun = 0
kaybedilenoyun = 0
dosya = "statics.txt"

print("""
______ __ ________ __ __
/ \ / | / | / | / |
/$$$$$$ | ______ __ __ $$/ $$$$$$$$/______ $$ |____ _____ ____ $$/ _______
$$ \__$$/ / \ / | / |/ | $$ | / \ $$ \ / \/ \ / |/ \
$$ \ $$$$$$ |$$ | $$ |$$ | $$ | $$$$$$ |$$$$$$$ |$$$$$$ $$$$ |$$ |$$$$$$$ |
$$$$$$ | / $$ |$$ | $$ |$$ | $$ | / $$ |$$ | $$ |$$ | $$ | $$ |$$ |$$ | $$ |
/ \__$$ |/$$$$$$$ |$$ \__$$ |$$ | $$ |/$$$$$$$ |$$ | $$ |$$ | $$ | $$ |$$ |$$ | $$ |
$$ $$/ $$ $$ |$$ $$ |$$ | $$ |$$ $$ |$$ | $$ |$$ | $$ | $$ |$$ |$$ | $$ |
$$$$$$/ $$$$$$$/ $$$$$$$ |$$/ $$/ $$$$$$$/ $$/ $$/ $$/ $$/ $$/ $$/ $$/ $$/
/ \__$$ |
$$ $$/
$$$$$$/
""")
while True:
import random
cevap = random.randint(1,100)
menuonay = float(input("""
Oyun başlasın mı? (1=Evet) (2=Hayır) (3=İstatistikler): """))

if menuonay == 3:
print("""

İstatistikler:
Toplam Oyun: {}
Kazanılan Oyun: {}
Kaybedilen Oyun: {}
""".format(toplamoyun,kazanilanoyun,kaybedilenoyun))

if menuonay == 2:
print("""

Oyun kapanıyor""")
time.sleep(1)
break


if menuonay == 1:
print("""

Zorluk seviyeleri:
1. Kolay
2. Orta
3. Zor""")
zorlukseviyesi = float(input("""

Bir zorluk seviyesi seç: """))
if zorlukseviyesi == 1:
hak = 10
elif zorlukseviyesi == 2:
hak = 5
elif zorlukseviyesi == 3:
hak = 3
print("""

Oyun başlıyor...""")
time.sleep(1)
while hak > 0:
tahmin = float(input("""
1 ile 100 arasından tahmin ettiğim sayı sence ne? (Kalan Hakkın {}): """.format(hak)))


if tahmin == cevap:
print("""

Tebrikler oyunu kazandın!! Doğru cevap {} sayısıydı. """.format(cevap))
time.sleep(2)
toplamoyun += 1
kazanilanoyun +=1
break


elif tahmin < cevap:
print("""
Daha büyük bir sayı gir.""")
hak -= 1

elif tahmin > cevap:
print("""
Daha küçük bir sayı gir.""")
hak -= 1
if hak == 0:
print("""

Malesef ki oyun bitti hakların tükendi ve kaybettin. Doğru sayı {} sayısıydı...""".format(cevap))
time.sleep(1)
toplamoyun += 1
kazanilanoyun += 1
continue
Merhabalar, oyunum bir kelime tahmin oyunu. Oyunun başında "3" yazarak bugüne kadar olan istatistiklerimizi görebiliyoruz. Toplam oynanan oyun, kazanılan oyun gibi. Fakat programı kapatınca bu istatistikler siliniyor yani sıfırlanıyor. Bunun için ne yapmalıyım?
 
Kapatıp tekrar çalıştırdığında istatistikler tekrar 0 olarak atanacağı için silinmesi normal. Bu yüzden istatistikleri farklı bir dosyaya (txt, json vs.) kaydetmesini ve başlangıçta oradan okumasını sağlayın.
 
Bunu nasıl yapacağım?

Kısaca anlatayım hocam.
İlk önce bir. JSON dosyası oluşturuyoruz (örneğin: İstatistik. json).
Ardından. JSON dosyasını açıyoruz ve şu kodu yazıyoruz:

JSON:
{
 "toplam-oyun": 0,
 "kazanilan-oyun": 0,
 "kaybedilen-oyun": 0
}

Bu kod kazanılan oyun kaybedilen oyun gibi değişkenlere sahip ve ":" işaretinden sonra da değerlerini görebilirsiniz. Puan olacağı için integer veri türünde giriyoruz.
Ardından bizim JSON kütüphanesine ihtiyacımız var. Bunu kodunuzun başına bu kodu ekleyerek yazabilirsiniz:

Python:
import json

Ardından puanları yüklemek için şu kodları yazıyoruz.

Python:
with open ("istatistik.json") as f:
 veri = json.load(f)
 k = veri["kazanilan-oyun"]
 #Daha yazabilrsin örneğin kaybedilen oyun...
 f.close()

Bu kodda ilk önce JSON dosyamızı açar ve verileri okur ardından değişkenleri atar ve dosyayı kapatır.
Son olarak dosyaya puanı yazamaya geçelim.

Python:
with open("istatistik.json", "r+") as f:
 veri = json.load(f)
 k = k+6 #kazandığın oyun değişkenini yada kaybettiği yaz.
 veri["kazanilan-oyun"] = k #jsondaki değişken = yukardaki değişken.
with open("istatistik.json", "w") as f:
 json.dump(data, f)

Burada dosyaya kayıt etme işlemimizi yapıyoruz.

Olabildiğince ayrıntılı ve net açıklamaya çalıştım buradaki öğrendiklerini koda geçir. Yardıma ihtiyacın olursa yardım etmeye hazırım :).
 
Son düzenleme:

Yeni konular

Geri
Yukarı