1 | //![0]
|
---|
2 | var blockSize = 40;
|
---|
3 | var maxColumn = 10;
|
---|
4 | var maxRow = 15;
|
---|
5 | var maxIndex = maxColumn * maxRow;
|
---|
6 | var board = new Array(maxIndex);
|
---|
7 | var component;
|
---|
8 |
|
---|
9 | //Index function used instead of a 2D array
|
---|
10 | function index(column, row) {
|
---|
11 | return column + (row * maxColumn);
|
---|
12 | }
|
---|
13 |
|
---|
14 | function startNewGame() {
|
---|
15 | //Delete blocks from previous game
|
---|
16 | for (var i = 0; i < maxIndex; i++) {
|
---|
17 | if (board[i] != null)
|
---|
18 | board[i].destroy();
|
---|
19 | }
|
---|
20 |
|
---|
21 | //Calculate board size
|
---|
22 | maxColumn = Math.floor(background.width / blockSize);
|
---|
23 | maxRow = Math.floor(background.height / blockSize);
|
---|
24 | maxIndex = maxRow * maxColumn;
|
---|
25 |
|
---|
26 | //Initialize Board
|
---|
27 | board = new Array(maxIndex);
|
---|
28 | for (var column = 0; column < maxColumn; column++) {
|
---|
29 | for (var row = 0; row < maxRow; row++) {
|
---|
30 | board[index(column, row)] = null;
|
---|
31 | createBlock(column, row);
|
---|
32 | }
|
---|
33 | }
|
---|
34 | }
|
---|
35 |
|
---|
36 | function createBlock(column, row) {
|
---|
37 | if (component == null)
|
---|
38 | component = Qt.createComponent("Block.qml");
|
---|
39 |
|
---|
40 | // Note that if Block.qml was not a local file, component.status would be
|
---|
41 | // Loading and we should wait for the component's statusChanged() signal to
|
---|
42 | // know when the file is downloaded and ready before calling createObject().
|
---|
43 | if (component.status == Component.Ready) {
|
---|
44 | var dynamicObject = component.createObject(background);
|
---|
45 | if (dynamicObject == null) {
|
---|
46 | console.log("error creating block");
|
---|
47 | console.log(component.errorString());
|
---|
48 | return false;
|
---|
49 | }
|
---|
50 | dynamicObject.x = column * blockSize;
|
---|
51 | dynamicObject.y = row * blockSize;
|
---|
52 | dynamicObject.width = blockSize;
|
---|
53 | dynamicObject.height = blockSize;
|
---|
54 | board[index(column, row)] = dynamicObject;
|
---|
55 | } else {
|
---|
56 | console.log("error loading block component");
|
---|
57 | console.log(component.errorString());
|
---|
58 | return false;
|
---|
59 | }
|
---|
60 | return true;
|
---|
61 | }
|
---|
62 | //![0]
|
---|
63 |
|
---|