diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 90825e2392b2d70e43c7a25b8a3752299a933894 (patch) | |
tree | e33aa27f02b74604afbfd0ea4f1cfca8833d882a /qtjava/javalib/tutorial/t13/GameBoard.java | |
download | tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.tar.gz tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebindings@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'qtjava/javalib/tutorial/t13/GameBoard.java')
-rw-r--r-- | qtjava/javalib/tutorial/t13/GameBoard.java | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/qtjava/javalib/tutorial/t13/GameBoard.java b/qtjava/javalib/tutorial/t13/GameBoard.java new file mode 100644 index 00000000..6e44c20f --- /dev/null +++ b/qtjava/javalib/tutorial/t13/GameBoard.java @@ -0,0 +1,108 @@ +import org.kde.qt.*; + +public class GameBoard extends QWidget { + private QLCDNumber hits; + private QLCDNumber shotsLeft; + private CannonField cannonField; + + public GameBoard() { + QPushButton quit = new QPushButton("&Quit", this, "quit"); + quit.setFont(new QFont("Times", 18, QFont.Bold, false)); + + connect(quit, SIGNAL("clicked()"), qApp(), SLOT("quit()")); + + LCDRange angle = new LCDRange("ANGLE", this, "angle"); + angle.setRange(5, 70); + + LCDRange force = new LCDRange("FORCE", this, "force"); + force.setRange(10, 50); + + cannonField = new CannonField(this, "cannonField"); + + connect(angle, SIGNAL("valueChanged(int)"), + cannonField, SLOT("setAngle(int)")); + connect(cannonField, SIGNAL("angleChanged(int)"), + angle, SLOT("setValue(int)")); + + connect(force, SIGNAL("valueChanged(int)"), + cannonField, SLOT("setForce(int)")); + connect(cannonField, SIGNAL("forceChanged(int)"), + force, SLOT("setValue(int)")); + + connect(cannonField, SIGNAL("hit()"), + this, SLOT("hit()")); + connect(cannonField, SIGNAL("missed()"), + this, SLOT("missed()")); + + QPushButton shoot = new QPushButton("&Shoot", this, "shoot"); + shoot.setFont(new QFont("Times", 18, QFont.Bold, false)); + + connect(shoot, SIGNAL("clicked()"), SLOT("fire()")); + connect(cannonField, SIGNAL("canShoot(boolean)"), + shoot, SLOT("setEnabled(boolean)")); + + QPushButton restart = new QPushButton("&New Game", this, "newgame"); + restart.setFont(new QFont("Times", 18, QFont.Bold, false)); + + connect(restart, SIGNAL("clicked()"), this, SLOT("newGame()")); + + hits = new QLCDNumber(2, this, "hits"); + shotsLeft = new QLCDNumber(2, this, "shotsleft"); + QLabel hitsL = new QLabel("HITS", this, "hitsLabel", 0); + QLabel shotsLeftL = new QLabel("SHOTS LEFT", this, "shotsleftLabel", 0); + + QGridLayout grid = new QGridLayout(this, 2, 2, 10, -1, null); + grid.addWidget(quit, 0, 0); + grid.addWidget(cannonField, 1, 1); + grid.setColStretch(1, 10); + + QVBoxLayout leftBox = new QVBoxLayout(); + grid.addLayout(leftBox, 1, 0); + leftBox.addWidget(angle); + leftBox.addWidget(force); + + QHBoxLayout topBox = new QHBoxLayout(); + grid.addLayout(topBox, 0, 1); + topBox.addWidget(shoot); + topBox.addWidget(hits); + topBox.addWidget(hitsL); + topBox.addWidget(shotsLeft); + topBox.addWidget(shotsLeftL); + topBox.addStretch(1); + topBox.addWidget(restart); + + angle.setValue(60); + force.setValue(25); + angle.setFocus(); + + newGame(); + } + + protected void fire() { + if (cannonField.gameOver() || cannonField.isShooting()) + return; + shotsLeft.display(shotsLeft.intValue() - 1); + cannonField.shoot(); + } + + protected void hit() { + hits.display(hits.intValue() + 1); + if (shotsLeft.intValue() == 0) + cannonField.setGameOver(); + else + cannonField.newTarget(); + } + + protected void missed() { + if (shotsLeft.intValue() == 0) + cannonField.setGameOver(); + } + + protected void newGame() { + shotsLeft.display(15); + hits.display(0); + cannonField.restartGame(); + cannonField.newTarget(); + } + +} |