Моаи сетка с цветами плитки - PullRequest
5 голосов
/ 22 декабря 2011

Я пытаюсь создать сетку для игры, используя Moai SDK.Каждая плитка в сетке должна иметь возможность заполняться цветом.

Так что на самом деле у меня есть два вопроса:

  • Каков наилучший способ построения сетки с использованием Моаи
  • Как я могу заполнить каждую плитку индивидуально цветом

The grid

Спасибо

Ответы [ 3 ]

5 голосов
/ 19 апреля 2012

Как лучше всего построить сетку, используя Моаи

Моаи имеет объект для создания сеток: MOAIGrid . Используя рамки жаргон, вы создаете сетку и даете ей колоду. Затем вы прикрепляете его к опоре и добавьте опору в слой. (Этот слой также нуждается в окне просмотра, который прикреплен к окну.)

Как я могу заполнить каждую плитку индивидуально цветом

A Moai deck - это изображение или коллекция изображений. Если бы вы хотели ваш плитки должны быть разных цветов, то вы бы создали колоду с изображениями квадрат в этих цветах.

Пример

Этот код создаст сетку 4x4 в окне:

-- Open the window and create a viewport
MOAISim.openWindow("Example", 512, 512)
viewport = MOAIViewport.new()
viewport:setSize(512, 512)
viewport:setScale(512, 512)

-- Create a layer
layer = MOAILayer2D.new()
layer:setViewport(viewport)
MOAISim.pushRenderPass(layer)

-- Create a 4x4 grid of 64x64px squares
grid = MOAIGrid.new()
grid:initGrid(4, 4, 64)
grid:setRow(1, 1, 1, 1, 1)
grid:setRow(2, 1, 1, 1, 1)
grid:setRow(3, 1, 1, 1, 1)
grid:setRow(4, 1, 1, 1, 1)

-- Load the image file
deck = MOAITileDeck2D.new()
deck:setTexture("squares.png")
deck:setSize(2, 2)

-- Make a prop with that grid and image set
prop = MOAIProp2D.new()
prop:setDeck(deck)
prop:setGrid(grid)
prop:setLoc(-256, -256)

-- Add it to the layer so it will be rendered
layer:insertProp(prop)

После этого, если вы хотите изменить цвет определенной ячейки, используйте setTile метод выбора элемента в колоде, который используется в этой ячейке.

-- Change the color of cell 1,1 to the second item in the deck
grid:setTile(1, 1, 2)
2 голосов
/ 22 декабря 2011

Отредактировано для всего кода.

MOAISim.openWindow ( "test", 320, 480 )

viewport = MOAIViewport.new ()
viewport:setSize ( 320, 480 )
viewport:setScale ( 320, -480 )
viewport:setOffset(-1, 1)

layer = MOAILayer2D.new ()
layer:setViewport ( viewport )
MOAISim.pushRenderPass ( layer )


function createRect(x1,y1,x2,y2, R,G,B)
    local function onDraw()
        MOAIGfxDevice.setPenColor(R,G,B)
        MOAIDraw.fillRect(x1,y1,x1+x2,y1+y2) --This is the rect drawing line.
    end

    local gfxQuad = MOAIScriptDeck.new()
    gfxQuad:setRect(x1,y1,x2,y2)
    gfxQuad:setDrawCallback(onDraw)

    local prop = MOAIProp2D.new()
    prop:setDeck(gfxQuad)
    layer:insertProp ( prop )
    return prop
end

mapmaxx = 10
mapmaxy = 10
map={} --array to store map
for x = 1, mapmaxx do
    map[x] ={}
   for y = 1, mapmaxy do
       map[x][y] = createRect(x*20, y*20, 10, 10, x,y,x/y)
    end
end`

Вы должны проверить Rapanui , API высокого уровня для Moai (откуда я перефразировал этот код)

1 голос
/ 23 декабря 2011

Построение сетки - это просто рисование кучи квадратов в сетке. Я не знаю API Моаи; но я ожидаю, что вы можете просто нарисовать квадрат (х, у, ширина, высота, цвет)

так что у вас есть:

local width = 800
local height = 600
local color = { red=1, blue=1, green=1 }
for x=1 , 100 do
    for y=1, 100 do
        screen:drawSquare((x-1)*width,(y-1)*height,width,height,color)
    end
end
...