-
Notifications
You must be signed in to change notification settings - Fork 13
/
hlgame.lua
89 lines (83 loc) · 2.08 KB
/
hlgame.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
NUMRANGE = 100
MAXROUND = 5
math.randomseed(os.time())
function start(key, value)
value = tonumber(value)
if not value or value <= 0 then
return "error: invalid value"
end
if not _putkeep(key .. ":r", 1) then
return "error: already started"
end
local num = math.random(NUMRANGE)
_put(key .. ":m", value)
_put(key .. ":n", num)
return "Welcome, " .. key .. ".\n" ..
"The current number is " .. num .. ".\n" ..
"Your money is " .. value .. ".\n" ..
"Round 1 Bet!\n"
end
function high(key, value)
return do_bet(key, value, true)
end
function low(key, value)
return do_bet(key, value, false)
end
function over(key, value)
if _vsiz(key .. ":r") < 0 then
return "error: not started"
end
_out(key .. ":r")
_out(key .. ":m")
_out(key .. ":n")
return "Good Bye!"
end
function do_bet(key, value, ishigh)
value = tonumber(value)
if not value or value <= 0 then
return "error: invalid value"
end
local round = tonumber(_get(key .. ":r"))
if not round then
return "error: not started"
end
local money = tonumber(_get(key .. ":m"))
if round > MAXROUND or money < 1 then
return "error: already finished"
end
if value > money then
value = money
end
local num = tonumber(_get(key .. ":n"))
local newnum = math.random(NUMRANGE)
local cmp = "even"
local res = "lost"
if newnum > num then
cmp = "high"
if ishigh then
res = "won"
end
elseif newnum < num then
cmp = "low"
if not ishigh then
res = "won"
end
end
round = round + 1
if res == "won" then
money = money + value
else
money = money - value
end
_put(key .. ":r", round)
_put(key .. ":m", money)
_put(key .. ":n", newnum)
local call = "Round " .. round .. " Bet!\n"
if round > MAXROUND or money < 1 then
call = "Game Over!\n"
end
return "The current number is " .. newnum .. ".\n" ..
newnum .. ":" .. num .. " (" .. cmp .. ") ... You " .. res .. "!\n" ..
"Your money is " .. money .. ".\n" ..
call
end