2011-12-21 26 views
5

Tôi đang cố tạo lưới cho trò chơi bằng SDK Moai. Mỗi ô trong lưới nên có khả năng được tô màu.Lưới Moai có màu ngói

Vì vậy, thực sự tôi có hai câu hỏi:

  • là gì cách tốt nhất để xây dựng một mạng lưới sử dụng Moai
  • Làm thế nào tôi có thể điền vào mỗi ngói riêng với một màu

The grid

Cảm ơn

Trả lời

5

gì là cách tốt nhất để xây dựng một mạng lưới sử dụng Moai

Moai có đối tượng để tạo lưới: MOAIGrid. Sử dụng thuật ngữ của khung công tác, bạn tạo một lưới và cung cấp cho nó một tầng. Sau đó, bạn gắn nó vào một giá đỡ và thêm giá đỡ vào một lớp. (Lớp đó cũng cần có một khung nhìn được gắn đến một cửa sổ.)

Làm thế nào tôi có thể điền vào mỗi ngói riêng với một màu

Một Moai deck là một hình ảnh hoặc bộ sưu tập các hình ảnh. Nếu bạn muốn các ô của bạn có các màu khác nhau thì bạn sẽ tạo một bộ bài có hình ảnh của hình vuông trong các màu đó.

Ví dụ

Mã này sẽ tạo ra một lưới 4x4 trong một cửa sổ:

-- 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) 

Sau đó, nếu bạn muốn thay đổi màu sắc của một tế bào cụ thể, sử dụng phương pháp setTile để chọn mục trong boong mà ô sử dụng.

-- Change the color of cell 1,1 to the second item in the deck 
grid:setTile(1, 1, 2) 
+0

Trong v1.4p0 (không chắc chắn chính xác phiên bản nó đã được thay đổi) dòng 'lưới: initGrid (4, 4, 64)' sẽ là 'lưới: initRectGrid (4, 4, 64, 64)' – devnate

2

Đã chỉnh sửa cho toàn bộ c ode.

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` 

Bạn nên kiểm tra Rapanui, một API cấp cao cho Moai (nơi tôi diễn giải mã này từ)

1

Xây dựng một mạng lưới được thực sự chỉ vẽ một đống ô vuông trong một hình lưới. Tôi không biết api của Moai; nhưng tôi hy vọng bạn có thể chỉ drawSquare (x, y, chiều rộng, chiều cao, màu sắc)

vì vậy bạn phải:

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 
+0

Có thể tôi chưa hiểu rõ câu hỏi của mình. Tôi đang chuyển trò chơi Corona của mình sang Moai, vì vậy logic ở đó, nhưng tôi không thể tìm thấy (các) hàm chính xác để vẽ một hình vuông và tô màu nó bằng một màu. Ngoài ra tôi không biết nếu tôi nên tạo ra mỗi gạch bằng tay hoặc nếu MOAIGrid sẽ là một lựa chọn. –

Các vấn đề liên quan