Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -------------------------------
- -- logMcTime() and logIndent()
- -------------------------------
- local function logMcTime ( logLine )
- nTime = os.time()
- mcTime = textutils.formatTime( nTime, true )
- write (string.format ( "%-6s => %s", mcTime, logLine).."\n" )
- end
- local function logIndent ( logLine )
- write ( " "..logLine.."\n" )
- end
- -- global defines
- local monTab = { }
- local cursorSize = 3
- local directions = { "top", "bottom", "left", "right", "front", "back" }
- -------------------
- -- monDump()
- -------------------
- local function monDump ( dumpMon )
- local logLine="Monitor on "..dumpMon.SideUp.." is"
- if dumpMon.Connected == false then
- logLine = logLine.." not connected!"
- else
- logLine = logLine.." connected!"
- end
- logMcTime( logLine )
- if dumpMon.Connected == true then
- -- logMcTime( logLine )
- logLine = string.format( "WxH: %d x %d ITEMS: %d ", dumpMon.Width, dumpMon.Height, dumpMon.ItemCount).." "
- -- logIndent( logLine )
- logIndent( logLine )
- end
- end
- -------------------
- -- itemInit()
- -------------------
- local function itemInit ( monRef )
- local newItem = {}
- newItem.x = math.random ( monRef.Width - 3 )
- newItem.y = math.random ( monRef.Height - 3 )
- newItem.dx = 1
- newItem.dy = 1
- if math.random ( 0, 1) == 1 then
- newItem.dx = newItem.dx * -1
- end
- if math.random ( 0, 1 ) == 1 then
- newItem.dy = newItem.dy * -1
- end
- return newItem
- end
- -------------------
- -- monInit()
- -------------------
- local function monInit ( Side )
- local newMon = { }
- newMon.Side = Side
- newMon.SideUp = string.upper ( Side )
- newMon.Connected = true
- -- check if monitor is connected
- if peripheral.getType( newMon.Side ) ~= "monitor" then
- newMon.Connected = false
- monDump( newMon )
- return newMon
- end
- newMon.Handle = {}
- newMon.Handle = peripheral.wrap( Side )
- newMon.Handle.clear ( )
- newMon.Handle.setCursorBlink( false )
- newMon.Width, newMon.Height = newMon.Handle.getSize()
- newMon.Items = {}
- newMon.ItemCount = math.random(5)+2
- for i=1,newMon.ItemCount do
- newMon.Items[i]=itemInit( newMon )
- end
- monDump(newMon)
- return newMon
- end
- -------------------
- -- itemUpdate ()
- -------------------
- local function itemUpdate( Item, scrWidth, scrHeight )
- Item.x = Item.x + Item.dx
- Item.y = Item.y + Item.dy
- if Item.x <= 1 or Item.x >= scrWidth - cursorSize then
- Item.dx = Item.dx * -1
- end
- if Item.y <= 1 or Item.y >= scrHeight - cursorSize then
- Item.dy = Item.dy * -1
- end
- return Item
- end
- -------------------
- -- cursorDraw ()
- -------------------
- local function cursorDraw( monHandle, x, y, bReset )
- local cursor = {}
- if bReset == true then
- cursor = {" ", " ", " "}
- else
- cursor = {"X X", " X ", "X X"}
- end
- for i=1, 3 do
- monHandle.setCursorPos( x, y+i )
- monHandle.write(cursor[i])
- end
- end
- -------------------
- -- monUpdate()
- -------------------
- local function monUpdate(monRef)
- if not monRef.Connected then
- return monRef
- end
- for i=1,#monRef.Items do
- local Item = monRef.Items[i]
- cursorDraw( monRef.Handle, Item.x, Item.y, true )
- monRef.Items[i] = itemUpdate ( Item, monRef.Width, monRef.Height)
- cursorDraw( monRef.Handle, Item.x, Item.y, false )
- end
- return monRef
- end
- -------------------
- -- gameLoop()
- -------------------
- local function gameLoop ( monTab )
- local gameEnding = false
- while gameEnding == false do
- for i=1,#monTab do
- monTab[i]=monUpdate(monTab[i])
- end
- sleep(0.03)
- end
- end
- -------------------
- -- main()
- -------------------
- term.clear()
- term.setCursorPos( 1, 1 )
- for i=1,#directions do
- monTab[i] = monInit(directions[i])
- end
- gameLoop ( monTab )
Advertisement
Add Comment
Please, Sign In to add comment