qtbindings 4.8.6.3-x86-mingw32 → 4.8.6.4-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -1
  3. data/bin/2.4/rbrcc.exe +0 -0
  4. data/bin/2.4/rbuic4.exe +0 -0
  5. data/bin/2.4/smokeapi.exe +0 -0
  6. data/bin/2.4/smokedeptool.exe +0 -0
  7. data/examples/tutorial/t10/cannon.rb +72 -72
  8. data/examples/tutorial/t10/lcdrange.rb +45 -45
  9. data/examples/tutorial/t10/t10.rb +55 -55
  10. data/examples/tutorial/t11/cannon.rb +123 -124
  11. data/examples/tutorial/t11/lcdrange.rb +45 -45
  12. data/examples/tutorial/t11/t11.rb +65 -65
  13. data/examples/tutorial/t12/cannon.rb +157 -158
  14. data/examples/tutorial/t12/lcdrange.rb +58 -59
  15. data/examples/tutorial/t12/t12.rb +65 -66
  16. data/examples/tutorial/t13/cannon.rb +206 -208
  17. data/examples/tutorial/t13/gamebrd.rb +112 -113
  18. data/examples/tutorial/t13/lcdrange.rb +59 -60
  19. data/examples/tutorial/t13/t13.rb +11 -11
  20. data/examples/tutorial/t14/cannon.rb +262 -263
  21. data/examples/tutorial/t14/gamebrd.rb +122 -123
  22. data/examples/tutorial/t14/lcdrange.rb +61 -63
  23. data/examples/tutorial/t14/t14.rb +11 -11
  24. data/examples/tutorial/t3/t3.rb +17 -18
  25. data/examples/tutorial/t4/t4.rb +23 -25
  26. data/examples/tutorial/t5/t5.rb +35 -37
  27. data/examples/tutorial/t6/t6.rb +48 -52
  28. data/examples/tutorial/t7/lcdrange.rb +32 -32
  29. data/examples/tutorial/t7/t7.rb +40 -42
  30. data/examples/tutorial/t8/cannon.rb +37 -38
  31. data/examples/tutorial/t8/lcdrange.rb +45 -45
  32. data/examples/tutorial/t8/t8.rb +43 -43
  33. data/examples/tutorial/t9/cannon.rb +44 -45
  34. data/examples/tutorial/t9/lcdrange.rb +46 -46
  35. data/examples/tutorial/t9/t9.rb +43 -43
  36. data/lib/2.4/libqtruby4shared.dll +0 -0
  37. data/lib/2.4/libsmokebase.dll +0 -0
  38. data/lib/2.4/libsmokeqtcore.dll +0 -0
  39. data/lib/2.4/libsmokeqtdeclarative.dll +0 -0
  40. data/lib/{2.1 → 2.4}/libsmokeqtgui.dll +0 -0
  41. data/lib/2.4/libsmokeqthelp.dll +0 -0
  42. data/lib/2.4/libsmokeqtmultimedia.dll +0 -0
  43. data/lib/2.4/libsmokeqtnetwork.dll +0 -0
  44. data/lib/2.4/libsmokeqtopengl.dll +0 -0
  45. data/lib/2.4/libsmokeqtscript.dll +0 -0
  46. data/lib/2.4/libsmokeqtsql.dll +0 -0
  47. data/lib/2.4/libsmokeqtsvg.dll +0 -0
  48. data/lib/2.4/libsmokeqttest.dll +0 -0
  49. data/lib/2.4/libsmokeqtuitools.dll +0 -0
  50. data/lib/2.4/libsmokeqtwebkit.dll +0 -0
  51. data/lib/2.4/libsmokeqtxml.dll +0 -0
  52. data/lib/2.4/libsmokeqtxmlpatterns.dll +0 -0
  53. data/lib/2.4/qtdeclarative.so +0 -0
  54. data/lib/2.4/qtruby4.so +0 -0
  55. data/lib/2.4/qtscript.so +0 -0
  56. data/lib/2.4/qttest.so +0 -0
  57. data/lib/2.4/qtuitools.so +0 -0
  58. data/lib/2.4/qtwebkit.so +0 -0
  59. data/lib/Qt4.rb +119 -111
  60. data/lib/qtbindings_version.rb +2 -2
  61. data/qtbindings.gemspec +18 -18
  62. data/qtbindingsnative.gemspec +19 -19
  63. metadata +38 -115
  64. data/bin/2.0/rbrcc.exe +0 -0
  65. data/bin/2.0/rbuic4.exe +0 -0
  66. data/bin/2.0/smokeapi.exe +0 -0
  67. data/bin/2.0/smokedeptool.exe +0 -0
  68. data/bin/2.1/rbrcc.exe +0 -0
  69. data/bin/2.1/rbuic4.exe +0 -0
  70. data/bin/2.1/smokeapi.exe +0 -0
  71. data/bin/2.1/smokedeptool.exe +0 -0
  72. data/bin/2.2/rbrcc.exe +0 -0
  73. data/bin/2.2/rbuic4.exe +0 -0
  74. data/bin/2.2/smokeapi.exe +0 -0
  75. data/bin/2.2/smokedeptool.exe +0 -0
  76. data/bin/2.3/rbrcc.exe +0 -0
  77. data/bin/2.3/rbuic4.exe +0 -0
  78. data/bin/2.3/smokeapi.exe +0 -0
  79. data/bin/2.3/smokedeptool.exe +0 -0
  80. data/lib/2.0/libqtruby4shared.dll +0 -0
  81. data/lib/2.0/libsmokebase.dll +0 -0
  82. data/lib/2.0/libsmokeqtcore.dll +0 -0
  83. data/lib/2.0/libsmokeqtdeclarative.dll +0 -0
  84. data/lib/2.0/libsmokeqtgui.dll +0 -0
  85. data/lib/2.0/libsmokeqthelp.dll +0 -0
  86. data/lib/2.0/libsmokeqtmultimedia.dll +0 -0
  87. data/lib/2.0/libsmokeqtnetwork.dll +0 -0
  88. data/lib/2.0/libsmokeqtopengl.dll +0 -0
  89. data/lib/2.0/libsmokeqtscript.dll +0 -0
  90. data/lib/2.0/libsmokeqtsql.dll +0 -0
  91. data/lib/2.0/libsmokeqtsvg.dll +0 -0
  92. data/lib/2.0/libsmokeqttest.dll +0 -0
  93. data/lib/2.0/libsmokeqtuitools.dll +0 -0
  94. data/lib/2.0/libsmokeqtwebkit.dll +0 -0
  95. data/lib/2.0/libsmokeqtxml.dll +0 -0
  96. data/lib/2.0/libsmokeqtxmlpatterns.dll +0 -0
  97. data/lib/2.0/qtdeclarative.so +0 -0
  98. data/lib/2.0/qtruby4.so +0 -0
  99. data/lib/2.0/qtscript.so +0 -0
  100. data/lib/2.0/qttest.so +0 -0
  101. data/lib/2.0/qtuitools.so +0 -0
  102. data/lib/2.0/qtwebkit.so +0 -0
  103. data/lib/2.1/libqtruby4shared.dll +0 -0
  104. data/lib/2.1/libsmokebase.dll +0 -0
  105. data/lib/2.1/libsmokeqtcore.dll +0 -0
  106. data/lib/2.1/libsmokeqtdeclarative.dll +0 -0
  107. data/lib/2.1/libsmokeqthelp.dll +0 -0
  108. data/lib/2.1/libsmokeqtmultimedia.dll +0 -0
  109. data/lib/2.1/libsmokeqtnetwork.dll +0 -0
  110. data/lib/2.1/libsmokeqtopengl.dll +0 -0
  111. data/lib/2.1/libsmokeqtscript.dll +0 -0
  112. data/lib/2.1/libsmokeqtsql.dll +0 -0
  113. data/lib/2.1/libsmokeqtsvg.dll +0 -0
  114. data/lib/2.1/libsmokeqttest.dll +0 -0
  115. data/lib/2.1/libsmokeqtuitools.dll +0 -0
  116. data/lib/2.1/libsmokeqtwebkit.dll +0 -0
  117. data/lib/2.1/libsmokeqtxml.dll +0 -0
  118. data/lib/2.1/libsmokeqtxmlpatterns.dll +0 -0
  119. data/lib/2.1/qtdeclarative.so +0 -0
  120. data/lib/2.1/qtruby4.so +0 -0
  121. data/lib/2.1/qtscript.so +0 -0
  122. data/lib/2.1/qttest.so +0 -0
  123. data/lib/2.1/qtuitools.so +0 -0
  124. data/lib/2.1/qtwebkit.so +0 -0
  125. data/lib/2.2/libqtruby4shared.dll +0 -0
  126. data/lib/2.2/libsmokebase.dll +0 -0
  127. data/lib/2.2/libsmokeqtcore.dll +0 -0
  128. data/lib/2.2/libsmokeqtdeclarative.dll +0 -0
  129. data/lib/2.2/libsmokeqtgui.dll +0 -0
  130. data/lib/2.2/libsmokeqthelp.dll +0 -0
  131. data/lib/2.2/libsmokeqtmultimedia.dll +0 -0
  132. data/lib/2.2/libsmokeqtnetwork.dll +0 -0
  133. data/lib/2.2/libsmokeqtopengl.dll +0 -0
  134. data/lib/2.2/libsmokeqtscript.dll +0 -0
  135. data/lib/2.2/libsmokeqtsql.dll +0 -0
  136. data/lib/2.2/libsmokeqtsvg.dll +0 -0
  137. data/lib/2.2/libsmokeqttest.dll +0 -0
  138. data/lib/2.2/libsmokeqtuitools.dll +0 -0
  139. data/lib/2.2/libsmokeqtwebkit.dll +0 -0
  140. data/lib/2.2/libsmokeqtxml.dll +0 -0
  141. data/lib/2.2/libsmokeqtxmlpatterns.dll +0 -0
  142. data/lib/2.2/qtdeclarative.so +0 -0
  143. data/lib/2.2/qtruby4.so +0 -0
  144. data/lib/2.2/qtscript.so +0 -0
  145. data/lib/2.2/qttest.so +0 -0
  146. data/lib/2.2/qtuitools.so +0 -0
  147. data/lib/2.2/qtwebkit.so +0 -0
  148. data/lib/2.3/libqtruby4shared.dll +0 -0
  149. data/lib/2.3/libsmokebase.dll +0 -0
  150. data/lib/2.3/libsmokeqtcore.dll +0 -0
  151. data/lib/2.3/libsmokeqtdeclarative.dll +0 -0
  152. data/lib/2.3/libsmokeqtgui.dll +0 -0
  153. data/lib/2.3/libsmokeqthelp.dll +0 -0
  154. data/lib/2.3/libsmokeqtmultimedia.dll +0 -0
  155. data/lib/2.3/libsmokeqtnetwork.dll +0 -0
  156. data/lib/2.3/libsmokeqtopengl.dll +0 -0
  157. data/lib/2.3/libsmokeqtscript.dll +0 -0
  158. data/lib/2.3/libsmokeqtsql.dll +0 -0
  159. data/lib/2.3/libsmokeqtsvg.dll +0 -0
  160. data/lib/2.3/libsmokeqttest.dll +0 -0
  161. data/lib/2.3/libsmokeqtuitools.dll +0 -0
  162. data/lib/2.3/libsmokeqtwebkit.dll +0 -0
  163. data/lib/2.3/libsmokeqtxml.dll +0 -0
  164. data/lib/2.3/libsmokeqtxmlpatterns.dll +0 -0
  165. data/lib/2.3/qtdeclarative.so +0 -0
  166. data/lib/2.3/qtruby4.so +0 -0
  167. data/lib/2.3/qtscript.so +0 -0
  168. data/lib/2.3/qttest.so +0 -0
  169. data/lib/2.3/qtuitools.so +0 -0
  170. data/lib/2.3/qtwebkit.so +0 -0
  171. data/lib/qtbindings_qt_version.rb +0 -2
