UsefulCode - Germanunkol/trAInsported GitHub Wiki

Useful Code snippets

Print any table

This function will print any table and its subtables (works recursively) in a nicely, nested output. To print the map in ai.init, there's another code snippet further down.

function printTable(table, lvl)
	if not type(table) == "table" then
		print("not a table!")
		return
	end
	lvl = lvl or 0
	for k, v in pairs(table) do
		if type(v) == "table" then
			printTable(v, lvl + 1)
		else
			local str = ""
			for i = 1,lvl do
				str = str .. "\t"
			end
			print(str, k, v)
		end
	end
end

Randomly move

This snippet allows you to move randomly in any direction possible (of course, that falls in the "dumb" category of AIs, if all you're doing is moving randomly -- substitute541).

function chooseRandom(possibleDirections)
	local dirTable = {}
	if possibleDirections["N"] then
		table.insert(dirTable, "N")
	end
	if possibleDirections["S"] then
		table.insert(dirTable, "S")
	end
	if possibleDirections["E"] then
		table.insert(dirTable, "E")
	end
	if possibleDirections["W"] then
		table.insert(dirTable, "W")
	end

	return dirTable[random(#dirTable)]
end

Print the map

This will print the map to the in-game console. This is very handy when trying to debug your code.

function printMap(map)
	local str = {}
	for j = 1, map.height do
		str[j] = ""
		for i = 1, map.width do
			if map[i][j] then 
				str[j] = str[j] .. map[i][j] .. " "
			else
				str[j] = str[j] .. "- "
			end
		end
	end
	for i = 1, #str do
		print(str[i])
	end
end