G'day ScirptingHelpers!

Today I started working on a small chess AI. I have some ideas on it, so this isn't the question. I got stuck on the most basic part of the game: the board. Also the board is a frame.

I managed to place all the white pawns, rooks and other, but I don't think it is the most efficient way to do that.

There's my code so far:

local Nr = 0

local Images = {["King"] = "rbxassetid://5167408759", ["Rook"] = "rbxassetid://5167405525", ["Pawn"] = "rbxassetid://9067950310", ["Rook2"] = "rbxassetid://5167389475", ["King2"] = "rbxassetid://5167417298", ["Bishop"] = "rbxassetid://5167407683", ["Bishop2"] = "rbxassetid://5167391404", ["Knight"] = "rbxassetid://5167412180", ["Kinght2"] = "rbxassetid://5167419521", ["Pawn2"] = "rbxassetid://5167319726", ["Queen"] = "rbxassetid://5167410573", ["Queen2"] = "rbxassetid://5167418573"}

function make_checkerboard()

local d = 4	
for i=0,7,1 do
		for j=0,7,1 do
			Nr += 1
			local p = Instance.new("ImageButton", script.Parent.Board)
			p.Name = Nr
			p.BackgroundColor3 = Color3.new(0,0,0)
			if Nr > 8 and Nr < 17 then
				p.Image = Images["Pawn"]
				local FirstUse = Instance.new("BoolValue", p)
				FirstUse.Value = true
			elseif Nr == 4 then
				p.Image = Images["King"]
			elseif Nr == 5 then
				-- p.Text = "Queen"
			elseif Nr == 1 or Nr == 8  then
				p.Image = Images["Rook"]
			elseif Nr == 2 or Nr == 7 then
				-- p.Text = "Knight"
			elseif Nr == 3 or Nr == 6 then
				p.Image = Images["Bishop"]
			end
			if (i+j)%2==0 then
			p.BackgroundColor3 = Color3.new(1,1,1)
		end				
	end				
end

end

make_checkerboard()

Bonus question: How would movement for a piece work? For pawn I was thinking about calculating the front square. Thank you!