@@ -1,113 +1,112 @@
1
- require 'Qt'
2
- require './lcdrange.rb'
3
- require './cannon.rb'
4
-
5
- class GameBoard < Qt::Widget
6
-
7
- slots 'fire()', 'hit()', 'missed()', 'newGame()'
8
-
9
- def initialize(parent = nil)
10
- super
11
- quit = Qt::PushButton.new('&Quit')
12
- quit.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold))
13
-
14
- connect(quit, SIGNAL('clicked()'), $qApp, SLOT('quit()'))
15
-
16
- angle = LCDRange.new( 'ANGLE', self )
17
- angle.range = 5..70
18
-
19
- force = LCDRange.new( 'FORCE', self )
20
- force.range = 10..50
21
-
22
- @cannonField = CannonField.new( self )
23
-
24
- connect( angle, SIGNAL('valueChanged(int)'),
25
- @cannonField, SLOT('setAngle(int)') )
26
- connect( @cannonField, SIGNAL('angleChanged(int)'),
27
- angle, SLOT('setValue(int)') )
28
-
29
- connect( force, SIGNAL('valueChanged(int)'),
30
- @cannonField, SLOT('setForce(int)') )
31
- connect( @cannonField, SIGNAL('forceChanged(int)'),
32
- force, SLOT('setValue(int)') )
33
-
34
- connect( @cannonField, SIGNAL('hit()'),
35
- self, SLOT('hit()') )
36
- connect( @cannonField, SIGNAL('missed()'),
37
- self, SLOT('missed()') )
38
-
39
- shoot = Qt::PushButton.new( '&Shoot', self )
40
- shoot.setFont( Qt::Font.new( 'Times', 18, Qt::Font::Bold ) )
41
-
42
- connect( shoot, SIGNAL('clicked()'), SLOT('fire()') )
43
- connect( @cannonField, SIGNAL('canShoot(bool)'),
44
- shoot, SLOT('setEnabled(bool)') )
45
-
46
- restart = Qt::PushButton.new( '&New Game', self )
47
- restart.setFont( Qt::Font.new( 'Times', 18, Qt::Font::Bold ) )
48
-
49
- connect( restart, SIGNAL('clicked()'), self, SLOT('newGame()') )
50
-
51
- @hits = Qt::LCDNumber.new( 2, self )
52
- @shotsLeft = Qt::LCDNumber.new( 2, self )
53
- hitsLabel = Qt::Label.new( 'HITS', self )
54
- shotsLeftLabel = Qt::Label.new( 'SHOTS LEFT', self )
55
-
56
- topLayout = Qt::HBoxLayout.new
57
- topLayout.addWidget(shoot)
58
- topLayout.addWidget(@hits)
59
- topLayout.addWidget(hitsLabel)
60
- topLayout.addWidget(@shotsLeft)
61
- topLayout.addWidget(shotsLeftLabel)
62
- topLayout.addStretch(1)
63
- topLayout.addWidget(restart)
64
-
65
- leftLayout = Qt::VBoxLayout.new()
66
- leftLayout.addWidget( angle )
67
- leftLayout.addWidget( force )
68
-
69
- gridLayout = Qt::GridLayout.new
70
- gridLayout.addWidget( quit, 0, 0 )
71
- gridLayout.addLayout(topLayout, 0, 1)
72
- gridLayout.addLayout(leftLayout, 1, 0)
73
- gridLayout.addWidget( @cannonField, 1, 1, 2, 1 )
74
- gridLayout.setColumnStretch( 1, 10 )
75
- setLayout(gridLayout)
76
-
77
- angle.setValue( 60 )
78
- force.setValue( 25 )
79
- angle.setFocus()
80
-
81
- newGame()
82
- end
83
-
84
- def fire()
85
- if @cannonField.gameOver() || @cannonField.isShooting()
86
- return
87
- end
88
- @shotsLeft.display( @shotsLeft.intValue() - 1 )
89
- @cannonField.shoot()
90
- end
91
-
92
- def hit()
93
- @hits.display( @hits.intValue() + 1 )
94
- if @shotsLeft.intValue() == 0
95
- @cannonField.setGameOver()
96
- else
97
- @cannonField.newTarget()
98
- end
99
- end
100
-
101
- def missed()
102
- if @shotsLeft.intValue() == 0
103
- @cannonField.setGameOver()
104
- end
105
- end
106
-
107
- def newGame()
108
- @shotsLeft.display( 15.0 )
109
- @hits.display( 0 )
110
- @cannonField.restartGame()
111
- @cannonField.newTarget()
112
- end
113
- end
1
+ require 'Qt'
2
+ require_relative 'lcdrange.rb'
3
+ require_relative 'cannon.rb'
4
+
5
+ class GameBoard < Qt::Widget
6
+ slots 'fire()', 'hit()', 'missed()', 'newGame()'
7
+
8
+ def initialize(parent = nil)
9
+ super
10
+ quit = Qt::PushButton.new('&Quit')
11
+ quit.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold))
12
+
13
+ connect(quit, SIGNAL('clicked()'), $qApp, SLOT('quit()'))
14
+
15
+ angle = LCDRange.new('ANGLE', self)
16
+ angle.range = 5..70
17
+
18
+ force = LCDRange.new('FORCE', self)
19
+ force.range = 10..50
20
+
21
+ @cannonField = CannonField.new(self)
22
+
23
+ connect(angle, SIGNAL('valueChanged(int)'),
24
+ @cannonField, SLOT('setAngle(int)'))
25
+ connect(@cannonField, SIGNAL('angleChanged(int)'),
26
+ angle, SLOT('setValue(int)'))
27
+
28
+ connect(force, SIGNAL('valueChanged(int)'),
29
+ @cannonField, SLOT('setForce(int)'))
30
+ connect(@cannonField, SIGNAL('forceChanged(int)'),
31
+ force, SLOT('setValue(int)'))
32
+
33
+ connect(@cannonField, SIGNAL('hit()'),
34
+ self, SLOT('hit()'))
35
+ connect(@cannonField, SIGNAL('missed()'),
36
+ self, SLOT('missed()'))
37
+
38
+ shoot = Qt::PushButton.new('&Shoot', self)
39
+ shoot.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold))
40
+
41
+ connect(shoot, SIGNAL('clicked()'), SLOT('fire()'))
42
+ connect(@cannonField, SIGNAL('canShoot(bool)'),
43
+ shoot, SLOT('setEnabled(bool)'))
44
+
45
+ restart = Qt::PushButton.new('&New Game', self)
46
+ restart.setFont(Qt::Font.new('Times', 18, Qt::Font::Bold))
47
+
48
+ connect(restart, SIGNAL('clicked()'), self, SLOT('newGame()'))
49
+
50
+ @hits = Qt::LCDNumber.new(2, self)
51
+ @shotsLeft = Qt::LCDNumber.new(2, self)
52
+ hitsLabel = Qt::Label.new('HITS', self)
53
+ shotsLeftLabel = Qt::Label.new('SHOTS LEFT', self)
54
+
55
+ topLayout = Qt::HBoxLayout.new
56
+ topLayout.addWidget(shoot)
57
+ topLayout.addWidget(@hits)
58
+ topLayout.addWidget(hitsLabel)
59
+ topLayout.addWidget(@shotsLeft)
60
+ topLayout.addWidget(shotsLeftLabel)
61
+ topLayout.addStretch(1)
62
+ topLayout.addWidget(restart)
63
+
64
+ leftLayout = Qt::VBoxLayout.new()
65
+ leftLayout.addWidget(angle)
66
+ leftLayout.addWidget(force)
67
+
68
+ gridLayout = Qt::GridLayout.new
69
+ gridLayout.addWidget(quit, 0, 0)
70
+ gridLayout.addLayout(topLayout, 0, 1)
71
+ gridLayout.addLayout(leftLayout, 1, 0)
72
+ gridLayout.addWidget(@cannonField, 1, 1, 2, 1)
73
+ gridLayout.setColumnStretch(1, 10)
74
+ setLayout(gridLayout)
75
+
76
+ angle.setValue(60)
77
+ force.setValue(25)
78
+ angle.setFocus()
79
+
80
+ newGame()
81
+ end
82
+
83
+ def fire()
84
+ if @cannonField.gameOver() || @cannonField.isShooting()
85
+ return
86
+ end
87
+ @shotsLeft.display(@shotsLeft.intValue() - 1)
88
+ @cannonField.shoot()
89
+ end
90
+
91
+ def hit()
92
+ @hits.display(@hits.intValue() + 1)
93
+ if @shotsLeft.intValue() == 0
94
+ @cannonField.setGameOver()
95
+ else
96
+ @cannonField.newTarget()
97
+ end
98
+ end
99
+
100
+ def missed()
101
+ if @shotsLeft.intValue() == 0
102
+ @cannonField.setGameOver()
103
+ end
104
+ end
105
+
106
+ def newGame()
107
+ @shotsLeft.display(15.0)
108
+ @hits.display(0)
109
+ @cannonField.restartGame()
110
+ @cannonField.newTarget()
111
+ end
112
+ end
@@ -1,60 +1,59 @@
1
- require 'Qt'
2
-
3
- class LCDRange < Qt::Widget
4
- signals 'valueChanged(int)'
5
- slots 'setValue(int)', 'setRange(int, int)', 'setText(const char*)'
6
-
7
- def initialize(s, parent = nil)
8
- super(parent)
9
- init()
10
- setText(s)
11
- end
12
-
13
- def init()
14
- lcd = Qt::LCDNumber.new(2)
15
- @slider = Qt::Slider.new(Qt::Horizontal)
16
- @slider.range = 0..99
17
- @slider.value = 0
18
-
19
- @label = Qt::Label.new
20
- @label.setAlignment(Qt::AlignHCenter.to_i | Qt::AlignTop.to_i)
21
- @label.setSizePolicy(Qt::SizePolicy::Preferred, Qt::SizePolicy::Fixed)
22
-
23
- connect(@slider, SIGNAL('valueChanged(int)'), lcd, SLOT('display(int)'))
24
- connect(@slider, SIGNAL('valueChanged(int)'), SIGNAL('valueChanged(int)'))
25
-
26
- layout = Qt::VBoxLayout.new
27
- layout.addWidget(lcd)
28
- layout.addWidget(@slider)
29
- setLayout(layout)
30
-
31
- setFocusProxy(@slider)
32
- end
33
-
34
- def value()
35
- @slider.value()
36
- end
37
-
38
- def setValue( value )
39
- @slider.setValue( value )
40
- end
41
-
42
- def range=( r )
43
- setRange(r.begin, r.end)
44
- end
45
-
46
- def setRange( minVal, maxVal )
47
- if minVal < 0 || maxVal > 99 || minVal > maxVal
48
- qWarning( "LCDRange::setRange(#{minVal},#{maxVal})\n" +
49
- "\tRange must be 0..99\n" +
50
- "\tand minVal must not be greater than maxVal" )
51
- return
52
- end
53
- @slider.setRange( minVal, maxVal )
54
- end
55
-
56
- def setText( s )
57
- @label.setText( s )
58
- end
59
-
60
- end
1
+ require 'Qt'
2
+
3
+ class LCDRange < Qt::Widget
4
+ signals 'valueChanged(int)'
5
+ slots 'setValue(int)', 'setRange(int, int)', 'setText(const char*)'
6
+
7
+ def initialize(s, parent = nil)
8
+ super(parent)
9
+ init()
10
+ setText(s)
11
+ end
12
+
13
+ def init()
14
+ lcd = Qt::LCDNumber.new(2)
15
+ @slider = Qt::Slider.new(Qt::Horizontal)
16
+ @slider.range = 0..99
17
+ @slider.value = 0
18
+
19
+ @label = Qt::Label.new
20
+ @label.setAlignment(Qt::AlignHCenter.to_i | Qt::AlignTop.to_i)
21
+ @label.setSizePolicy(Qt::SizePolicy::Preferred, Qt::SizePolicy::Fixed)
22
+
23
+ connect(@slider, SIGNAL('valueChanged(int)'), lcd, SLOT('display(int)'))
24
+ connect(@slider, SIGNAL('valueChanged(int)'), SIGNAL('valueChanged(int)'))
25
+
26
+ layout = Qt::VBoxLayout.new
27
+ layout.addWidget(lcd)
28
+ layout.addWidget(@slider)
29
+ setLayout(layout)
30
+
31
+ setFocusProxy(@slider)
32
+ end
33
+
34
+ def value()
35
+ @slider.value()
36
+ end
37
+
38
+ def setValue(value)
39
+ @slider.setValue(value)
40
+ end
41
+
42
+ def range=(r)
43
+ setRange(r.begin, r.end)
44
+ end
45
+
46
+ def setRange(minVal, maxVal)
47
+ if minVal < 0 || maxVal > 99 || minVal > maxVal
48
+ qWarning("LCDRange::setRange(#{minVal},#{maxVal})\n" +
49
+ "\tRange must be 0..99\n" +
50
+ "\tand minVal must not be greater than maxVal")
51
+ return
52
+ end
53
+ @slider.setRange(minVal, maxVal)
54
+ end
55
+
56
+ def setText(s)
57
+ @label.setText(s)
58
+ end
59
+ end
@@ -1,11 +1,11 @@
1
- #!/usr/bin/env ruby
2
- $VERBOSE = true; $:.unshift File.dirname($0)
3
-
4
- require 'Qt'
5
- require './gamebrd.rb'
6
-
7
- app = Qt::Application.new(ARGV)
8
- gb = GameBoard.new
9
- gb.setGeometry( 100, 100, 500, 355 )
10
- gb.show
11
- app.exec
1
+ #!/usr/bin/env ruby
2
+ $VERBOSE = true; $:.unshift File.dirname($0)
3
+
4
+ require 'Qt'
5
+ require_relative 'gamebrd.rb'
6
+
7
+ app = Qt::Application.new(ARGV)
8
+ gb = GameBoard.new
9
+ gb.setGeometry(100, 100, 500, 355)
10
+ gb.show
11
+ app.exec
@@ -1,263 +1,262 @@
1
- include Math
2
-
3
- class CannonField < Qt::Widget
4
-
5
- signals 'hit()', 'missed()', 'angleChanged(int)', 'forceChanged(int)',
6
- 'canShoot(bool)'
7
-
8
- slots 'angle=(int)', 'force=(int)', 'shoot()', 'moveShot()',
9
- 'newTarget()', 'setGameOver()', 'restartGame()'
10
-
11
- def initialize(parent = nil)
12
- super
13
- @currentAngle = 45
14
- @currentForce = 0
15
- @timerCount = 0;
16
- @autoShootTimer = Qt::Timer.new( self )
17
- connect( @autoShootTimer, SIGNAL('timeout()'),
18
- self, SLOT('moveShot()') )
19
- @shootAngle = 0
20
- @shootForce = 0
21
- @target = Qt::Point.new(0, 0)
22
- @gameEnded = false
23
- @barrelPressed = false
24
- setPalette( Qt::Palette.new( Qt::Color.new( 250, 250, 200) ) )
25
- setAutoFillBackground(true)
26
- newTarget()
27
- @barrelRect = Qt::Rect.new(30, -5, 20, 10)
28
- end
29
-
30
- def angle()
31
- return @currentAngle
32
- end
33
-
34
- def force()
35
- return @currentForce
36
- end
37
-
38
- def gameOver()
39
- return @gameEnded
40
- end
41
-
42
- def angle=( degrees )
43
- if degrees < 5
44
- degrees = 5
45
- elsif degrees > 70
46
- degrees = 70
47
- end
48
- if @currentAngle == degrees
49
- return
50
- end
51
- @currentAngle = degrees
52
- update( cannonRect() )
53
- emit angleChanged( @currentAngle )
54
- end
55
-
56
- def force=( newton )
57
- if newton < 0
58
- newton = 0
59
- end
60
- if @currentForce == newton
61
- return
62
- end
63
- @currentForce = newton
64
- emit forceChanged( @currentForce )
65
- end
66
-
67
- def shoot()
68
- if shooting?
69
- return
70
- end
71
- @timerCount = 0
72
- @shootAngle = @currentAngle
73
- @shootForce = @currentForce
74
- @autoShootTimer.start( 25 )
75
- emit canShoot( false )
76
- end
77
-
78
- @@first_time = true
79
-
80
- def newTarget()
81
- if @@first_time
82
- @@first_time = false
83
- midnight = Qt::Time.new( 0, 0, 0 )
84
- srand( midnight.secsTo(Qt::Time.currentTime()) )
85
- end
86
- @target = Qt::Point.new( 200 + rand(190), 10 + rand(255) )
87
- update()
88
- end
89
-
90
- def setGameOver()
91
- if @gameEnded
92
- return
93
- end
94
- if shooting?
95
- @autoShootTimer.stop()
96
- end
97
- @gameEnded = true
98
- update()
99
- end
100
-
101
- def restartGame()
102
- if shooting?
103
- @autoShootTimer.stop()
104
- end
105
- @gameEnded = false
106
- update()
107
- emit canShoot( true )
108
- end
109
-
110
- def moveShot()
111
- r = Qt::Region.new( shotRect() )
112
- @timerCount += 1
113
-
114
- shotR = shotRect()
115
-
116
- if shotR.intersects( targetRect() )
117
- @autoShootTimer.stop()
118
- emit hit()
119
- emit canShoot(true)
120
- elsif shotR.x() > width() || shotR.y() > height() ||
121
- shotR.intersects(barrierRect())
122
- @autoShootTimer.stop()
123
- emit missed()
124
- emit canShoot(true)
125
- else
126
- r = r.unite( Qt::Region.new( shotR ) )
127
- end
128
-
129
- update( r )
130
- end
131
- private :moveShot
132
-
133
- def mousePressEvent( e )
134
- if e.button() != Qt::LeftButton
135
- return
136
- end
137
- if barrelHit( e.pos() )
138
- @barrelPressed = true
139
- end
140
- end
141
-
142
- def mouseMoveEvent( e )
143
- if !@barrelPressed
144
- return
145
- end
146
- pnt = e.pos();
147
- if pnt.x() <= 0
148
- pnt.setX( 1 )
149
- end
150
- if pnt.y() >= height()
151
- pnt.setY( height() - 1 )
152
- end
153
- rad = atan2((rect().bottom()-pnt.y()), pnt.x())
154
- self.angle = ( rad*180/3.14159265 ).round
155
- end
156
-
157
- def mouseReleaseEvent( e )
158
- if e.button() == Qt::LeftButton
159
- @barrelPressed = false
160
- end
161
- end
162
-
163
- def paintEvent( e )
164
- painter = Qt::Painter.new( self )
165
-
166
- if @gameEnded
167
- painter.pen = Qt::Color.new(Qt::black)
168
- painter.font = Qt::Font.new( 'Courier', 48, Qt::Font::Bold )
169
- painter.drawText( rect(), Qt::AlignCenter, 'Game Over' )
170
- end
171
- paintCannon( painter )
172
- paintBarrier( painter )
173
- if shooting?
174
- paintShot( painter )
175
- end
176
- if !@gameEnded
177
- paintTarget( painter )
178
- end
179
-
180
- painter.end
181
- end
182
-
183
- def paintShot( painter )
184
- painter.pen = Qt::NoPen
185
- painter.brush = Qt::Brush.new(Qt::black)
186
- painter.drawRect( shotRect() )
187
- end
188
-
189
- def paintTarget( painter )
190
- painter.brush = Qt::Brush.new(Qt::red)
191
- painter.pen = Qt::Color.new(Qt::black)
192
- painter.drawRect( targetRect() )
193
- end
194
-
195
- def paintBarrier( painter )
196
- painter.brush = Qt::Brush.new(Qt::yellow)
197
- painter.pen = Qt::Color.new(Qt::black)
198
- painter.drawRect( barrierRect() )
199
- end
200
-
201
- def paintCannon( painter )
202
- painter.pen = Qt::NoPen
203
- painter.brush = Qt::Brush.new(Qt::blue)
204
-
205
- painter.save
206
- painter.translate(0, height())
207
- painter.drawPie( Qt::Rect.new(-35, -35, 70, 70), 0, 90*16 )
208
- painter.rotate( - @currentAngle )
209
- painter.drawRect( @barrelRect )
210
- painter.restore
211
- end
212
-
213
- private :paintShot, :paintTarget, :paintBarrier, :paintCannon
214
-
215
- def cannonRect()
216
- r = Qt::Rect.new( 0, 0, 50, 50)
217
- r.moveBottomLeft( rect().bottomLeft() )
218
- return r
219
- end
220
-
221
- def shotRect()
222
- gravity = 4.0
223
-
224
- time = @timerCount / 4.0
225
- velocity = @shootForce
226
- radians = @shootAngle*3.14159265/180.0
227
-
228
- velx = velocity*cos( radians )
229
- vely = velocity*sin( radians )
230
- x0 = ( @barrelRect.right() + 5.0 )*cos(radians)
231
- y0 = ( @barrelRect.right() + 5.0 )*sin(radians)
232
- x = x0 + velx*time
233
- y = y0 + vely*time - 0.5*gravity*time*time
234
-
235
- r = Qt::Rect.new( 0, 0, 6, 6 );
236
- r.moveCenter( Qt::Point.new( x.round, height() - 1 - y.round ) )
237
- return r
238
- end
239
-
240
- def targetRect()
241
- r = Qt::Rect.new( 0, 0, 20, 10 )
242
- r.moveCenter( Qt::Point.new(@target.x(),height() - 1 - @target.y()) )
243
- return r
244
- end
245
-
246
- def barrierRect()
247
- return Qt::Rect.new( 145, height() - 100, 15, 99 )
248
- end
249
-
250
- def barrelHit( pos )
251
- matrix = Qt::Matrix.new
252
- matrix.translate( 0, height() )
253
- matrix.rotate( - @currentAngle )
254
- matrix = matrix.inverted()
255
- return @barrelRect.contains( matrix.map(pos) )
256
- end
257
-
258
- private :cannonRect, :shotRect, :targetRect, :barrierRect, :barrelHit
259
-
260
- def shooting?
261
- return @autoShootTimer.active?
262
- end
263
- end
1
+ include Math
2
+
3
+ class CannonField < Qt::Widget
4
+ signals 'hit()', 'missed()', 'angleChanged(int)', 'forceChanged(int)',
5
+ 'canShoot(bool)'
6
+
7
+ slots 'angle=(int)', 'force=(int)', 'shoot()', 'moveShot()',
8
+ 'newTarget()', 'setGameOver()', 'restartGame()'
9
+
10
+ def initialize(parent = nil)
11
+ super
12
+ @currentAngle = 45
13
+ @currentForce = 0
14
+ @timerCount = 0;
15
+ @autoShootTimer = Qt::Timer.new(self)
16
+ connect(@autoShootTimer, SIGNAL('timeout()'),
17
+ self, SLOT('moveShot()'))
18
+ @shootAngle = 0
19
+ @shootForce = 0
20
+ @target = Qt::Point.new(0, 0)
21
+ @gameEnded = false
22
+ @barrelPressed = false
23
+ setPalette(Qt::Palette.new(Qt::Color.new(250, 250, 200)))
24
+ setAutoFillBackground(true)
25
+ newTarget()
26
+ @barrelRect = Qt::Rect.new(30, -5, 20, 10)
27
+ end
28
+
29
+ def angle()
30
+ return @currentAngle
31
+ end
32
+
33
+ def force()
34
+ return @currentForce
35
+ end
36
+
37
+ def gameOver()
38
+ return @gameEnded
39
+ end
40
+
41
+ def angle=(degrees)
42
+ if degrees < 5
43
+ degrees = 5
44
+ elsif degrees > 70
45
+ degrees = 70
46
+ end
47
+ if @currentAngle == degrees
48
+ return
49
+ end
50
+ @currentAngle = degrees
51
+ update(cannonRect())
52
+ emit angleChanged(@currentAngle)
53
+ end
54
+
55
+ def force=(newton)
56
+ if newton < 0
57
+ newton = 0
58
+ end
59
+ if @currentForce == newton
60
+ return
61
+ end
62
+ @currentForce = newton
63
+ emit forceChanged(@currentForce)
64
+ end
65
+
66
+ def shoot()
67
+ if shooting?
68
+ return
69
+ end
70
+ @timerCount = 0
71
+ @shootAngle = @currentAngle
72
+ @shootForce = @currentForce
73
+ @autoShootTimer.start(25)
74
+ emit canShoot(false)
75
+ end
76
+
77
+ @@first_time = true
78
+
79
+ def newTarget()
80
+ if @@first_time
81
+ @@first_time = false
82
+ midnight = Qt::Time.new(0, 0, 0)
83
+ srand(midnight.secsTo(Qt::Time.currentTime()))
84
+ end
85
+ @target = Qt::Point.new(200 + rand(190), 10 + rand(255))
86
+ update()
87
+ end
88
+
89
+ def setGameOver()
90
+ if @gameEnded
91
+ return
92
+ end
93
+ if shooting?
94
+ @autoShootTimer.stop()
95
+ end
96
+ @gameEnded = true
97
+ update()
98
+ end
99
+
100
+ def restartGame()
101
+ if shooting?
102
+ @autoShootTimer.stop()
103
+ end
104
+ @gameEnded = false
105
+ update()
106
+ emit canShoot(true)
107
+ end
108
+
109
+ def moveShot()
110
+ r = Qt::Region.new(shotRect())
111
+ @timerCount += 1
112
+
113
+ shotR = shotRect()
114
+
115
+ if shotR.intersects(targetRect())
116
+ @autoShootTimer.stop()
117
+ emit hit()
118
+ emit canShoot(true)
119
+ elsif shotR.x() > width() || shotR.y() > height() ||
120
+ shotR.intersects(barrierRect())
121
+ @autoShootTimer.stop()
122
+ emit missed()
123
+ emit canShoot(true)
124
+ else
125
+ r = r.unite(Qt::Region.new(shotR))
126
+ end
127
+
128
+ update(r)
129
+ end
130
+ private :moveShot
131
+
132
+ def mousePressEvent(e)
133
+ if e.button() != Qt::LeftButton
134
+ return
135
+ end
136
+ if barrelHit(e.pos())
137
+ @barrelPressed = true
138
+ end
139
+ end
140
+
141
+ def mouseMoveEvent(e)
142
+ if !@barrelPressed
143
+ return
144
+ end
145
+ pnt = e.pos();
146
+ if pnt.x() <= 0
147
+ pnt.setX(1)
148
+ end
149
+ if pnt.y() >= height()
150
+ pnt.setY(height() - 1)
151
+ end
152
+ rad = atan2((rect().bottom() - pnt.y()), pnt.x())
153
+ self.angle = (rad * 180 / 3.14159265).round
154
+ end
155
+
156
+ def mouseReleaseEvent(e)
157
+ if e.button() == Qt::LeftButton
158
+ @barrelPressed = false
159
+ end
160
+ end
161
+
162
+ def paintEvent(e)
163
+ painter = Qt::Painter.new(self)
164
+
165
+ if @gameEnded
166
+ painter.pen = Qt::Color.new(Qt::black)
167
+ painter.font = Qt::Font.new('Courier', 48, Qt::Font::Bold)
168
+ painter.drawText(rect(), Qt::AlignCenter, 'Game Over')
169
+ end
170
+ paintCannon(painter)
171
+ paintBarrier(painter)
172
+ if shooting?
173
+ paintShot(painter)
174
+ end
175
+ if !@gameEnded
176
+ paintTarget(painter)
177
+ end
178
+
179
+ painter.end
180
+ end
181
+
182
+ def paintShot(painter)
183
+ painter.pen = Qt::NoPen
184
+ painter.brush = Qt::Brush.new(Qt::black)
185
+ painter.drawRect(shotRect())
186
+ end
187
+
188
+ def paintTarget(painter)
189
+ painter.brush = Qt::Brush.new(Qt::red)
190
+ painter.pen = Qt::Color.new(Qt::black)
191
+ painter.drawRect(targetRect())
192
+ end
193
+
194
+ def paintBarrier(painter)
195
+ painter.brush = Qt::Brush.new(Qt::yellow)
196
+ painter.pen = Qt::Color.new(Qt::black)
197
+ painter.drawRect(barrierRect())
198
+ end
199
+
200
+ def paintCannon(painter)
201
+ painter.pen = Qt::NoPen
202
+ painter.brush = Qt::Brush.new(Qt::blue)
203
+
204
+ painter.save
205
+ painter.translate(0, height())
206
+ painter.drawPie(Qt::Rect.new(-35, -35, 70, 70), 0, 90 * 16)
207
+ painter.rotate(- @currentAngle)
208
+ painter.drawRect(@barrelRect)
209
+ painter.restore
210
+ end
211
+
212
+ private :paintShot, :paintTarget, :paintBarrier, :paintCannon
213
+
214
+ def cannonRect()
215
+ r = Qt::Rect.new(0, 0, 50, 50)
216
+ r.moveBottomLeft(rect().bottomLeft())
217
+ return r
218
+ end
219
+
220
+ def shotRect()
221
+ gravity = 4.0
222
+
223
+ time = @timerCount / 4.0
224
+ velocity = @shootForce
225
+ radians = @shootAngle * 3.14159265 / 180.0
226
+
227
+ velx = velocity * cos(radians)
228
+ vely = velocity * sin(radians)
229
+ x0 = (@barrelRect.right() + 5.0) * cos(radians)
230
+ y0 = (@barrelRect.right() + 5.0) * sin(radians)
231
+ x = x0 + velx * time
232
+ y = y0 + vely * time - 0.5 * gravity * time * time
233
+
234
+ r = Qt::Rect.new(0, 0, 6, 6);
235
+ r.moveCenter(Qt::Point.new(x.round, height() - 1 - y.round))
236
+ return r
237
+ end
238
+
239
+ def targetRect()
240
+ r = Qt::Rect.new(0, 0, 20, 10)
241
+ r.moveCenter(Qt::Point.new(@target.x(), height() - 1 - @target.y()))
242
+ return r
243
+ end
244
+
245
+ def barrierRect()
246
+ return Qt::Rect.new(145, height() - 100, 15, 99)
247
+ end
248
+
249
+ def barrelHit(pos)
250
+ matrix = Qt::Matrix.new
251
+ matrix.translate(0, height())
252
+ matrix.rotate(- @currentAngle)
253
+ matrix = matrix.inverted()
254
+ return @barrelRect.contains(matrix.map(pos))
255
+ end
256
+
257
+ private :cannonRect, :shotRect, :targetRect, :barrierRect, :barrelHit
258
+
259
+ def shooting?
260
+ return @autoShootTimer.active?
261
+ end
262
+ end