[ create a new paste ] login | about

Project: QBZ
Link: http://qbz.codepad.org/luUcKorj    [ raw code | output | fork ]

shadowharlequin - Lua, pasted on Sep 26:
cubes = {}
widthcubes = 6
heightcubes = 12
newheight = 12
newwidth = 6
pstr = ""
rows = {}
taken = 0
z = 0
zstr = "|"
math.randomseed(os.time())

function newgrid()
for i2 = 1, newwidth do
	cubes[i2] = {}
	for i = 1, newheight do
		cubes[i2][i] = {}
	end
end

	for i = 1,newheight do

		for i2 = 1,newwidth do
		--cubes[i2] = {}
		colv = math.random(1,3)
		cubes[i2][i] = colv
		--colorv = colorv .. cubes[i][i2]
		end
	end
	widthcubes = newwidth
	heightcubes = newheight
	
	
	--draw out values
	zstr = "|"
	zstra = {}
	print("--CUBES COLOR VALUES:---")
	for i = 1,newheight do
		for i2 = 1,newwidth do
			zstr = zstr .. cubes[i2][i] .. "|" 
			zstra[i] = zstr
		end
		--print(zstr)
		zstr = "|"
	end
	x = newheight
	for i = 1,newheight do
	print(zstra[x])
	x = x - 1
	end
	print("-------------------------------")
	print(" ")
	print("--BEGIN CHECKING:---")
end

function checkmatches()
taken = 1
takingx = {}
takingy = {}
rows[1] = 0
pstr = ""
z = 1
    for cubey = 1, heightcubes do
        for cubex = 1, widthcubes do
            if (cubes[cubex][cubey] ~= 0) then           
				checkingcol = cubes[cubex][cubey]
                --use dx and dy variables to simulate the directions to be checked
				 for dx = -1,1 do -- (down, right, downleft, and downright)
					for dy = 0,1 do
						--special cases that don;t need to be checked
						if not (dx==0 and dy == 0) and not (dx == -1 and dy == 0) then                    
							local rowsize = 1 --how many of this color are in a straight line so far
									rows[z] = "start: " .. cubex
									rows[z] = rows[z] .. "," .. cubey
							while true do
								 --find the cube that is, rowsize untis away in direction dx,dy
								 local tempx,tempy = cubex+dx*rowsize,cubey+dy*rowsize
								 --if out of range, stop now
								 if tempx < 1 or tempy < 1 or tempx > #cubes or tempy > #cubes[1] then 
									 z = 1
									 break 
								 end
									--if same color ,add 1 to rowsize and keep going
								 if cubes[tempx][tempy] == checkingcol then 
									if ( z == 1 ) then
										print("Start new check: checking for " .. checkingcol)
										--rows[z] = "start: " .. cubex .. "," .. cubey
										rows[z] = cubex .. "," .. cubey
										z = z + 1
										rows[z] = tempx .. "," .. tempy
									else
										rows[z] =  tempx .. "," .. tempy
										--print(tempx,tempy)
									end
									rowsize = rowsize + 1
									takingx[z] = tempx
									takingy[z] = tempy
										--rows[z] = rows[z] .. " : " .. takingx[z] .. "," .. takingy[z]

										print("Checked: " .. z)
										z = z + 1
										taken = taken + 1

									--if different color, stop now
								 else 
									--print(rows[z])
									z = 1
									break 
								end
							end                     
							if rowsize >= 3 then	
								print("Greater than 3: ")
								for i = 1, rowsize do
										print(rows[i])		
								end									
								 --found a row of 3 or more items of the same color!
								--if takingx[1] ~= "" then								 --do stuff here
								--for z2 = 1, rowsize do
									--print(rows[z])////////////////////////////////
									--pstr = pstr .. takingx[zx] .. "," .. takingy[zx] .. " : "
								--end
								--z = 0
								--end
							end  
						end
                   end
                end
             end           
        end
    end
 

	print("-------------------------------")
end

newgrid()
checkmatches()
print(pstr)


