SHOW:
|
|
- or go back to the newest paste.
| 1 | --This is the classroom monitor setup routine | |
| 2 | --written by Matt Kelliher | |
| 3 | -- | |
| 4 | ||
| 5 | --First: we assume there are 4 equal-sized | |
| 6 | --monitors in the room connected to the network | |
| 7 | --we'll find them on the network, | |
| 8 | --give them names based on color, and | |
| 9 | --wrap them with a variable | |
| 10 | local Rmon, Gmon, Bmon, Pmon = peripheral.find("monitor", function(name, object) return object.isColor() end)
| |
| 11 | ||
| 12 | --We'll also get the dimensions of the monitors | |
| 13 | --and store them (we'll assume all monitors are | |
| 14 | --the same number of columns and rows) | |
| 15 | local monRows, monColumns | |
| 16 | ||
| 17 | --A useful function for centering text | |
| 18 | --on a monitor from the ComputerCraft forums | |
| 19 | function centerPrint(text, y, mon) | |
| 20 | local w, h = mon.getSize() or term.getSize() | |
| 21 | if mon then | |
| 22 | mon.setCursorPos( math.ceil( w/2 - #text/2 + 1), y ) | |
| 23 | mon.write( text) | |
| 24 | else | |
| 25 | mon.setCursorPos( math.ceil( w/2 - #text/2 ), y ) | |
| 26 | term.write( text ) | |
| 27 | end | |
| 28 | end | |
| 29 | ||
| 30 | --A function that wraps text on monitor | |
| 31 | --and calls the center function | |
| 32 | function printCenterWrap( mon, text, size ) | |
| 33 | --size is an optional parameter, | |
| 34 | --we default to 0.5 | |
| 35 | if size == nil then size = 0.5 end | |
| 36 | ||
| 37 | if size > 0 then mon.setTextScale(size) end | |
| 38 | ||
| 39 | local MaxCols, MaxRows = mon.getSize() | |
| 40 | local stBuffer = text | |
| 41 | local rowCount = 1 | |
| 42 | ||
| 43 | print("MaxCols: "..MaxCols.." MaxRows: "..MaxRows)
| |
| 44 | while string.len(stBuffer) > 0 and rowCount <= MaxRows do | |
| 45 | - | --print("LoopStartBuffer: "..stBuffer.." ("..string.len(stBuffer)..")")
|
| 45 | + | print("LoopStartBuffer: "..stBuffer.." ("..string.len(stBuffer)..")")
|
| 46 | t=read() --pause to debug | |
| 47 | --find if there's a space character | |
| 48 | local space = string.find(stBuffer, " ") | |
| 49 | ||
| 50 | - | --print("found no space before EOL")
|
| 50 | + | |
| 51 | print("found no space before EOL")
| |
| 52 | --This is the easiest case: we didn't | |
| 53 | --find a space before the End-of-Line MaxCols | |
| 54 | --so just print a substring up to EOL | |
| 55 | mon.setCursorPos(1,rowCount) --center later | |
| 56 | --print("SetCursorPos(1,"..rowCount..")")
| |
| 57 | local wl = string.sub(stBuffer,1,MaxCols) | |
| 58 | mon.write(wl) --center this later | |
| 59 | --print("Wrote:"..wl)
| |
| 60 | if (MaxCols + 1) > (string.len(stBuffer)) then | |
| 61 | --we're don't processing | |
| 62 | stBuffer = "" | |
| 63 | --print("Set Buffer to EOL")
| |
| 64 | else | |
| 65 | stBuffer = string.sub(stBuffer, MaxCols + 1) | |
| 66 | --print("Set Buffer to:"..stBuffer.." ("..string.len(stBuffer)..")")
| |
| 67 | end | |
| 68 | else | |
| 69 | print("found space at: "..space)
| |
| 70 | local sentence = "" | |
| 71 | local nextspace | |
| 72 | --loop to find the next space in the buffer | |
| 73 | local word = string.sub(stBuffer,1,space) | |
| 74 | print("Word: "..word)
| |
| 75 | repeat | |
| 76 | s=read() --pause to debug | |
| 77 | sentence = sentence..word | |
| 78 | print("Sentence: "..sentence.." ("..string.len(sentence)..")")
| |
| 79 | --test that we don't go past the end | |
| 80 | if (string.len(word)+1) > string.len(stBuffer) then | |
| 81 | stBuffer = "" | |
| 82 | else | |
| 83 | stBuffer = string.sub(stBuffer,string.len(word)+1) | |
| 84 | print("Set Buffer to:"..stBuffer.." ("..string.len(stBuffer)..")")
| |
| 85 | end | |
| 86 | ||
| 87 | - | print("nextspacce: nil")
|
| 87 | + | |
| 88 | if nextspace == nil then | |
| 89 | print("nextspace: nil")
| |
| 90 | else | |
| 91 | print("nextspace: "..nextspace)
| |
| 92 | - | word = string.sub(stBuffer,1,nextspace) |
| 92 | + | |
| 93 | - | print("nextword: "..word)
|
| 93 | + | |
| 94 | word = string.sub(stBuffer,1,nextspace) --this should be checking for nil! | |
| 95 | - | until nextspace == nil or (string.len(sentence)+nextspace) >= MaxCols |
| 95 | + | print("nextword: "..word.." ("..string.len(word)..")")
|
| 96 | ||
| 97 | until nextspace == nil or (string.len(sentence)+nextspace) > MaxCols | |
| 98 | ||
| 99 | mon.setCursorPos(1, rowCount) | |
| 100 | print("SetCursorPos(1, "..rowCount..")")
| |
| 101 | - | print("Wrote:"..sentence..word)
|
| 101 | + | |
| 102 | mon.write(sentence..word) | |
| 103 | print("Wrote sen+word:"..sentence..word.." ("..#sentence+#word..")")
| |
| 104 | - | print("Wrote:"..sentence)
|
| 104 | + | --check that we don't go past the end |
| 105 | if (string.len(word)+1) > string.len(stBuffer) then | |
| 106 | stBuffer = "" | |
| 107 | print("Cleared the buffer")
| |
| 108 | else | |
| 109 | stBuffer = string.sub(stBuffer,string.len(word)+1) | |
| 110 | print("Set Buffer to:"..stBuffer.." ("..string.len(stBuffer)..")")
| |
| 111 | end | |
| 112 | else | |
| 113 | mon.write(sentence) | |
| 114 | print("Wrote sen:"..sentence.." ("..#sentence..")")
| |
| 115 | end | |
| 116 | ||
| 117 | end --of finding a space | |
| 118 | ||
| 119 | --increment row counter | |
| 120 | rowCount = rowCount + 1 | |
| 121 | end --while for each row | |
| 122 | ||
| 123 | end | |
| 124 | --Have a Function to setup monitors where you | |
| 125 | --Input/Parameter the monitor object/variable | |
| 126 | --and the colors.color you want it to be | |
| 127 | - | printCenterWrap(mon, "Welcome to Beyond Minecraft 101!") |
| 127 | + | |
| 128 | mon.clear() | |
| 129 | mon.setTextScale(0.5) | |
| 130 | mon.setCursorPos(1,1) | |
| 131 | mon.setBackgroundColor(xcolor) | |
| 132 | mon.clear() | |
| 133 | mon.setCursorPos(1,1) | |
| 134 | --mon.write("Welcome to Beyond Minecraft 101!")
| |
| 135 | --centerPrint("Welcome to Beyond Minecraft 101!", 1, mon)
| |
| 136 | --printCenter(mon,"Welcome to Beyond Minecraft 101!") | |
| 137 | printCenterWrap(mon, "Welcome to Beyond Minecraft 101 Class!", 3) | |
| 138 | end | |
| 139 | ||
| 140 | ||
| 141 | - | --print("Connected Red Monitor, size: "..monCols.." columns "..monRows.." rows")
|
| 141 | + | |
| 142 | --to run the program | |
| 143 | function main() | |
| 144 | - | --setupMonitor(Gmon, colors.green) |
| 144 | + | |
| 145 | - | --print("Connected Green Monitor")
|
| 145 | + | |
| 146 | if Rmon then | |
| 147 | setupMonitor(Rmon, colors.red) | |
| 148 | - | --setupMonitor(Bmon, colors.blue) |
| 148 | + | |
| 149 | - | --print("Connected Blue Monitor")
|
| 149 | + | |
| 150 | monCols, monRows = Rmon.getSize() | |
| 151 | print("Connected Red Monitor")
| |
| 152 | - | --setupMonitor(Pmon, colors.purple) |
| 152 | + | |
| 153 | - | --print("Connected Purple Monitor")
|
| 153 | + | --[[ |
| 154 | if Gmon then | |
| 155 | setupMonitor(Gmon, colors.green) | |
| 156 | print("Connected Green Monitor")
| |
| 157 | end | |
| 158 | if Bmon then | |
| 159 | setupMonitor(Bmon, colors.blue) | |
| 160 | print("Connected Blue Monitor")
| |
| 161 | end | |
| 162 | if Pmon then | |
| 163 | setupMonitor(Pmon, colors.purple) | |
| 164 | print("Connected Purple Monitor")
| |
| 165 | end | |
| 166 | --]] | |
| 167 | end | |
| 168 | ||
| 169 | --Now kick-off our main program: | |
| 170 | main() |