How to create board with block elements
-
My suggestion: Take some time to actually provide a description of a problem you are facing before posting on the internet about it.
Seriously: What exactly are you trying to do? Do you have some code showing the issue? What exactly goes wrong? Do you get error messages/warnings whatever? What have you tried so far?
-
Hello
I'll just leave "it":http://www.catb.org/~esr/faqs/smart-questions.html here -
i am trying to create a game like bejeweled. The problem i faced is i cannot product the random blocks on my game screen.
For the time being, i am not sure how to create a board and able to generate the blocks.
i have tried the references from the samegame.qml but is not working.
i also tried using this way:@
Timer
{
id:gameTimeronTriggered: { console.log("timer") var now=new Date(); var block=now.getSeconds(); var num=(Math.floor(10*Math.random(block))); switch(count) { case 0: console.log("0") angryblock.visible=true; break; case 1: console.log("1") smileblock.visible=true; break; case 2: console.log("3") sadblock.visible=true; break; case 3: console.log("4") nerdblock.visible=true; break; case 4: console.log("5") surpriseblock.visible=true; break; case 5: console.log("6") bombblock.visible=true; break; case 6: console.log("7") fireblock.visible=true; break; case 7: console.log("8") freezeblock.visible=true; break; case 8: console.log("9") waveblock.visible=true; break; case 9: console.log("10") sunblock.visible=true; break; } }
}
@but not working too.
any better advice or suggestion? thanks -
Please tag your code as such using '@' (or just highlight it with the mouse and click on the code icon at the top).
-
What part of the code from the same game example doesn't work? I think that you need to read again that tutorial in order to understand it better.
As I remeber, an array was created to store references to block components that are dinamycally created.
Once that the array is filled with references to valid components you can access to the property of each block component via the array indexes. For example:@BlockArray[index].x = someX
BlockArray[index].y = someY@That's how they make it visible, by setting some x and y that was inside of the game canvas which can be a QML element like a rectangle (also by setting the background image as their parent).
You aren't doing anything like that in the code that you posted, you are just setting the visible property to true (which is already true by default) to a bunch of elements that we cannot know what they're (from angryblock to sunblock).
What are this elements? Rectangles? Images?
Which element is their parent? How are you positioning them? Anchors? Absolute positioning? What are their coordinates? -
@
Timer//==================timer to move the block
{
id:gameTimeronTriggered: { console.log("timer") var now=new Date(); var block=now.getSeconds(); var num=(Math.floor(10*Math.random(block))); switch(count) { case 0: console.log("0") angryblock.visible=true; break; case 1: console.log("1") smileblock.visible=true; break; case 2: console.log("3") sadblock.visible=true; break; case 3: console.log("4") nerdblock.visible=true; break; case 4: console.log("5") surpriseblock.visible=true; break; case 5: console.log("6") bombblock.visible=true; break; case 6: console.log("7") fireblock.visible=true; break; case 7: console.log("8") freezeblock.visible=true; break; case 8: console.log("9") waveblock.visible=true; break; case 9: console.log("10") sunblock.visible=true; break; } }
}
Rectangle
{
id:gameboard
visible:false
width:360
height:640Image { source: "Images/wallpaper/5.background.png" } //timer
Rectangle{
Image//timer
{
id:timer
x:95
y:108
source:"Images/buttons/timerclock.png"
}
}
//score bar
Rectangle{
Image//score bar
{id: scorebar x:255 y:80 source: "Images/bar/scorebar_0%.png" } }
//pause button
Rectangle{
Image//pause button
{
id:pausebuttonsource:"Images/buttons/pause_btn.png" x:4 y:108 MouseArea { anchors.fill: parent onClicked: { pauseoptions.visible=true; console.log("Pause") } } }
}
Rectangle// pause menus { id:pauseoptions visible:false x:20 y:180 Image { id:pausewall source: "Images/wallpaper/6.pause2.png" Image//resume { id:resumebutton x:100 y:90 source: "Images/buttons/resume.png" MouseArea { anchors.fill: parent onClicked: { pauseoptions.visible=false gameview.visible=true } } } Image//restart { id:restart x:100 y:140 source:"Images/buttons/restart.png" } Image//menu { id:mainmenubutton x:85 y:190 source:"Images/buttons/mainmenu.png" MouseArea { anchors.fill: parent onClicked: { pauseoptions.visible=false firstPage.visible=true } } } } } Rectangle//tile images { id:tile Image { id:angryblock source:"Images/tiles/angry.png" visible:false } Image { id: sadblock source: "Images/tiles/sad.png" visible:false} Image { id:surpriseblock source:"Images/tiles/surprise.png" visible:false } Image { id:smileblock source:"Images/tiles/smile.png" visible:false } Image { id:nerdblock source:"Images/tiles/sad.png" visible:false } Image { id:bombblock source:"Images/tiles/bomb.png" visible:false } Image { id:fireblock source:"Images/tiles/fire.png" visible:false } Image { id:sunblock source:"Images/tiles/sun.png" visible:false } Image { id:freezeblock source:"Images/tiles/frozentimer.png" visible:false } Image { id:waveblock source:"Images/tiles/wave.png" visible:false } }
}
@
-
Well, I wasn't exactly asking for all of your code.
The forum's and the help that I, and most of the people, can offer is only for specific questions. But as I said to you before, I think that you need to read again the tutorial, and maybe try to do simple modifications to it (add more colors, change the score, etc.), so you can understand it better.
There are many things that you need to understand better. For example:
- You can only have one root element in a QML file, here you have two, a timer and a rectangle.
- You need to read about positioning elements in the screen. (Absolute Positioning, with x and y coordinates, "Positioning elements":http://doc.qt.nokia.com/4.7/qml-positioners.html and "anchors":http://doc.qt.nokia.com/4.7/qml-anchor-layout.html)
- Not everything needs to be inside a rectangle.
- You need to specify more properties to the timer in order to make it work (interval, running, repeat)
When you have read more about it,I'll be happy to help you with some specific doubt or problem.