SHOW:
|
|
- or go back to the newest paste.
| 1 | -- Variables -- | |
| 2 | debug = "Debug" | |
| 3 | w, h = term.getSize() | |
| 4 | ||
| 5 | -- Values -- | |
| 6 | ||
| 7 | limeName = "Lime gem: " | |
| 8 | limeSell = 10 | |
| 9 | lblueName = "Light blue gem: " | |
| 10 | lblueSell = 15 | |
| 11 | yellowName = "Yellow gem: " | |
| 12 | yellowSell = 50 | |
| 13 | orangeName = "Orange gem: " | |
| 14 | orangeSell = 100 | |
| 15 | ||
| 16 | -- Stats -- | |
| 17 | money = 0 | |
| 18 | playerName = "nil" | |
| 19 | - | limeGems = 10 |
| 19 | + | limeGems = 0 |
| 20 | - | lblueGems = 10 |
| 20 | + | lblueGems = 0 |
| 21 | - | yellowGems = 10 |
| 21 | + | yellowGems = 0 |
| 22 | - | orangeGems = 10 |
| 22 | + | orangeGems = 0 |
| 23 | multi = 1 | |
| 24 | multiCost = 1000 | |
| 25 | -- End Stats -- | |
| 26 | ||
| 27 | -- End Variables -- | |
| 28 | -- Game -- | |
| 29 | ||
| 30 | function playGame() | |
| 31 | slc = 1 | |
| 32 | -- Variables -- | |
| 33 | minX = 13 | |
| 34 | maxX = w-1 | |
| 35 | minY = 2 | |
| 36 | maxY = h-1 | |
| 37 | maxGem = 20 | |
| 38 | spawnedGems = 0 | |
| 39 | bgColor = colors.black | |
| 40 | local gems = { }
| |
| 41 | ||
| 42 | function spawnGem() | |
| 43 | if spawnedGems >= maxGem then | |
| 44 | gemClick() | |
| 45 | else | |
| 46 | sleep(0.05) | |
| 47 | paintutils.drawPixel(newX, newY, color) | |
| 48 | spawnedGems = spawnedGems + 1 | |
| 49 | sleep(0.05) | |
| 50 | local Gem = {newX, newY, color}
| |
| 51 | table.insert(gems, Gem) | |
| 52 | gem() | |
| 53 | end | |
| 54 | end | |
| 55 | ||
| 56 | function gem() | |
| 57 | while true do | |
| 58 | newX = math.random(minX, maxX) | |
| 59 | newY = math.random(minY, maxY) | |
| 60 | colorNum = math.random(1,4) | |
| 61 | if colorNum == 1 then | |
| 62 | color = colors.orange | |
| 63 | sleep(0.1) | |
| 64 | spawnGem() | |
| 65 | elseif colorNum == 2 then | |
| 66 | color = colors.yellow | |
| 67 | sleep(0.1) | |
| 68 | spawnGem() | |
| 69 | elseif colorNum == 3 then | |
| 70 | color = colors.lime | |
| 71 | sleep(0.1) | |
| 72 | spawnGem() | |
| 73 | elseif colorNum == 4 then | |
| 74 | color = colors.lightBlue | |
| 75 | sleep(0.1) | |
| 76 | spawnGem() | |
| 77 | end | |
| 78 | end | |
| 79 | end | |
| 80 | ||
| 81 | function gemClick() | |
| 82 | slc = 1 | |
| 83 | while true do | |
| 84 | local e, p1, p2, p3 = os.pullEvent("mouse_click")
| |
| 85 | if slc == 1 then | |
| 86 | for i, v in ipairs(gems) do | |
| 87 | if p1 == 1 and v[1] == p2 and v[2] == p3 then -- A gem was LEFT clicked | |
| 88 | -- Remove the gem | |
| 89 | term.setBackgroundColor(bgColor) | |
| 90 | term.setCursorPos(v[1], v[2]) | |
| 91 | write(" ")
| |
| 92 | table.remove(gems, i) | |
| 93 | spawnedGems = spawnedGems - 1 | |
| 94 | if v[3] == colors.orange then | |
| 95 | orangeGems = orangeGems + (1*multi) | |
| 96 | elseif v[3] == colors.yellow then | |
| 97 | yellowGems = yellowGems + (1*multi) | |
| 98 | elseif v[3] == colors.lime then | |
| 99 | limeGems = limeGems + (1*multi) | |
| 100 | elseif v[3] == colors.lightBlue then | |
| 101 | lblueGems = lblueGems +(1*multi) | |
| 102 | end | |
| 103 | ||
| 104 | ||
| 105 | -- Spawn a new gem | |
| 106 | gem() | |
| 107 | ||
| 108 | elseif p1 == 1 and p2 >= 5 and p2 <= 10 and p3 == h-4 then | |
| 109 | frame2() | |
| 110 | end | |
| 111 | ||
| 112 | end | |
| 113 | sleep(0.05) | |
| 114 | end | |
| 115 | end | |
| 116 | end | |
| 117 | ||
| 118 | ||
| 119 | local function frame() | |
| 120 | term.clear() | |
| 121 | term.setBackgroundColor(colors.black) | |
| 122 | term.clear() | |
| 123 | paintutils.drawLine(12, 1, 12, h, colors.red) | |
| 124 | paintutils.drawLine(12, 1, w, 1, colors.red) | |
| 125 | paintutils.drawLine(12, h, w, h, colors.red) | |
| 126 | paintutils.drawLine(w, 1, w, h, colors.red) | |
| 127 | paintutils.drawLine(1, 1, 1, h, colors.red) | |
| 128 | paintutils.drawLine(1, 1, 1, h, colors.red) | |
| 129 | paintutils.drawLine(2, 1, 2, h, colors.red) | |
| 130 | paintutils.drawLine(3, 1, 3, h, colors.red) | |
| 131 | paintutils.drawLine(4, 1, 4, h, colors.red) | |
| 132 | paintutils.drawLine(5, 1, 5, h, colors.red) | |
| 133 | paintutils.drawLine(6, 1, 6, h, colors.red) | |
| 134 | paintutils.drawLine(7, 1, 7, h, colors.red) | |
| 135 | paintutils.drawLine(8, 1, 8, h, colors.red) | |
| 136 | paintutils.drawLine(9, 1, 9, h, colors.red) | |
| 137 | paintutils.drawLine(10, 1, 10, h, colors.red) | |
| 138 | paintutils.drawLine(11, 1, 11, h, colors.red) | |
| 139 | term.setBackgroundColor(colors.lime) | |
| 140 | term.setTextColor(colors.black) | |
| 141 | term.setCursorPos(1, 2) | |
| 142 | print("Multiplier:")
| |
| 143 | term.setCursorPos(1,4) | |
| 144 | print(multi) | |
| 145 | term.setCursorPos(5, h-4) | |
| 146 | print(" Exit ")
| |
| 147 | end | |
| 148 | ||
| 149 | ||
| 150 | ||
| 151 | ||
| 152 | frame() | |
| 153 | gem() | |
| 154 | ||
| 155 | end | |
| 156 | ||
| 157 | function sellGems() | |
| 158 | term.setBackgroundColor(1) | |
| 159 | term.clear() | |
| 160 | paintutils.drawPixel(1, 4, 32) | |
| 161 | paintutils.drawPixel(1, 6, 8) | |
| 162 | paintutils.drawPixel(1, 8, 16) | |
| 163 | paintutils.drawPixel(1, 10, 2) | |
| 164 | term.setBackgroundColor(1) | |
| 165 | term.setCursorPos(1, 2) | |
| 166 | print("Money: "..money)
| |
| 167 | term.setCursorPos(3, 4) | |
| 168 | print(limeName ..limeGems) | |
| 169 | term.setCursorPos(3, 6) | |
| 170 | print(lblueName ..lblueGems) | |
| 171 | term.setCursorPos(3, 8) | |
| 172 | print(yellowName ..yellowGems) | |
| 173 | term.setCursorPos(3, 10) | |
| 174 | print(orangeName ..orangeGems) | |
| 175 | term.setCursorPos(3, 12) | |
| 176 | print("Back")
| |
| 177 | term.setCursorPos(w-25, 5) | |
| 178 | print("Upgrades Cost")
| |
| 179 | term.setCursorPos(w-25, 7) | |
| 180 | print("+1 Multiplier "..multiCost)
| |
| 181 | while true do | |
| 182 | event, but, x, y = os.pullEvent("mouse_click")
| |
| 183 | if event == "mouse_click" then | |
| 184 | if but == 1 and x >= 3 and x <= 13 and y == 4 then | |
| 185 | money = limeGems*limeSell + money | |
| 186 | limeGems = 0 | |
| 187 | sellGems() | |
| 188 | elseif but == 1 and x >= 3 and x <= 18 and y == 6 then | |
| 189 | money = lblueGems*lblueSell+money | |
| 190 | lblueGems = 0 | |
| 191 | sellGems() | |
| 192 | elseif but == 1 and x >= 3 and x <= 14 and y == 8 then | |
| 193 | money = yellowGems*yellowSell+money | |
| 194 | yellowGems = 0 | |
| 195 | sellGems() | |
| 196 | elseif but == 1 and x >= 3 and x <= 14 and y == 10 then | |
| 197 | money = orangeGems*orangeSell+money | |
| 198 | orangeGems = 0 | |
| 199 | sellGems() | |
| 200 | elseif but == 1 and x >= 3 and x <= (w-25)+14 and y == 7 then | |
| 201 | if money >= multiCost then | |
| 202 | money = money-multiCost | |
| 203 | multi = multi+1 | |
| 204 | multiCost = multiCost*2 | |
| 205 | sellGems() | |
| 206 | end | |
| 207 | elseif but == 1 and x >= 3 and x <= 7 and y == 12 then | |
| 208 | frame2() | |
| 209 | end | |
| 210 | end | |
| 211 | end | |
| 212 | end | |
| 213 | ||
| 214 | ||
| 215 | ||
| 216 | function frame2() | |
| 217 | slc = 0 | |
| 218 | term.setBackgroundColor(colors.white) | |
| 219 | term.clear() | |
| 220 | term.setCursorPos(math.floor(w-string.len("Logged in as: "..playerName))/2, 2)
| |
| 221 | print("Logged in as: "..playerName )
| |
| 222 | paintutils.drawPixel(1, 4, 32) | |
| 223 | paintutils.drawPixel(1, 6, 8) | |
| 224 | paintutils.drawPixel(1, 8, 16) | |
| 225 | paintutils.drawPixel(1, 10, 2) | |
| 226 | term.setBackgroundColor(1) | |
| 227 | term.setCursorPos(3, 4) | |
| 228 | print(limeName ..limeGems) | |
| 229 | term.setCursorPos(3, 6) | |
| 230 | print(lblueName ..lblueGems) | |
| 231 | term.setCursorPos(3, 8) | |
| 232 | print(yellowName ..yellowGems) | |
| 233 | term.setCursorPos(3, 10) | |
| 234 | print(orangeName ..orangeGems) | |
| 235 | term.setBackgroundColor(32) | |
| 236 | term.setCursorPos(10, 15) | |
| 237 | print("Play")
| |
| 238 | term.setCursorPos(20, 15) | |
| 239 | print("Sell Gems")
| |
| 240 | while true do | |
| 241 | event, button, x, y = os.pullEvent("mouse_click")
| |
| 242 | if event == "mouse_click" then | |
| 243 | if slc == 0 then | |
| 244 | if x >= 10 and x <= 15 and y == 15 and button == 1 then | |
| 245 | term.clear() | |
| 246 | playGame() | |
| 247 | break | |
| 248 | elseif x >= 20 and x <= 30 and y == 15 and button == 1 then | |
| 249 | sellGems() | |
| 250 | end | |
| 251 | elseif slc == 1 then | |
| 252 | if x >= 5 and x <= 10 and y == h-4 and button == 1 then | |
| 253 | slc = 0 | |
| 254 | frame2() | |
| 255 | end | |
| 256 | end | |
| 257 | end | |
| 258 | end | |
| 259 | end | |
| 260 | ||
| 261 | function game() | |
| 262 | term.clear() | |
| 263 | term.setBackgroundColor(1) | |
| 264 | term.setTextColor(32768) | |
| 265 | term.clear() | |
| 266 | term.setCursorPos(math.floor(w-string.len("Name: "))/2, 2)
| |
| 267 | write("Name: ")
| |
| 268 | playerName = read() | |
| 269 | if playerName == "" then | |
| 270 | game() | |
| 271 | else | |
| 272 | frame2() | |
| 273 | end | |
| 274 | end | |
| 275 | ||
| 276 | -- End Functions -- | |
| 277 | ||
| 278 | game() |