diff options
Diffstat (limited to 'PerlQt/tutorials/t13/GameBoard.pm')
-rw-r--r-- | PerlQt/tutorials/t13/GameBoard.pm | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/PerlQt/tutorials/t13/GameBoard.pm b/PerlQt/tutorials/t13/GameBoard.pm deleted file mode 100644 index 52f5e9b..0000000 --- a/PerlQt/tutorials/t13/GameBoard.pm +++ /dev/null @@ -1,114 +0,0 @@ -package GameBoard; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); -use TQt::slots - fire => [], - hit => [], - missed => [], - newGame => []; -use TQt::attributes qw( - hits - shotsLeft - cannonField -); - -use LCDRange; -use CannonField; - -sub NEW { - shift->SUPER::NEW(@_); - - my $quit = TQt::PushButton("&Quit", this, "quit"); - $quit->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - TQt::app->connect($quit, TQT_SIGNAL('clicked()'), TQT_SLOT('quit()')); - - my $angle = LCDRange("ANGLE", this, "angle"); - $angle->setRange(5, 70); - - my $force = LCDRange("FORCE", this, "force"); - $force->setRange(10, 50); - - cannonField = CannonField(this, "cannonField"); - - cannonField->connect($angle, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('setAngle(int)')); - $angle->connect(cannonField, TQT_SIGNAL('angleChanged(int)'), TQT_SLOT('setValue(int)')); - - cannonField->connect($force, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('setForce(int)')); - $force->connect(cannonField, TQT_SIGNAL('forceChanged(int)'), TQT_SLOT('setValue(int)')); - - this->connect(cannonField, TQT_SIGNAL('hit()'), TQT_SLOT('hit()')); - this->connect(cannonField, TQT_SIGNAL('missed()'), TQT_SLOT('missed()')); - - my $shoot = TQt::PushButton('&Shoot', this, "shoot"); - $shoot->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - this->connect($shoot, TQT_SIGNAL('clicked()'), TQT_SLOT('fire()')); - - $shoot->connect(cannonField, TQT_SIGNAL('canShoot(bool)'), TQT_SLOT('setEnabled(bool)')); - - my $restart = TQt::PushButton('&New Game', this, "newgame"); - $restart->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - this->connect($restart, TQT_SIGNAL('clicked()'), TQT_SLOT('newGame()')); - - hits = TQt::LCDNumber(2, this, "hits"); - shotsLeft = TQt::LCDNumber(2, this, "shotsleft"); - my $hitsL = TQt::Label("HITS", this, "hitsLabel"); - my $shotsLeftL = TQt::Label("SHOTS LEFT", this, "shotsLeftLabel"); - - my $grid = TQt::GridLayout(this, 2, 2, 10); - $grid->addWidget($quit, 0, 0); - $grid->addWidget(cannonField, 1, 1); - $grid->setColStretch(1, 10); - - my $leftBox = TQt::VBoxLayout; - $grid->addLayout($leftBox, 1, 0); - $leftBox->addWidget($angle); - $leftBox->addWidget($force); - - my $topBox = TQt::HBoxLayout; - $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(); -} - -sub fire { - return if cannonField->gameOver or cannonField->isShooting; - shotsLeft->display(int(shotsLeft->intValue - 1)); - cannonField->shoot; -} - -sub hit { - hits->display(int(hits->intValue + 1)); - if(shotsLeft->intValue == 0) { - cannonField->setGameOver; - } else { - cannonField->newTarget; - } -} - -sub missed { - cannonField->setGameOver if shotsLeft->intValue == 0; -} - -sub newGame { - shotsLeft->display(int(15)); - hits->display(0); - cannonField->restartGame; - cannonField->newTarget; -} - -1; |