Tämä ensimmäinen tekstiseikkailuni on todella sotkuinen, enkä tiedä kaikkia hienouksia, mutta voisiko joku jelppiä tämän korjaamisessa. Tein peliin koodin joka tallentaa hahmon tiedot erilliselle tekstitiedostolle, mutta ohjelma ei osaa lukea tiedostolta hahmon rotua, vain nimen.
#_*_ coding: latin-1 _*_ sana = "" while sana <> "python": sana = raw_input ("kirjoita tunnussana: ") print "Tervetuloa!" import time time.sleep (1) print "Pelin tekijä:" time.sleep (1) print "lare290" print "" time.sleep (1) uusi = raw_input("Oletko uusi käyttäjä (k/e)? ") if uusi == "k": nimi = raw_input("Nimi hahmollesi: ") tiedosto = open("tiedot.txt", "w") tiedosto.write(nimi + "-") tiedosto.close() print "Kiitos tiedoista!" rotu = raw_input ("Oletko haltia, kääpiö, vai ihminen?") tiedosto = open("tiedot.txt", "a") tiedosto.write(rotu) tiedosto.close() if rotu == "haltia": print "Olet siis hoikka, kaunis haltia." print "Peli alkaa!" elif rotu == "kääpiö": print "Olet siis vahva, lyhyt kääpiö." print "Peli alkaa!" elif rotu == "ihminen": print "Olet siis tylsä, tavallinen ihminen." print "Peli alkaa!" else: tiedosto = open("tiedot.txt", "r") nimi = tiedosto.readline().strip() tiedosto.close() #tässä kohtaa peli kaatuu ja näyttää tämän viestin: Traceback (most recent call last): # File "C:\Python27\tekstiseikkailu.py", line 39, in <module> # print "Tervetuloa, " + rotu + nimi + "!" #NameError: name 'rotu' is not defined print "Tervetuloa, " + rotu + nimi + "!" print "Peli alkaa!"
EDIT: alkoi ketuttaa sen verran, että poistin tallennusmahdollisuuden. Joten tässä uusi koodi
#_*_ coding: latin-1_*_ import time print "Pelin tekijä:" time.sleep (1) print "lare290" print "" time.sleep (1) nimi = raw_input ("Nimi hahmollesi: ") rotu = raw_input ("Oletko haltia, kääpiö vai ihminen?") if rotu == "haltia": print "Olet siis kaunis haltia." elif rotu == "kääpiö": print "Olet siis vahva, lyhyt kääpiö." elif rotu == "ihminen": print "Olet siis tavallinen ihminen." print "Tervetuloa, " + rotu + " " + nimi + "!" print "Peli alkaa!"
Näytäpä nyt se rivi, missä luet rotutiedon tiedostosta. Aloitetaan siitä. Josset saa koodiasi toimimaan, niin sitten tulosta muuttujat, joihin olet lukenut tiedostosta tietoja ja vertaa niitä siihen, mitä tiedostossa todellisuudessa on. Siitä osaat tehdä johtopäätelmiä.
Et missään vaiheessa lue tiedostosta rotua jos kyseessä on vanha käyttäjä, luet nimi -muuttujaankin vain yhden rivin mistä poistat white spacet.
niin tuota olen ihan nyyppä, en edes ymmärrä mitä yritätte sanoa :D voisitko sanoa sen niin että ihan vähän pythonia ja javaa osaava maalaisjuntti ymmärtää?
Koodissasi luetaan tiedostosta vain nimi mutta ei rotua. Tätä ei voi juuri selvemmin sanoa, ja itsekin jo tiesit tämän. Jos et ymmärrä, missä kohti koodissa luetaan tiedostoa tai miten voisit lukea siitä toisenkin rivin, sinun pitää mennä lukemaan lisää Python-oppaita ja oikeasti opetella ja ymmärtää ne asiat eikä vain lukea ja kopioida. (Lisäksi tiedot pitäisi tallentaa eri riveille; nyt tiedostoon tallentuu esimerkiksi "Pekka-kääpiö" yhdelle riville.)
Muista, että ohjelmat eivät ”osaa” mitään vaan tekevät ainoastaan täsmälleen sen, mitä koodissa käsketään. Jos käsket väärin tai vajavaisesti, ohjelma toimii väärin.
Ahaa kiitti metabolix nyt meikä ymmärtää
Aihe on jo aika vanha, joten et voi enää vastata siihen.