Quantcast
Channel: Qt DevNet forums: Qt Quick 1283365070**
Viewing all articles
Browse latest Browse all 4972

Reference error: Can't find variable...

$
0
0
Hey there! Currently trying to follow one of the game guides on qt-project http://qt-project.org/doc/qt-4.8/declarative-tutorials-samegame-samegame1.html. However when I run the main qml file named “samegame.qml” my terminal give me the error “Reference error: Can’t find variable floodFill. Basicly I don’t know why this is happening since I have more or less copied what the guide says, would be nice with some advice! Here’s the code so far: samegame.js  var blockSize = 30;  var maxColumn = 10;  var maxRow = 15;  var maxIndex = maxColumn * maxRow;  var board = new Array(maxIndex);  var component;    //Index function used instead of a 2D array  function index(column, row) {      return column + (row * maxColumn);  }    function startNewGame() {      //Delete blocks from previous game      for (var i = 0; i < maxIndex; i++) {          if (board[i] != null)              board[i].destroy();      }        //Calculate board size      maxColumn = Math.floor(background.width / blockSize);      maxRow = Math.floor(background.height / blockSize);      maxIndex = maxRow * maxColumn;        //Initialize Board      board = new Array(maxIndex);      for (var column = 0; column < maxColumn; column++) {          for (var row = 0; row < maxRow; row++) {              board[index(column, row)] = null;              createBlock(column, row);          }      }  }    function createBlock(column, row) {      if (component == null)          component = Qt.createComponent("Block.qml");        // Note that if Block.qml was not a local file, component.status would be      // Loading and we should wait for the component's statusChanged() signal to      // know when the file is downloaded and ready before calling createObject().      if (component.status == Component.Ready) {          var dynamicObject = component.createObject(background);          if (dynamicObject == null) {              console.log("error creating block");              console.log(component.errorString());              return false;          }          dynamicObject.x = column * blockSize;          dynamicObject.y = row * blockSize;          dynamicObject.width = blockSize;          dynamicObject.height = blockSize;          board[index(column, row)] = dynamicObject;      } else {          console.log("error loading block component");          console.log(component.errorString());          return false;      }      return true;  }    function handleClick(xPos, yPos) {      var column = Math.floor(xPos / gameCanvas.blockSize);      var row = Math.floor(yPos / gameCanvas.blockSize);      if (column >= maxColumn || column < 0 || row >= maxRow || row < 0)          return;      if (board[index(column, row)] == null)          return;      //If it's a valid block, remove it and all connected (does nothing if it's not connected)      floodFill(column, row, -1);      if (fillFound <= 0)          return;      gameCanvas.score += (fillFound - 1) * (fillFound - 1);      shuffleDown();      victoryCheck();  }    function victoryCheck() {      //Award bonus points if no blocks left      var deservesBonus = true;      for (var column = maxColumn - 1; column >= 0; column--)          if (board[index(column, maxRow - 1)] != null)          deservesBonus = false;      if (deservesBonus)          gameCanvas.score += 500;        //Check whether game has finished      if (deservesBonus || !(floodMoveCheck(0, maxRow - 1, -1)))          dialog.show("Game Over. Your score is " + gameCanvas.score);  } samegame.qml import QtQuick 1.0 import "samegame.js" as SameGame    Rectangle {      id: screen        width: 490; height: 720        SystemPalette { id: activePalette }        Item {          width: parent.width          anchors { top: parent.top; bottom: toolBar.top }            Image {              id: background              anchors.fill: parent              source: "img/rsz_3test.jpg"              fillMode: Image.PreserveAspectCrop          }            Item {              id: gameCanvas                property int score: 0              property int blockSize: 40                width: parent.width - (parent.width % blockSize)              height: parent.height - (parent.height % blockSize)              anchors.centerIn: parent                MouseArea {                  anchors.fill: parent                  onClicked: SameGame.handleClick(mouse.x, mouse.y)              }          }      }        Rectangle {          id: toolBar          width: parent.width; height: 30          color: activePalette.window          anchors.bottom: screen.bottom            Button {              anchors { left: parent.left; verticalCenter: parent.verticalCenter }              text: "New Game"              onClicked: SameGame.startNewGame()          }            Text {              id: score              anchors { right: parent.right; verticalCenter: parent.verticalCenter }              text: "Score: Who knows?"          }      }  } Would be very happy for an answer! Thanks in advance!

Viewing all articles
Browse latest Browse all 4972

Trending Articles