mirror of
https://github.com/LDDestroier/CC/
synced 2025-01-23 07:26:55 +00:00
Added timeout exit for player 2
This commit is contained in:
parent
0ddaadb23d
commit
49c703c855
165
tron.lua
165
tron.lua
@ -198,12 +198,12 @@ local tsv = function(visible)
|
||||
end
|
||||
end
|
||||
|
||||
local deepCopy
|
||||
deepCopy = function(tbl, ...)
|
||||
local copyTable
|
||||
copyTable = function(tbl, ...)
|
||||
local output = {}
|
||||
for k,v in pairs(tbl) do
|
||||
if type(v) == "table" then
|
||||
output[k] = deepCopy(v)
|
||||
output[k] = copyTable(v)
|
||||
else
|
||||
output[k] = v
|
||||
end
|
||||
@ -214,15 +214,12 @@ deepCopy = function(tbl, ...)
|
||||
return output
|
||||
end
|
||||
|
||||
grid = deepCopy(initGrid)
|
||||
grid = copyTable(initGrid)
|
||||
|
||||
local you = 1
|
||||
local nou = 2
|
||||
local you, nou = 1, 2
|
||||
|
||||
local keysDown = {}
|
||||
local netKeysDown = {}
|
||||
local lastDirectionPressed
|
||||
local netLastDirectionPressed
|
||||
local keysDown, netKeysDown = {}, {}
|
||||
local lastDirectionPressed, netLastDirectionPressed
|
||||
|
||||
-- the scrolling of the screen
|
||||
local scrollX = 0
|
||||
@ -344,6 +341,44 @@ local images = {
|
||||
" 8 0 00 0 0 7",
|
||||
" 8 00000000 0888877",
|
||||
},
|
||||
},
|
||||
timeout = {
|
||||
{
|
||||
"",
|
||||
"
",
|
||||
"
",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"
",
|
||||
" ",
|
||||
" ",
|
||||
},
|
||||
{
|
||||
"00000000000000ff0000000f",
|
||||
"0fff000fff000ff0ff00f000",
|
||||
"0ffffffffff00f000f00ffff",
|
||||
" fffff0ffff00f0f0f00ffff",
|
||||
" 000ff000000000f00000000",
|
||||
" 000000f0ff0ff0000f",
|
||||
" 0f00f0ffffff000f00",
|
||||
" 0ff0f0ffffff7f0f0",
|
||||
" 0ffff0ffffff7f0f0",
|
||||
" 000000000000ff000",
|
||||
},
|
||||
{
|
||||
"ffffffffffffff00fffffff0",
|
||||
" 0f0fff0f0ffffffffffffff",
|
||||
" 0f0ff00f00ffffffffff000",
|
||||
" 0f0fffffffffffffffffff0",
|
||||
" fffffffffffffffffffffff",
|
||||
" ffffff0f00f00ffff0",
|
||||
" ffffff0f00f0ffffff",
|
||||
" ff0fff0f00f0fffff",
|
||||
" ffffff0ffff0fffff",
|
||||
" fffffffffffffffff",
|
||||
},
|
||||
}
|
||||
}
|
||||
for k,v in pairs(images) do
|
||||
@ -419,10 +454,6 @@ for k,v in pairs(control) do
|
||||
revControl[v] = k
|
||||
end
|
||||
|
||||
-- keeps track of where you are
|
||||
local gamemode = ""
|
||||
|
||||
|
||||
local gridFore, gridBack
|
||||
if squareGrid then
|
||||
gridFore = {
|
||||
@ -551,22 +582,22 @@ local drawGrid = function(x, y, onlyDrawGrid, useSetVisible)
|
||||
bg[3][sy]
|
||||
)
|
||||
end
|
||||
if doDrawPlayerNames and (not onlyDrawGrid) then
|
||||
for i = 1, #player do
|
||||
termsetTextColor(player[i].color[1])
|
||||
adjX = player[i].x - (scrollX + scrollAdjX) - mathfloor(#player[i].name / 2)
|
||||
adjY = player[i].y - (scrollY + scrollAdjY) - 2
|
||||
for cx = adjX, adjX + #player[i].name do
|
||||
if doesIntersectBorder(adjX + (scrollX + scrollAdjX), adjY + (scrollY + scrollAdjY)) then
|
||||
termsetBackgroundColor(tocolors[grid.edgecol])
|
||||
else
|
||||
termsetBackgroundColor(tocolors[grid.voidcol])
|
||||
end
|
||||
termsetCursorPos(cx, adjY)
|
||||
termwrite(player[i].name:sub(cx-adjX+1, cx-adjX+1))
|
||||
end
|
||||
end
|
||||
end
|
||||
if doDrawPlayerNames and (not onlyDrawGrid) then
|
||||
for i = 1, #player do
|
||||
termsetTextColor(player[i].color[1])
|
||||
adjX = player[i].x - (scrollX + scrollAdjX) - mathfloor(#player[i].name / 2)
|
||||
adjY = player[i].y - (scrollY + scrollAdjY) - 2
|
||||
for cx = adjX, adjX + #player[i].name do
|
||||
if doesIntersectBorder(adjX + (scrollX + scrollAdjX), adjY + (scrollY + scrollAdjY)) then
|
||||
termsetBackgroundColor(tocolors[grid.edgecol])
|
||||
else
|
||||
termsetBackgroundColor(tocolors[grid.voidcol])
|
||||
end
|
||||
termsetCursorPos(cx, adjY)
|
||||
termwrite(player[i].name:sub(cx-adjX+1, cx-adjX+1))
|
||||
end
|
||||
end
|
||||
end
|
||||
if useSetVisible then
|
||||
tsv(true)
|
||||
end
|
||||
@ -577,7 +608,7 @@ local render = function(useSetVisible)
|
||||
drawGrid(scrollX + scrollAdjX, scrollY + scrollAdjY, false, useSetVisible)
|
||||
termsetCursorPos(1,1)
|
||||
termsetTextColor(player[you].color[1])
|
||||
termsetBackgroundColor(tocolors[grid.voidcol])
|
||||
termsetBackgroundColor(tocolors[grid.voidcol])
|
||||
term.write("P" .. you)
|
||||
end
|
||||
|
||||
@ -894,12 +925,19 @@ end
|
||||
|
||||
local game = function()
|
||||
local outcome
|
||||
local p, np
|
||||
local p, np, timeoutID, tID, evt
|
||||
while true do
|
||||
if isHost then
|
||||
sleep(gameDelay)
|
||||
else
|
||||
os.pullEvent("move_tick")
|
||||
timeoutID = os.startTimer(3)
|
||||
repeat
|
||||
evt, tID = os.pullEvent()
|
||||
until evt == "move_tick" or (evt == "timer" and tID == timeoutID)
|
||||
if evt == "timer" then
|
||||
parallel.waitForAny(function() imageAnim(images.timeout) end, waitForKey)
|
||||
return
|
||||
end
|
||||
end
|
||||
p = player[you]
|
||||
np = player[nou]
|
||||
@ -960,7 +998,7 @@ local networking = function()
|
||||
isHost = false
|
||||
gamename = msg.gameID
|
||||
gameDelay = tonumber(msg.gameDelay) or gameDelayInit
|
||||
grid = msg.grid or deepCopy(initGrid)
|
||||
grid = msg.grid or copyTable(initGrid)
|
||||
player = msg.player or player
|
||||
else
|
||||
isHost = true
|
||||
@ -1022,42 +1060,41 @@ local helpScreen = function()
|
||||
end
|
||||
|
||||
local startGame = function()
|
||||
-- reset all info between games
|
||||
trail = {}
|
||||
deadGuys = {}
|
||||
lastDirectionPressed = nil
|
||||
netLastDirectionPressed = nil
|
||||
gameDelay = gameDelayInit
|
||||
grid = deepCopy(initGrid)
|
||||
player = resetPlayers()
|
||||
you, nou = 1, 2
|
||||
gamename = ""
|
||||
for i = 1, 32 do
|
||||
gamename = gamename .. string.char(mathrandom(1,126))
|
||||
end
|
||||
-- reset all info between games
|
||||
trail = {}
|
||||
deadGuys = {}
|
||||
lastDirectionPressed = nil
|
||||
netLastDirectionPressed = nil
|
||||
gameDelay = gameDelayInit
|
||||
grid = copyTable(initGrid)
|
||||
player = resetPlayers()
|
||||
you, nou = 1, 2
|
||||
gamename = ""
|
||||
for i = 1, 32 do
|
||||
gamename = gamename .. string.char(mathrandom(1,126))
|
||||
end
|
||||
|
||||
waitingForGame = true
|
||||
transmit(port, {
|
||||
player = player,
|
||||
gameID = gamename,
|
||||
new = os.time(),
|
||||
gameDelay = gameDelayInit,
|
||||
name = argumentName or player[you].name,
|
||||
grid = initGrid
|
||||
})
|
||||
rVal = parallel.waitForAny( pleaseWait, networking )
|
||||
-- give time for skynet
|
||||
sleep(0.1)
|
||||
if rVal == 2 then
|
||||
startCountdown()
|
||||
parallel.waitForAny( getInput, game, networking )
|
||||
end
|
||||
waitingForGame = true
|
||||
transmit(port, {
|
||||
player = player,
|
||||
gameID = gamename,
|
||||
new = os.time(),
|
||||
gameDelay = gameDelayInit,
|
||||
name = argumentName or player[you].name,
|
||||
grid = initGrid
|
||||
})
|
||||
rVal = parallel.waitForAny( pleaseWait, networking )
|
||||
sleep(0.1)
|
||||
if rVal == 2 then
|
||||
startCountdown()
|
||||
parallel.waitForAny( getInput, game, networking )
|
||||
end
|
||||
end
|
||||
|
||||
local decision
|
||||
|
||||
local main = function()
|
||||
local rVal
|
||||
local rVal
|
||||
while true do
|
||||
decision = titleScreen()
|
||||
lockInput = false
|
||||
|
Loading…
Reference in New Issue
Block a user