lua-users home
lua-l archive

Re: Learning Lua, encountered a little problem.

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Thanks, it worked like a charm. I did not knowed, that I have to call this before math.random().

On 03/21/2014 06:37 PM, Volodymyr Bezobiuk wrote:
[
You should call once math.randomseed() at the beginning before using math.random() with some kind of 'unpredictable' (different every program run) number as argument. math.randomseed(os.time()) does
the trick, usually...


On Fri, Mar 21, 2014 at 6:46 PM, frants85 <frants85@yahoo.com> wrote:
Hello, I became interrested in Lua and wanted to learn it. I came from Python and Ruby.
To learn the new language I have decided to make a small program, a roulette game, but I've encountered a small problem. My randomize function always returns the number 31, no matter what.
Here's the whole code. Thanks for any comments, I'm still learning and not too familiar with this language.

function menu()
--a welcome menu
print("Welcome to the Lua Roulette.")
repeat
print("Are you ready to start the game? (y/n)")
answer = io.read()
until answer == 'y' or answer == 'n'
return answer
end

function sleep(t)
--sleep function, to make the game more dramatic
os.execute("sleep " .. tonumber(t))
end

function randomize(r)
--returns a random number, always returns 31 no matter what.
print("The wheel is spinning...")
sleep(2)
r = math.random(36)
print("The ball has landed on the number " .. r .. ".\n")
return r
end

function calculate(r, money, bet, loc)
--This function is not finished yet
if type(tonumber(bet)) == "number" then
if loc == r then
money = money + (35 + bet)
return money
end
elseif loc == "manque" then
if r <= 1 and r >= 18 then
money = money + ((36 / 18) + bet)
return money
end
elseif loc == "passe" then
if r <= 19 and r >= 36 then
money = money + ((36 / 18) + bet)
return money
end
end
end

function game()
wheel = 0
chips = 150
bet = ""
betLoc = "" -- on which number did the player bet
repeat
print("Place your bets! You can bet on numbers((1-36)type 'number'), Manque(1-18),\n")
print(" Passe(19-36), red, black, even, odd or quit(q).\n")
print("Your current balance is " .. "$" .. tostring(chips))
betLoc = io.read()
if betLoc == "q" then
os.exit()
else
print("How many do you want to bet?\n")
bet = io.read()
bet = tonumber(bet)
chips = chips - bet
randomize(wheel)
calculate(wheel, chips, bet, betLoc)
end
until chips == 0
print("Sorry, you lost all your money.")
print("Do you want to play again? (y/n)\n")
--ask if the player wants to play again
local playagain = io.read()
if playagain == 'y' then
menu()
else
os.exit()
end
end

menu()
if answer == 'y' then
game()
else
os.exit()
end



AltStyle によって変換されたページ (->オリジナル) /