examples/declarative/tutorials/samegame/samegame2/samegame.js
branchGCC_SURGE
changeset 31 5daf16870df6
parent 30 5dc02b23752f
equal deleted inserted replaced
27:93b982ccede2 31:5daf16870df6
       
     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