Beste tweakers,
Ten eerste hoop ik dat ik deze vraag op de juiste plek stel, zo niet, excuses.
Ik ben een volledige leek op het gebied van programmeren, de enige ervaring die ik heb, heb ik opgedaan met TI-basic op mijn grafische rekenmachine. Dit voor iteratieve doeleinden op school. Puur hobbymatig wil ik leren programmeren, dit doe ik met de app sololearn en tegelijkertijd probeer ik de opgedane kennis te gebruiken om wat (nutteloze) programma's te maken. Ik heb gekozen voor python.
Op dit moment ben ik een boter, kaas en eieren spelletje aan het maken en loop ergens tegenaan. Ik wil een controlestap inbouwen waardoor de invoer van de speler (X of O) wordt vergeleken met de waarde in de lijst waar deze in geplaatst moet worden, dit om te voorkomen dat een vak meer dan 1 keer ingevuld kan worden. Dit doe ik als volgt: (complete code volgt onderaan)
if str(veld[ui]) == "X" or "O":
print("dit veld is reeds gebruikt")
continue
dit lijkt altijd waar te zijn want dit wordt altijd uitgevoerd.
Ik hoop dat iemand me wil uitleggen wat ik verkeerd doe, bij voorbaat dank!
ps: ik realiseer me dat dit programma natuurlijk veeeel efficienter geschreven zou kunnen worden en dat hoop ik ook te leren, echter stap voor stap. Commentaar is uiteraard wel welkom maar dan graag in de vorm van hints zodat ik zelf weer iets kan uitvogelen.
het programma:
#maakt een lijst met waarden welke het veld voorstelt
veld = ["1","2","3","4","5","6","7","8","9"]
#defineer een functie om het veld te maken
def mkvld():
#verdeel de lijst in drie rijen
rij1 = [veld[0],veld[1],veld[2]]
rij2 = [veld[3],veld[4],veld[5]]
rij3 = [veld[6],veld[7],veld[8]]
#geef de rijen weer
print(rij1)
print(rij2)
print(rij3)
#hoofdprogramma
#bepaal welke speler aan de beurt is
a = 0
#loop
while True:
#geef het veld weer
mkvld()
#bepaal welke speler aan de beurt is.
if a == 0:
print("speler X is aan de beurt")
teken = "X"
elif a == 1:
print("speler O is aan de beurt")
teken = "O"
#vraag de speler om input
ui = int(input(("voer het nummer van het veld in om een teken te plaatsen, typ 10 om te stoppen:"))) - 1
#stop het spel (wanneer de speler 10 heeft ingevoerd)
if ui == 9:
print("programma wordt gesloten")
break
#controleer of het veld nog beschikbaar is !!waarom werkt dit niet??!!
#print(veld[ui])
if str(veld[ui]) == "X" or "O":
print("dit veld is reeds gebruikt")
continue
#plaats het teken op de juiste plaats
veld[ui] = teken
#controleer of er een winnaar is en sluit af
#to do
#controleer of het veld vol is en sluit af
#to do
#wissel van speler
if a == 0:
a =+ 1
elif a == 1:
a = a - 1
Ten eerste hoop ik dat ik deze vraag op de juiste plek stel, zo niet, excuses.
Ik ben een volledige leek op het gebied van programmeren, de enige ervaring die ik heb, heb ik opgedaan met TI-basic op mijn grafische rekenmachine. Dit voor iteratieve doeleinden op school. Puur hobbymatig wil ik leren programmeren, dit doe ik met de app sololearn en tegelijkertijd probeer ik de opgedane kennis te gebruiken om wat (nutteloze) programma's te maken. Ik heb gekozen voor python.
Op dit moment ben ik een boter, kaas en eieren spelletje aan het maken en loop ergens tegenaan. Ik wil een controlestap inbouwen waardoor de invoer van de speler (X of O) wordt vergeleken met de waarde in de lijst waar deze in geplaatst moet worden, dit om te voorkomen dat een vak meer dan 1 keer ingevuld kan worden. Dit doe ik als volgt: (complete code volgt onderaan)
if str(veld[ui]) == "X" or "O":
print("dit veld is reeds gebruikt")
continue
dit lijkt altijd waar te zijn want dit wordt altijd uitgevoerd.
Ik hoop dat iemand me wil uitleggen wat ik verkeerd doe, bij voorbaat dank!
ps: ik realiseer me dat dit programma natuurlijk veeeel efficienter geschreven zou kunnen worden en dat hoop ik ook te leren, echter stap voor stap. Commentaar is uiteraard wel welkom maar dan graag in de vorm van hints zodat ik zelf weer iets kan uitvogelen.
het programma:
#maakt een lijst met waarden welke het veld voorstelt
veld = ["1","2","3","4","5","6","7","8","9"]
#defineer een functie om het veld te maken
def mkvld():
#verdeel de lijst in drie rijen
rij1 = [veld[0],veld[1],veld[2]]
rij2 = [veld[3],veld[4],veld[5]]
rij3 = [veld[6],veld[7],veld[8]]
#geef de rijen weer
print(rij1)
print(rij2)
print(rij3)
#hoofdprogramma
#bepaal welke speler aan de beurt is
a = 0
#loop
while True:
#geef het veld weer
mkvld()
#bepaal welke speler aan de beurt is.
if a == 0:
print("speler X is aan de beurt")
teken = "X"
elif a == 1:
print("speler O is aan de beurt")
teken = "O"
#vraag de speler om input
ui = int(input(("voer het nummer van het veld in om een teken te plaatsen, typ 10 om te stoppen:"))) - 1
#stop het spel (wanneer de speler 10 heeft ingevoerd)
if ui == 9:
print("programma wordt gesloten")
break
#controleer of het veld nog beschikbaar is !!waarom werkt dit niet??!!
#print(veld[ui])
if str(veld[ui]) == "X" or "O":
print("dit veld is reeds gebruikt")
continue
#plaats het teken op de juiste plaats
veld[ui] = teken
#controleer of er een winnaar is en sluit af
#to do
#controleer of het veld vol is en sluit af
#to do
#wissel van speler
if a == 0:
a =+ 1
elif a == 1:
a = a - 1