class GameBoard
Public Class Methods
new(parent = nil)
click to toggle source
Calls superclass method
# File examples/tutorial/t13/gamebrd.rb, line 8 def initialize(parent = nil) super quit = Qt::PushButton.new('&Quit') quit.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold)) connect(quit, SIGNAL('clicked()'), $qApp, SLOT('quit()')) angle = LCDRange.new('ANGLE', self) angle.range = 5..70 force = LCDRange.new('FORCE', self) force.range = 10..50 @cannonField = CannonField.new(self) 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()'), self, SLOT('hit()')) connect(@cannonField, SIGNAL('missed()'), self, SLOT('missed()')) shoot = Qt::PushButton.new('&Shoot', self) shoot.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold)) connect(shoot, SIGNAL('clicked()'), SLOT('fire()')) connect(@cannonField, SIGNAL('canShoot(bool)'), shoot, SLOT('setEnabled(bool)')) restart = Qt::PushButton.new('&New Game', self) restart.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold)) connect(restart, SIGNAL('clicked()'), self, SLOT('newGame()')) @hits = Qt::LCDNumber.new(2, self) @shotsLeft = Qt::LCDNumber.new(2, self) hitsLabel = Qt::Label.new('HITS', self) shotsLeftLabel = Qt::Label.new('SHOTS LEFT', self) topLayout = Qt::HBoxLayout.new topLayout.addWidget(shoot) topLayout.addWidget(@hits) topLayout.addWidget(hitsLabel) topLayout.addWidget(@shotsLeft) topLayout.addWidget(shotsLeftLabel) topLayout.addStretch(1) topLayout.addWidget(restart) leftLayout = Qt::VBoxLayout.new() leftLayout.addWidget(angle) leftLayout.addWidget(force) gridLayout = Qt::GridLayout.new gridLayout.addWidget(quit, 0, 0) gridLayout.addLayout(topLayout, 0, 1) gridLayout.addLayout(leftLayout, 1, 0) gridLayout.addWidget(@cannonField, 1, 1, 2, 1) gridLayout.setColumnStretch(1, 10) setLayout(gridLayout) angle.setValue(60) force.setValue(25) angle.setFocus() newGame() end
Public Instance Methods
fire()
click to toggle source
# File examples/tutorial/t13/gamebrd.rb, line 83 def fire() if @cannonField.gameOver() || @cannonField.isShooting() return end @shotsLeft.display(@shotsLeft.intValue() - 1) @cannonField.shoot() end
hit()
click to toggle source
# File examples/tutorial/t13/gamebrd.rb, line 91 def hit() @hits.display(@hits.intValue() + 1) if @shotsLeft.intValue() == 0 @cannonField.setGameOver() else @cannonField.newTarget() end end
missed()
click to toggle source
# File examples/tutorial/t13/gamebrd.rb, line 100 def missed() if @shotsLeft.intValue() == 0 @cannonField.setGameOver() end end
newGame()
click to toggle source
# File examples/tutorial/t13/gamebrd.rb, line 106 def newGame() @shotsLeft.display(15.0) @hits.display(0) @cannonField.restartGame() @cannonField.newTarget() end