2016-06-28 8 views
1

Dies ist ein Problem, das ich anscheinend nicht beheben kann. Ich bin ein sehr neuer Programmierer und ich liebe es zu programmieren, aber ich brauche Hilfe bei diesem extrem einfachen Kampfsystem, das mir sicher nichts ausmacht. Es ist nicht gut aussehend oder sauber, so dass alle Tipps, wie ich meinen Code kürzen könnte, auch sehr geschätzt werden.Repariere mein grundlegendes Lua Kampfsystem

local function battle() -- All of this is 100% unfinished, by the way 
    n = math.random(10) + 1 -- Everybody's HP, enemy HP randomly generated number from 10 to 100 
    enemyhp = 10*n 
    herohp = 100 
    io.write("Your HP: ") 
    io.write(herohp) 
    io.write(" ") 
    io.flush() 
    io.write("Enemy HP: ") 
    io.write(enemyhp) 
    io.write(" ") 
    io.flush() 
    if enemyhp <= 0 then 
    print("You won!") 
end 
local function attack() -- Attacking the enemy or running away 
    print("|Attack|Flee|") 
    input = io.read() 
    if input = "attack" then -- This is where my error is 
    attackdamage = math.random(51) 
    if attackdamage = 51 then 
     print("Critical Hit!") 
     enemyhp - 100 
    else 
     enemyhp - attackdamage 
     print("Enemy took ") 
     io.write(attackdamage) 
     io.write(" damage!") 
    elseif input = "flee" then 
    print("You ran away!") 
    end 
    end 
end 

Vielen Dank.

+0

'math.random (10)' erzeugt eine Zufallszahl zwischen 1 und 10 einschließlich, also, wenn Sie eine hinzufügen finden Sie eine Reihe erhalten, die entweder sein kann 2 oder 11 oder eine der Nummern in der Mitte. Auf diese Weise wird die HP des Feindes eine Zahl zwischen 110 und 20 sein. – user6245072

Antwort

0

Sie vermissen das Ende Ihres if Blocks. Es sollte

if enemyhp <= 0 then 
    print("You won!") 
end 

Zweites Problem ist die Linie, die Sie zu Punkt sein: Sie müssen statt einer Verwendung von zwei Gleichheitszeichen (==) vergleichen:

if input == "attack" then 

Dann, wenn Sie Wert auf einige Variablen zuweisen, Sie müssen ein Gleichheitszeichen verwenden. Sonst ist es nur Ausdruck ohne Bedeutung.

enemyhp = enemyhp - 100 

und dann die gleichen Fehler wiederholen (Sie einen zusätzlichen end am Ende zu haben). Vollständiger Code können Sie kompilieren/ausführen: http://ideone.com/dgPoZo

local function battle() -- All of this is 100% unfinished, by the way 
    n = math.random(10) + 1 -- Everybody's HP, enemy HP randomly generated number from 10 to 100 
    enemyhp = 10*n 
    herohp = 100 
    io.write("Your HP: ") 
    io.write(herohp) 
    io.write(" ") 
    io.flush() 
    io.write("Enemy HP: ") 
    io.write(enemyhp) 
    io.write(" ") 
    io.flush() 
    if enemyhp <= 0 then 
    print("You won!") 
    end 
end 
local function attack() -- Attacking the enemy or running away 
    print("|Attack|Flee|") 
    input = io.read() 
    if input == "attack" then -- This is where my error is 
    attackdamage = math.random(51) 
    if attackdamage == 51 then 
     print("Critical Hit!") 
     enemyhp = enemyhp - 100 
    else 
     enemyhp = enemyhp - attackdamage 
     print("Enemy took ") 
     io.write(attackdamage) 
     io.write(" damage!") 
    end 
    elseif input == "flee" then 
    print("You ran away!") 
    end 
end