Permalänk
Medlem

Python, gissa spelet!

Hej,

Jag försöker skriva ett litet spel som man helt enkelt ska gissa rätt nummer med så få gissningar som möjligt och sedan ska allting sparas till ett highscore. Problemet är med highscoren så efter mycket om och men fick jag lite hjälp av en kompis, som gav mig koden till hur man gör highscoret, men jag vet inte hur jag ska länka det till min nuvarande kod.
Vore jättetacksam om någon kunde hjälpa mig med denna feat.

#!/usr/bin/env python import random import sys ####sorted(list()) #### def gissa(randoms,gissare): if gissare == randoms: print "Korrekt svar, du gissade ", randoms return True elif gissare < randoms: print "Det ar mindre an talet" return False elif gissare > randoms: print "Det ar storre an talet" return False def highscore(): lista = [] Hscore = 'aye' high = open('highscore.txt', 'r+') for entry in high.readlines(): lista.append(entry.replace('\n','')) high.close() sorterad = sorted(lista) if len(lista) >=11: high = open('highscore.txt', 'w') for i in range(10): high.write(sorterad[i]+'\n') high.close() Hscore = 'ladda' if Hscore== 'ladda': highscore() else: print '---------------------------' print '|Ar du bast eller samast? |' print '|-------------------------|' print '\n'.join(sorterad) ########################################## def main(): randoms = random.randint(1,100) namn = raw_input('Skriv ditt namn: ') gissare = int(raw_input(' GISSAAAA: ')) print randoms antalgissningar = 1 while gissa(randoms,gissare) == False: antalgissningar += 1 gissare = int(raw_input(' GISSAAAA: ')) print "Du gissade sa har manga ganger: ", antalgissningar if __name__ == '__main__': main()

Visa signatur

Intel Core i5 4670K
770 GTX
ASRock Z87E-ITX mITX
Minne 16 GB @1600 Mhz

Permalänk
Medlem

En så tydlig modul som en highscorelista kan du ha i en egen klass. Om man vill göra det enkelt för sig så kan man använda pickle, som inte på något vis är supersäkert men i alla fall, för att spara ner python-strukturer direkt. T.ex.

import pickle class HS: hlist = [] def save(self, filename="high.lst"): pickle.dump(self.hlist, open(filename, 'wb')) def load(self, filename="high.lst"): try: self.hlist = pickle.load(open(filename,'rb')) except: pass def print_list(self): for score in self.hlist: print "Name: %s Score: %d"%(score['name'], score['score']) def insert_score(self, new_score): idx = 0 for i,score in enumerate(self.hlist): idx = i if new_score['score'] < score['score']: break self.hlist.insert(idx, new_score)

Denna kan du nu använda enligt följande:
1) Börja med att skapa en instans av klassen

my_list = HS()

2) Ladda highscore från en fil:

my_list.load("best_scores.best")

3) För varje avklarat spel lägg in poängen i listan:

my_list.insert_score({"name":"Spelarnamnet", "score":321})

4) Printa listan:

my_list.print_list()

5) Innan spelet stängs ner så spar listan

my_list.save("best_scores.best")

Se om du inte kan bygga en egen highscore-lista nu och sätt din prägel på det hela.

Visa signatur

weeeee

Permalänk
Medlem

Tack för hjälpen!
Ska sätta mig och koda nu.

Visa signatur

Intel Core i5 4670K
770 GTX
ASRock Z87E-ITX mITX
Minne 16 GB @1600 Mhz