Olen koodaamassa Python 2.7.2:lla tekstipohjaista roolipeliä. Muuten toimii tähän asti ihan hyvin, mutta minun pitäisi saada taistelutilanteessa peli toimimaan siten, että vastustaja menettää jonkinlaisen määrän HP:ta, riippuen käytössä olevasta aseesta. Olin tehnyt sen kirjoittamalla tälläisen koodin:
ase = kirves if ase == "kirves": hyokkaus == "3" if ase == "miekka": hyokkaus == "4"
sitten taistelussa:
vihollinenhp -= hyokkaus/"hyokkaus"
Mutta tuo ei toiminut, joten miten saisin tehtyä vastaavanlaisen, mutta toimivan systeemin?
Toivottavasti tajusitte tuosta jotakin.
Mod. lisäsi kooditagit!
1. Älä aseta numeroarvoja lainausmerkkien sisään. Nyt ne ovat merkkijonoja ja niillä ei voi laskea (Vai voiko Pythonissa?).
2. Laita merkkijonot lainausmerkkeihin.
3. Älä jaa merkkijonolla. Nyt jaat muuttujan hyokkaus merkkijonolla hyokkaus.
4. Muuttujien arvot asetetaan =-operaattorilla, == on vertailuun.
ase = "kirves" if ase == "kirves": hyokkaus = 3 if ase == "miekka": hyokkaus = 4 vihollinenhp -= hyokkaus
Muokkaus. -tossu-:n antama koodi on varmasti kätevämpi, jos aseita on useampia. Muuten joudut toistamaan samaa if-lausetta jokaisen aseen kohdalla.
Nykyisessä koodissasi ei ole paljoa järkeä, enkä edes tajua täysin, miten olet koittanut ongelmaa ratkaista. Kokeile kuitenkin jotain tällaista:
aseiden_tehot = { "kirves" : 3, "miekka" : 4 } #taistelussa: vihollinenhp -= aseiden_tehot [ase]
Mikäli vihollisia on useampia, tai vihollisella on HP:n lisäksi muutamaa enemmän ominaisuuksia, kannattaa niiden tiedot tallentaa taulukkoon.
Macro kirjoitti:
... Nyt ne ovat merkkijonoja ja niillä ei voi laskea (Vai voiko Pythonissa?).
Ei voi laskea siten kuin tässä on tarkoitus. Merkkijonon voi kertoa kokonaisluvulla, mutta se on eri asia. Esim. "ha" * 3 tuottaa "hahaha"
Itse ongelmaan tossun ratkaisu on hyvä.
Lisäksi saat variaatiota aseen tehoon, kun laitat aseille myös minimi "tehon", ja arvot (miten se Pythonissa meneekään) luvun minimin ja maksimin väliltä.
Esim. kirves 1-5, miekka 3-4.
En tiedä mikä nyt ei toimi, mutta kirjoitin kaiken -tossu-n antaman ohjeen mukaan, mutta Python valittaa siitä, ettei aseiden_tehot ole määritelty. :(
Annahan koodia sillä ei tuosta voi oikein sanoa missä se virhe on. Jos veikkamaan lähdetään niin olisiko kirjoitusvirhe jossain?
Lebe80 kirjoitti:
Lisäksi saat variaatiota aseen tehoon, kun laitat aseille myös minimi "tehon", ja arvot (miten se Pythonissa meneekään) luvun minimin ja maksimin väliltä.
Esim. kirves 1-5, miekka 3-4.
Tässä yksi mahdollinen tapa:
import random aseiden_tehot = { "kirves" : [1, 5] } vihollinenhp -= random.randint(*aseiden_tehot["kirves"])
Vai laitotkohan taulukon määrittelyn liian myöhään?
Aihe on jo aika vanha, joten et voi enää vastata siihen.