local gridgen = {} function gridgen:new(game,x,y,cellsize) local Grid = game.objects.base:new(game,x,y,cellsize*5,cellsize*5) Grid.cellsize = cellsize Grid.sprites = {game:newImage("grid/tile.png"),game:newImage("grid/pink.png"),game:newImage("grid/blue.png")} Grid.pinkturn = game:newImage("text/turn/pink.png") Grid.blueturn = game:newImage("text/turn/blue.png") Grid:register("Grid") Grid.depth = -1 Grid.turn= 3 -- Spawn circles local i for i=1,5 do local xspawn = x+(i-1)*cellsize local pink = game.objects.circle:new(game,xspawn,y,"pink",Grid) local blue = game.objects.circle:new(game,xspawn,y+4*cellsize,"blue",Grid) game:summon(pink) game:summon(blue) end local neutron = game.objects.circle:new(game,x+2*cellsize,y+2*cellsize,"neutron",Grid) game:summon(neutron) function Grid:step(dt) -- Check if the neutron is on one side or the other local obj = self.game:findName("neutron") local i local winner = "None" for i=1,#obj do if obj[i].rect.y==self.rect.y then winner = "pink" end if obj[i].rect.y+obj[i].rect.h==self.rect.y+self.rect.h then winner = "blue" end end if winner~="None" then self:endgame(winner) end end function Grid:addturn() self.turn = self.turn + 1 self.turn = self.turn%4 -- Check if a move can be made local color = "blue" if self.turn%2==1 then if self.turn==1 then color = "pink" end else color = "neutron" end local count = 0 local i local obj = self.game:findName(color) for i=1,#obj do count = count + #obj[i]:findAvailableMoves() end if count==0 then local win = "blue" if self.turn < 2 then win = "pink" end self:endgame(win) end end function Grid:endgame(winner) print(winner.." won !") self.game.scenes:ending(self.game,winner) end function Grid:draw() local y local x for y=1,5 do for x=1,5 do local spriteindex = 1 if y==1 then spriteindex = 2 end if y==5 then spriteindex = 3 end lg.draw(self.sprites[spriteindex],self.rect[1]-self.game.camerax-self.spriteoffx+(x-1)*self.cellsize,self.rect[2]-self.game.cameray-self.spriteoffy+(y-1)*self.cellsize) end end if self.turn<2 then -- Draw "pink's turn" lg.draw(self.pinkturn,(self.game.WIDTH-self.pinkturn:getWidth())/2,0) else -- Draw "Blue's turn" lg.draw(self.blueturn,(self.game.WIDTH-self.blueturn:getWidth())/2,self.game.HEIGHT-self.blueturn:getHeight()) end end return Grid end return gridgen