Output:
--CUBES COLOR VALUES:---
|3|1|3|1|1|1|
|3|2|1|3|2|2|
|3|3|3|1|2|2|
|1|2|3|3|1|3|
|3|3|2|2|2|1|
|3|2|1|3|1|3|
|3|2|1|1|1|3|
|3|1|2|2|3|3|
|3|3|3|2|1|3|
|2|2|2|3|2|2|
|1|1|1|3|3|1|
|3|2|1|2|3|3|
-------------------------------
 
--BEGIN CHECKING:---
Start new check: checking for 1
Checked: 2
Start new check: checking for 1
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Checked: 3
Checked: 4
Greater than 3: 
6,1
5,2
4,3
3,4
Start new check: checking for 1
Checked: 2
Checked: 3
Greater than 3: 
1,2
2,2
3,2
Start new check: checking for 1
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Checked: 3
Greater than 3: 
5,2
4,3
3,4
Start new check: checking for 2
Checked: 2
Checked: 3
Greater than 3: 
1,3
2,3
3,3
Start new check: checking for 2
Checked: 2
Start new check: checking for 2
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 2
Checked: 2
Checked: 3
Checked: 4
Greater than 3: 
5,3
4,4
3,5
2,6
Start new check: checking for 2
Checked: 2
Start new check: checking for 3
Checked: 2
Checked: 3
Checked: 4
Checked: 5
Greater than 3: 
1,4
1,5
1,6
1,7
1,8
Start new check: checking for 3
Checked: 2
Checked: 3
Greater than 3: 
1,4
2,4
3,4
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 2
Checked: 2
Checked: 3
Greater than 3: 
4,4
3,5
2,6
Start new check: checking for 2
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Checked: 3
Checked: 4
Greater than 3: 
6,4
6,5
6,6
6,7
Start new check: checking for 3
Checked: 2
Checked: 3
Checked: 4
Greater than 3: 
1,5
1,6
1,7
1,8
Start new check: checking for 1
Checked: 2
Start new check: checking for 2
Checked: 2
Start new check: checking for 2
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Checked: 3
Greater than 3: 
6,5
6,6
6,7
Start new check: checking for 3
Checked: 2
Checked: 3
Greater than 3: 
1,6
1,7
1,8
Start new check: checking for 2
Checked: 2
Start new check: checking for 1
Checked: 2
Start new check: checking for 1
Checked: 2
Checked: 3
Greater than 3: 
3,6
4,6
5,6
Start new check: checking for 1
Checked: 2
Start new check: checking for 1
Checked: 2
Start new check: checking for 1
Checked: 2
Checked: 3
Greater than 3: 
4,6
5,7
6,8
Start new check: checking for 1
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Checked: 3
Greater than 3: 
1,7
2,8
3,9
Start new check: checking for 2
Checked: 2
Start new check: checking for 1
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 2
Checked: 2
Start new check: checking for 2
Checked: 2
Checked: 3
Greater than 3: 
3,8
4,8
5,8
Start new check: checking for 2
Checked: 2
Start new check: checking for 1
Checked: 2
Checked: 3
Checked: 4
Checked: 5
Greater than 3: 
6,8
5,9
4,10
3,11
2,12
Start new check: checking for 3
Checked: 2
Checked: 3
Greater than 3: 
3,9
2,10
1,11
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 1
Checked: 2
Checked: 3
Checked: 4
Greater than 3: 
5,9
4,10
3,11
2,12
Start new check: checking for 3
Checked: 2
Checked: 3
Greater than 3: 
1,10
1,11
1,12
Start new check: checking for 3
Checked: 2
Checked: 3
Greater than 3: 
1,10
2,10
3,10
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 1
Checked: 2
Checked: 3
Greater than 3: 
4,10
3,11
2,12
Start new check: checking for 2
Checked: 2
Start new check: checking for 2
Checked: 2
Start new check: checking for 2
Checked: 2
Start new check: checking for 2
Checked: 2
Start new check: checking for 2
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 1
Checked: 2
Start new check: checking for 1
Checked: 2
Start new check: checking for 3
Checked: 2
Start new check: checking for 2
Checked: 2
Start new check: checking for 1
Checked: 2
Checked: 3
Greater than 3: 
4,12
5,12
6,12
Start new check: checking for 1
Checked: 2
-------------------------------



Create a new paste based on this one


Comments: