Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: (Python) Tekstiseikkailun hahmotietojen tallennus

lare290 [31.05.2013 08:11:48]

#

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!"

The Alchemist [31.05.2013 08:23:29]

#

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ä.

groovyb [31.05.2013 08:45:19]

#

Et missään vaiheessa lue tiedostosta rotua jos kyseessä on vanha käyttäjä, luet nimi -muuttujaankin vain yhden rivin mistä poistat white spacet.

lare290 [31.05.2013 13:41:27]

#

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ää?

Metabolix [31.05.2013 14:50:21]

#

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.

lare290 [31.05.2013 21:30:01]

#

Ahaa kiitti metabolix nyt meikä ymmärtää

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta