mirror of
git://projects.qi-hardware.com/openwrt-packages.git
synced 2024-11-19 07:15:20 +02:00
Tile: check if the puzzle is solved
This commit is contained in:
parent
bd53759d02
commit
ca4ebe424a
@ -6,6 +6,8 @@
|
|||||||
#include <QtGui/QWSServer>
|
#include <QtGui/QWSServer>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
bool isRunning = 0;
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QApplication a(argc, argv);
|
QApplication a(argc, argv);
|
||||||
|
@ -159,6 +159,20 @@ void Tile::swapButtons(QPushButton *button, QPushButton *button_neighbour) {
|
|||||||
button->setText("16");
|
button->setText("16");
|
||||||
button_neighbour->show();
|
button_neighbour->show();
|
||||||
button_neighbour->setFocus();
|
button_neighbour->setFocus();
|
||||||
|
//qDebug() << isSolved();
|
||||||
|
if (isRunning && isSolved()) {
|
||||||
|
switch (QMessageBox::information(this,
|
||||||
|
"Solved!",
|
||||||
|
"Hooray, you solved it!\nShuffle again?",
|
||||||
|
"&Yes","&No"))
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
Shuffle();
|
||||||
|
default:
|
||||||
|
isRunning = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tile::Reset()
|
void Tile::Reset()
|
||||||
@ -203,6 +217,8 @@ void Tile::Shuffle()
|
|||||||
}
|
}
|
||||||
if (!isSolvable()) {
|
if (!isSolvable()) {
|
||||||
Shuffle();
|
Shuffle();
|
||||||
|
} else {
|
||||||
|
isRunning = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -323,32 +339,46 @@ bool Tile::eventFilter(QObject *obj, QEvent *event)
|
|||||||
return result;
|
return result;
|
||||||
}//eventFilter
|
}//eventFilter
|
||||||
|
|
||||||
void Tile::keyUp(QPushButton *button) {
|
void Tile::keyUp(QPushButton *button)
|
||||||
int id = button->property("id").toInt();
|
{
|
||||||
QPushButton *button_up;
|
int id = button->property("id").toInt();
|
||||||
if (id < 5) {
|
QPushButton *button_up;
|
||||||
button_up = idtoButton(id+12);
|
if (id < 5) {
|
||||||
} else {
|
button_up = idtoButton(id+12);
|
||||||
button_up = idtoButton(id-4);
|
} else {
|
||||||
}
|
button_up = idtoButton(id-4);
|
||||||
if (button_up->isHidden()) {
|
}
|
||||||
keyUp(button_up);
|
if (button_up->isHidden()) {
|
||||||
} else {
|
keyUp(button_up);
|
||||||
button_up->setFocus();
|
} else {
|
||||||
}
|
button_up->setFocus();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tile::keyDown(QPushButton *button) {
|
void Tile::keyDown(QPushButton *button)
|
||||||
int id = button->property("id").toInt();
|
{
|
||||||
QPushButton *button_down;
|
int id = button->property("id").toInt();
|
||||||
if (id > 12) {
|
QPushButton *button_down;
|
||||||
button_down = idtoButton(id-12);
|
if (id > 12) {
|
||||||
} else {
|
button_down = idtoButton(id-12);
|
||||||
button_down = idtoButton(id+4);
|
} else {
|
||||||
}
|
button_down = idtoButton(id+4);
|
||||||
if (button_down->isHidden()) {
|
}
|
||||||
keyDown(button_down);
|
if (button_down->isHidden()) {
|
||||||
} else {
|
keyDown(button_down);
|
||||||
button_down->setFocus();
|
} else {
|
||||||
}
|
button_down->setFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Tile::isSolved()
|
||||||
|
{
|
||||||
|
QPushButton *button;
|
||||||
|
for (int i = 1; i < 17; i++) {
|
||||||
|
button = idtoButton(i);
|
||||||
|
if (button->text() != button->property("id")) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
|
|
||||||
|
extern bool isRunning;
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class Tile;
|
class Tile;
|
||||||
}
|
}
|
||||||
@ -32,6 +34,7 @@ public slots:
|
|||||||
bool eventFilter(QObject *obj, QEvent *event);
|
bool eventFilter(QObject *obj, QEvent *event);
|
||||||
void keyUp(QPushButton *button);
|
void keyUp(QPushButton *button);
|
||||||
void keyDown(QPushButton *button);
|
void keyDown(QPushButton *button);
|
||||||
|
bool isSolved();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void changeEvent(QEvent *e);
|
void changeEvent(QEvent *e);
|
||||||
|
Loading…
Reference in New Issue
Block a user