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

Sign up to get free protection for your applications and to get access to all the features.
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