This is a read-only snapshot of the ComputerCraft forums, taken in April 2020.
Vliekkie's profile picture

(Question)Unable to get my platform program to work.

Started by Vliekkie, 27 March 2012 - 03:04 PM
Vliekkie #1
Posted 27 March 2012 - 05:04 PM
So.. I tried to create a program that builds me a platform at a ratio of 2:1
its not working.. can anyone take a peek and check if something is wrong?

Spoiler
term.clear()
term.setCursorPos(1,1)
print("Area?")
o=read()

o=b
a=tonumber(o)
b=tonumber(o)/2
x=0
y=0
s=1

while y<b do
y=y+1
  while x<a do
   turtle.forward()
   turtle.placeDown()
	  if turtle.getSlotcount()==0 then
	  s=s+1
	  turtle.selectSlot("s")
	  else
	end

q=bit.band(y, 1)


	if q==("1") then

	   turtle.turnRight()
	   turtle.forward()
	   turtle.turnRight()

	elseif q==("0") then


	   turtle.turnLeft()
	   turtle.forward()
	   turtle.turnLeft()

end
end  
Vliekkie #2
Posted 27 March 2012 - 05:35 PM
Oh my.. i double posted..i double posted.. how silly
Can a mod just close the twin? plz and TY
kamnxt #3
Posted 27 March 2012 - 05:42 PM
1. Post the error.
2. What is o=b doing?
3. It should be turtle.select(s), not turtle.select("s"). You want to use the variable s, not the string "s".
4. It should be turtle.getItemCount(s), not turtle.getSlotcount().
MysticT #4
Posted 27 March 2012 - 05:55 PM
There's some errors in the code, I added some comments so you can fix them:

term.clear()
term.setCursorPos(1,1)
print("Area?")
o = read()

o = b -- b is nil, now o is nil also, user input lost
a = tonumber(o)
b = tonumber(o) / 2 -- shorter way: b = a / 2
x = 0
y = 0
s = 1

while y < b do -- it could be a for loop: for y = 0, b do
	y = y + 1 -- remove if using for
	while x < a do -- infinite loop, x never changes
		turtle.forward()
		turtle.placeDown()
		if turtle.getSlotcount() == 0 then -- getSlotcount doesn't exists, it's getItemCount
			s = s + 1
			turtle.selectSlot("s") -- "s" is a string, remove the quotes to use the variable
		else -- else what?
		end
		q = bit.band(y, 1)
		if q == ("1") then -- q is a number, "1" is a string, q will never be "1"
			turtle.turnRight()
			turtle.forward()
			turtle.turnRight()
		elseif q == ("0") then -- same as above
			turtle.turnLeft()
			turtle.forward()
			turtle.turnLeft()
		end
	end
-- end missing
You should also try to use local variables when possible:

local n = 10
local o = read()
And try to indent the code to check that all the end's are in the right place.
Vliekkie #5
Posted 27 March 2012 - 06:15 PM
Lol ok i made some adjustments.. (havnt checked the code that mystic T posted yet)
heres the new code
Spoiler
term.clear()
term.setCursorPos(1,1)
print("how wide?")
a=tonumber(read())
term.setCursorPos(1,3)
term.clearLine()
print("how long")
b=tonumber(read())
x=0
y=0
s=1
while y<b do
y=y+1
  while x<a do
x=x+1
   turtle.forward()
   turtle.placeDown()
	if turtle.getItemCount(s)==0 then
	  s=s+1
	  turtle.selectSlot(s)
	  else
	end
x=0
q=tonumber(y)
if q%2==1 then
turtle.turnRight()
turtle.forward()
turtle.turnRight()
elseif q%2==0 then
turtle.turnLeft()
turtle.forward()
turtle.turnLeft()
else
break
end
end
end
term.clear()
term.setCursorPos(1,1)
print("done")

i added a x=x+1 and fixed some errors but now it runs in circles :o/>/>

EDIT.. haha thx mystic.. mind checking the new one.. i have a feeling one of my ends are totally misplaced
Vliekkie #6
Posted 27 March 2012 - 06:28 PM
aaah i found it.. moved a end .. made it easier for myself by making it a bit easier to read

here it is dunno if it works yet
Spoiler
term.clear()
term.setCursorPos(1,1)
print("how wide?")
a=tonumber(read())
term.setCursorPos(1,3)
term.clearLine()
print("how long")
b=tonumber(read())
turtle.placeDown()
x=0
y=0
s=1
  while y<b do
   y=y+1

	while x<a do
	x=x+1
		turtle.forward()
		turtle.placeDown()

		   if turtle.getItemCount(tonumber(s))==0 then
		   s=s+1
		   turtle.selectSlot(tonumber(s))
		   end	
end
x=0

q=tonumber(y)

		 if q%2==1 then
			turtle.turnRight()
			turtle.forward()
turtle.placeDown()
			turtle.turnRight()

		 elseif q%2==0 then
			turtle.turnLeft()
			turtle.forward()
turtle.placeDown()
			turtle.turnLeft()
		 end
end
term.clear()
term.setCursorPos(1,1)
print("done")

works great.. i just needed to add a turtle.placeDown() after the turns.

Woot.. time to create a superflat over a survival

ok.. stoped at a empty slot..
figured out turtle.selectSlot(slotNum) us WRONG..
use turtle.select(slotNum)