View difference between Paste ID: 9S11ufB1 and LiWhgye1
SHOW: | | - or go back to the newest paste.
1
--BuildWall by KapitanWalnut
2
--Version 0.1.0 3/7/2014
3
--Will build a wall of specific size
4
5
-- Config
6
version = "0.1.0"
7
topY = 10
8
botY =0
9
leftSide = 0
10
rightSide = 10
11
placedValue = 0
12
minedValue = 0
13
heightQuestion = true
14
widthQuestion = true
15
stacksQuestion = true
16
17
-- Functions
18
function getVersion() --returns version number
19
	return version
20
end
21
22
function regWrite(string, columnVar, rowVar) --write a string to specified coords
23
	term.setCursorPos(columnVar, rowVar)
24
	write(string)
25
end
26
27
function arcWrite(number, columnVar, rowVar) --writes a number to specified coords, takes digits into account
28
	digits = math.ceil(math.log10(number))
29
	if 10^digits == number then
30
		digits = digits + 1
31
	end
32
	term.setCursorPos(columnVar, rowVar)
33
	while digits > 1 do
34
		digits = digits - 1
35
		columnVar = columnVar - 1
36
		term.setCursorPos(columnVar, rowVar)
37
	end
38
	write(number)
39
end
40
41
function clearScreen() --clears screen and prints version, author
42
	term.clear()
43
	regWrite("BuildWall", 12, 1)
44
	regWrite(getVersion(), 2, 12)
45
	regWrite("by KapitanWalnut", 17, 12)
46
	term.setCursorPos(1, 3)
47
end
48
49
function drawTable() --prints a table on screen display infor during run time
50
clearScreen()
51
print([[
52
 +--------------------------------+
53
 |Blocks Placed:                0 |
54
 |Blocks Mined:                 0 |
55
 +--------------------------------+
56
 |             Status             |
57
 |[                              ]|
58
 |                0%              |
59
 +--------------------------------+
60
]] )
61
placedValue = 0
62
minedValue = 0
63
end
64
65
function updateTable() --updates table during runtime
66
	--Update Blocks
67
	arcWrite(placedValue, 33, 4)
68
	arcWrite(minedValue, 33, 5)
69
70
	--Update Percentage
71
	if height > 0 then
72
		area = (height * width)
73
	else
74
		area = placedValue
75
	end
76
	percentage = math.ceil((placedValue / area) * 100)
77
	arcWrite(percentage, 19, 9)
78
79
	--Update Percentage Bar
80
	percentageBar = math.floor(percentage * 0.3)
81
	columnVar = 4
82
	while percentageBar > 0 do
83
		regWrite("=", columnVar, 8)
84
		percentageBar = percentageBar - 1
85
		columnVar = columnVar + 1
86
	end
87
end
88
89
--Digging Functions
90
function digDown() --Dig Down and update table
91
	if turtle.detectDown() then
92
		turtle.digDown()
93
		minedValue = minedValue + 1
94
	end
95
	updateTable()
96
end
97
98
function digUp() -- Dig up and update table
99
	while turtle.detectUp() do
100
		turtle.digUp()
101
		sleep(0.4)
102
		minedValue = minedValue + 1
103
	end
104
	updateTable()
105
end
106
107
function digForward() --Dig Forward and update table
108
	while turtle.detect() do
109
		turtle.dig()
110
		sleep(0.4)
111
		minedValue = minedValue + 1
112
	end
113
	updateTable()
114
end
115
116
--Movement Functions
117
function moveForward()--Move forward no digging
118
	moved = false
119
	repeat
120
		if turtle.forward() then
121
			moved = true
122
		else
123
			moved = false
124
		end
125
	until moved == true
126
end
127
128
function moveDown()--Move down no digging
129
	moved = false
130
	repeat
131
		if turtle.down() then
132
			moved = true
133
		else
134
			moved = false
135
		end
136
	until moved == true
137
end
138
139
function moveUp()--Move forward no digging
140
	moved = false
141
	repeat
142
		if turtle.up() then
143
			moved = true
144
		else
145
			moved = false
146
		end
147
	until moved == true
148
end
149
150
--Questions
151
function askQuestions() --asks Questions
152
	
153
	--Get Height
154
	clearScreen()
155
	while heightQuestion == true do
156
		print("Height of wall?")
157
		height = tonumber(read())
158
		clearScreen()
159
		if height == nil then
160
			print("Must be a number.")
161
		elseif height >= 2 then
162
			heightQuestion = false
163
		else
164
			print("Wall must be taller then one.")
165
		end
166
	end
167
168
	--Get Width
169
	clearScreen()
170
	while widthQuestion == true do
171
		print("Width of Wall?")
172
		width = tonumber(read())
173
		clearScreen()
174
		if width == nil then
175
			print("Must be a number.")
176
		elseif width > 0 then
177
			widthQuestion = false
178
		else
179
			print("Width must be greater then 0")
180
		end
181
	end
182
183
	--make sure enough blocks are in inv
184
	clearScreen()
185
	while stacksQuestion == true do
186
		area = width * height
187
		stackNum = math.ceil(area/64)
188
		if stackNum > 16 then --too big, reask questions
189
			print("Area is too big!")
190
			print("Requires ", stackNum, " stacks!")
191
			print("Can only hold 16 stacks!")
192
			print("")
193
			print("Press Enter to reinput size...")
194
			dummy = read()
195
			heightQuestion = true
196
			widthQuestion = true
197
			stacksQuestion = true
198
			askQuestions()
199
		else
200
			print("Do I have ", stackNum, " stacks?")
201
			answer = string.lower(read())
202
			clearScreen()
203
			if answer == ('yes') then
204
				stacksQuestion = false
205
			elseif answer == ('no') then
206
				print("Add them!")
207
			else
208
				print("Answer yes or no.")
209
			end
210
		end
211
	end
212
end
213
214
--main function
215
function main()
216
	askQuestions()
217
	drawTable()
218
end
219
220
--run main function
221
main()