2011-12-21 20 views
5

मैं मोई एसडीके का उपयोग कर एक गेम के लिए ग्रिड बनाने की कोशिश कर रहा हूं। ग्रिड में प्रत्येक टाइल में रंग से भरने की क्षमता होनी चाहिए।टाइल रंगों के साथ मोई ग्रिड

तो वास्तव में मैं दो प्रश्न हैं:

  • क्या एक ग्रिड Moai
  • मैं कैसे एक रंग

The grid

साथ व्यक्तिगत रूप से प्रत्येक टाइल भर सकते हैं का उपयोग कर निर्माण करने के लिए सबसे अच्छा तरीका है

धन्यवाद

उत्तर

5

क्या एक ग्रिड Moai

का उपयोग कर निर्माण करने के लिए सबसे अच्छा तरीका है

मोई के पास ग्रिड बनाने के लिए एक वस्तु है: MOAIGrid। ढांचे के शब्दकोष का उपयोग करके, आप एक ग्रिड बनाते हैं और इसे एक डेक देते हैं। फिर आप इसे प्रोप में संलग्न करते हैं और परत को प्रोप जोड़ते हैं। (यह परत भी एक व्यूपोर्ट जो एक खिड़की को जुड़ा हुआ है की जरूरत है।)

मैं कैसे एक रंग

एक 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) 
+0

v1.4p0 में (सुनिश्चित नहीं है कि यह वास्तव में किस संस्करण में बदला गया था) लाइन 'ग्रिड: initGrid (4, 4, 64)' ग्रिड होगा: initRectGrid (4, 4, 64, 64) ' – devnate

2

संपूर्ण सी के लिए संपादित स्तोत्र।

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 की जाँच करनी चाहिए, Moai के लिए एक उच्च स्तर एपीआई (जहां मैं से इस कोड को दूसरे शब्दों में बयान)

1

एक ग्रिड का निर्माण वास्तव में सिर्फ वर्गों का एक ढेर एक ग्रिड गठन में आ रहा है। मुझे मोई की एपीआई नहीं पता; लेकिन मैं उम्मीद आप कर सकते हैं बस drawSquare (एक्स, वाई, चौड़ाई, ऊंचाई, रंग)

तो आप:

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

शायद मैं अपने प्रश्न पर स्पष्ट नहीं था। मैं अपने कोरोना गेम को मोई में पोर्ट कर रहा हूं, इसलिए तर्क वहां है, लेकिन मुझे स्क्वायर खींचने और रंग के साथ भरने के लिए सही फ़ंक्शन नहीं मिल रहा है। मुझे यह भी नहीं पता कि मुझे प्रत्येक टाइल मैन्युअल रूप से बनाना चाहिए या यदि MOAIGrid एक विकल्प होगा। –

संबंधित मुद्दे