Qt Sensors - Maze QML Example

Maze example demonstrates the TiltSensor QML type

Maze in QML

The Maze example demonstrates the TiltSensor QML type.

To write a QML application that will use the TiltSensor QML sensors type you need to do the following steps:

Import the QtSensors 5.x declarative plugin:

import QtSensors 5.0

Add the Sensor QML types into your qml file.

In this example we use the TiltSensor with values based in degrees and an accuracy of 5 degree:

TiltSensor {
    id: tiltSensor
    active: true
}

Starting the sensor can be done by setting the ‘enabled’ property to true:

onTriggered: {
    if (!tiltSensor.enabled)
        tiltSensor.active = true;

The mouse should move by a factor of the tilt value:

var xstep = 0;
xstep = tiltSensor.reading.yRotation * 0.1 //acceleration

var ystep = 0;
ystep = tiltSensor.reading.xRotation * 0.1 //acceleration

The walk direction of the mouse takes into account some collision detection:

if (xstep < 1 && xstep > 0)
    xstep = 0
else if (xstep > -1 && xstep < 0)
    xstep = 0

if (ystep < 1 && ystep > 0)
    ystep = 0;
else if (ystep > -1 && ystep < 0)
    ystep = 0;

if ((xstep < 0 && mouseCtrl.x > 0
     && Lib.canMove(mouseCtrl.x + xstep,mouseCtrl.y))) {
    xval = mouseCtrl.x + xstep;

} else if (xstep > 0 && mouseCtrl.x < (Lib.cellDimension * (Lib.dimension - 1))
    && Lib.canMove(mouseCtrl.x + xstep,mouseCtrl.y)) {
    xval = mouseCtrl.x + xstep;
} else
    xval = mouseCtrl.x;

if (ystep < 0 && mouseCtrl.y > 0
     && Lib.canMove(mouseCtrl.x, mouseCtrl.y + ystep)) {
    yval = mouseCtrl.y + ystep;
} else if (ystep > 0 && (mouseCtrl.y < (Lib.cellDimension * (Lib.dimension - 1)))
         && Lib.canMove(mouseCtrl.x, mouseCtrl.y + ystep)) {
    yval = mouseCtrl.y + ystep;
} else
    yval = mouseCtrl.y

mouseCtrl.move(xval, yval);

The rotation of the mouse image is determined according to the angle that the mouse is moving.

var a = newy - mouse.y
var b = newx - mouse.x
angle = Math.atan2(-b, a) * mouse.radians_to_degrees
if (angle < 0)
    angle = 360 + angle

img.rotation = angle
mouse.x = newx;
mouse.y = newy;

Congratulation.qml Example File

LabyrinthSquare.qml Example File

Mouse.qml Example File

lib.js Example File

maze.qml Example File

AndroidManifest.xml Example File

ApplicationWindow.qml Example File

Button.qml Example File

main.cpp Example File

maze.pro Example File

maze.qrc Example File

button_background_disabled.png Image File

button_background_normal.png Image File

button_background_pressed.png Image File

00.png Image File

01.png Image File

cheese.png Image File

cheeseeating.gif Image File

congratulations.gif Image File

mouse_down.gif Image File

start.png Image File