-rw-r--r-- | noncore/games/oyatzee/oyatzee.cpp | 50 | ||||
-rw-r--r-- | noncore/games/oyatzee/oyatzee.pro | 2 |
2 files changed, 29 insertions, 23 deletions
diff --git a/noncore/games/oyatzee/oyatzee.cpp b/noncore/games/oyatzee/oyatzee.cpp index a55aa73..27c0a9f 100644 --- a/noncore/games/oyatzee/oyatzee.cpp +++ b/noncore/games/oyatzee/oyatzee.cpp | |||
@@ -1,490 +1,496 @@ | |||
1 | #include "oyatzee.h" | 1 | #include "oyatzee.h" |
2 | 2 | ||
3 | /* OPIE */ | ||
4 | #include <opie2/odebug.h> | ||
5 | using namespace Opie::Core; | ||
6 | |||
7 | /* QT */ | ||
3 | #include <qmessagebox.h> | 8 | #include <qmessagebox.h> |
4 | #include <qpushbutton.h> | 9 | #include <qpushbutton.h> |
5 | #include <qpainter.h> | 10 | #include <qpainter.h> |
6 | #include <qlayout.h> | 11 | #include <qlayout.h> |
7 | 12 | ||
13 | /* STD */ | ||
8 | #include <stdlib.h> | 14 | #include <stdlib.h> |
9 | 15 | ||
10 | OYatzee::OYatzee( QWidget *parent , const char *name, WFlags fl ) : QMainWindow( parent , name , fl ) | 16 | OYatzee::OYatzee( QWidget *parent , const char *name, WFlags fl ) : QMainWindow( parent , name , fl ) |
11 | { | 17 | { |
12 | QWidget *thing = new QWidget( this ); | 18 | QWidget *thing = new QWidget( this ); |
13 | setCentralWidget( thing ); | 19 | setCentralWidget( thing ); |
14 | 20 | ||
15 | setCaption( tr( "OYatzee" ) ); | 21 | setCaption( tr( "OYatzee" ) ); |
16 | 22 | ||
17 | setPlayerNumber( 4 ); | 23 | setPlayerNumber( 4 ); |
18 | setRoundsNumber( 1 ); | 24 | setRoundsNumber( 1 ); |
19 | 25 | ||
20 | lastPlayerFinished = false; | 26 | lastPlayerFinished = false; |
21 | currentPlayer = 1; | 27 | currentPlayer = 1; |
22 | 28 | ||
23 | ps.append( new Player( "Carsten" ) ); | 29 | ps.append( new Player( "Carsten" ) ); |
24 | ps.append( new Player( "Julia" ) ); | 30 | ps.append( new Player( "Julia" ) ); |
25 | ps.append( new Player( "Christine" ) ); | 31 | ps.append( new Player( "Christine" ) ); |
26 | ps.append( new Player( "Stephan" ) ); | 32 | ps.append( new Player( "Stephan" ) ); |
27 | 33 | ||
28 | 34 | ||
29 | QVBoxLayout *vbox = new QVBoxLayout( thing ); | 35 | QVBoxLayout *vbox = new QVBoxLayout( thing ); |
30 | 36 | ||
31 | sb = new Scoreboard( ps, thing , "sb" ); | 37 | sb = new Scoreboard( ps, thing , "sb" ); |
32 | connect( sb->pb , SIGNAL( item(int) ), this , SLOT( slotEndRound(int) ) ); | 38 | connect( sb->pb , SIGNAL( item(int) ), this , SLOT( slotEndRound(int) ) ); |
33 | 39 | ||
34 | dw = new DiceWidget( thing , "dw" ); | 40 | dw = new DiceWidget( thing , "dw" ); |
35 | dw->setMaximumHeight( this->height()/4 ); | 41 | dw->setMaximumHeight( this->height()/4 ); |
36 | connect( dw->rollButton, SIGNAL( clicked() ), this , SLOT( slotRollDices() ) ); | 42 | connect( dw->rollButton, SIGNAL( clicked() ), this , SLOT( slotRollDices() ) ); |
37 | 43 | ||
38 | vbox->addWidget( sb ); | 44 | vbox->addWidget( sb ); |
39 | vbox->addWidget( dw ); | 45 | vbox->addWidget( dw ); |
40 | } | 46 | } |
41 | 47 | ||
42 | void OYatzee::slotEndRound( int item ) | 48 | void OYatzee::slotEndRound( int item ) |
43 | { | 49 | { |
44 | qDebug( "Der User hat Nummer %d ausgewählt" , item ); | 50 | odebug << "Der User hat Nummer " << item << " ausgewählt" << oendl; |
45 | 51 | ||
46 | /* | 52 | /* |
47 | * if the user clicked on Total, Bonus or Score and thus not on a | 53 | * if the user clicked on Total, Bonus or Score and thus not on a |
48 | * selectable item return and do nothing | 54 | * selectable item return and do nothing |
49 | */ | 55 | */ |
50 | if ( item == 7 || item == 8 || item == 16 ) return; | 56 | if ( item == 7 || item == 8 || item == 16 ) return; |
51 | 57 | ||
52 | /* | 58 | /* |
53 | * check if the user can really click on that item | 59 | * check if the user can really click on that item |
54 | */ | 60 | */ |
55 | if ( posibilities.find( item ) == posibilities.end() ) return; | 61 | if ( posibilities.find( item ) == posibilities.end() ) return; |
56 | 62 | ||
57 | QValueListInt numbers; | 63 | QValueListInt numbers; |
58 | 64 | ||
59 | Dice *d = dw->diceList.first(); | 65 | Dice *d = dw->diceList.first(); |
60 | for ( ; d != 0 ; d = dw->diceList.next() ) | 66 | for ( ; d != 0 ; d = dw->diceList.next() ) |
61 | { | 67 | { |
62 | numbers.append( d->hasValue() ); | 68 | numbers.append( d->hasValue() ); |
63 | } | 69 | } |
64 | 70 | ||
65 | int points = 0; | 71 | int points = 0; |
66 | 72 | ||
67 | switch ( item ) | 73 | switch ( item ) |
68 | { | 74 | { |
69 | case Ones: | 75 | case Ones: |
70 | points = getPoints( 1 , numbers ); | 76 | points = getPoints( 1 , numbers ); |
71 | break; | 77 | break; |
72 | case Twos: | 78 | case Twos: |
73 | points = getPoints( 2 , numbers ); | 79 | points = getPoints( 2 , numbers ); |
74 | break; | 80 | break; |
75 | case Threes: | 81 | case Threes: |
76 | points = getPoints( 3 , numbers ); | 82 | points = getPoints( 3 , numbers ); |
77 | break; | 83 | break; |
78 | case Fours: | 84 | case Fours: |
79 | points = getPoints( 4 , numbers ); | 85 | points = getPoints( 4 , numbers ); |
80 | break; | 86 | break; |
81 | case Fives: | 87 | case Fives: |
82 | points = getPoints( 5 , numbers ); | 88 | points = getPoints( 5 , numbers ); |
83 | break; | 89 | break; |
84 | case Sixes: | 90 | case Sixes: |
85 | points = getPoints( 6 , numbers ); | 91 | points = getPoints( 6 , numbers ); |
86 | break; | 92 | break; |
87 | case ThreeOfAKind: | 93 | case ThreeOfAKind: |
88 | points = oakPoints; | 94 | points = oakPoints; |
89 | break; | 95 | break; |
90 | case FourOfAKind: | 96 | case FourOfAKind: |
91 | points = oakPoints; | 97 | points = oakPoints; |
92 | break; | 98 | break; |
93 | case FullHouse: | 99 | case FullHouse: |
94 | points = 25; | 100 | points = 25; |
95 | break; | 101 | break; |
96 | case SStraight: | 102 | case SStraight: |
97 | points = 30; | 103 | points = 30; |
98 | break; | 104 | break; |
99 | case LStraight: | 105 | case LStraight: |
100 | points = 40; | 106 | points = 40; |
101 | break; | 107 | break; |
102 | case Yatzee: | 108 | case Yatzee: |
103 | points = 50; | 109 | points = 50; |
104 | break; | 110 | break; |
105 | case Chance: | 111 | case Chance: |
106 | points = getPoints ( Chance , numbers ); | 112 | points = getPoints ( Chance , numbers ); |
107 | } | 113 | } |
108 | 114 | ||
109 | sb->nextRB(currentPlayer-1)->updateMap( item , points ); | 115 | sb->nextRB(currentPlayer-1)->updateMap( item , points ); |
110 | nextPlayer(); | 116 | nextPlayer(); |
111 | 117 | ||
112 | qDebug( "Punkte: %d" , points ); | 118 | odebug << "Punkte: " << points << "" << oendl; |
113 | } | 119 | } |
114 | 120 | ||
115 | void OYatzee::nextPlayer() | 121 | void OYatzee::nextPlayer() |
116 | { | 122 | { |
117 | currentPlayer++; | 123 | currentPlayer++; |
118 | 124 | ||
119 | if ( currentPlayer > numOfPlayers ) | 125 | if ( currentPlayer > numOfPlayers ) |
120 | { | 126 | { |
121 | currentPlayer = 1; | 127 | currentPlayer = 1; |
122 | } | 128 | } |
123 | 129 | ||
124 | ps.at(currentPlayer-1)->turn = 0; | 130 | ps.at(currentPlayer-1)->turn = 0; |
125 | } | 131 | } |
126 | 132 | ||
127 | int OYatzee::getPoints( const int num , QValueListInt l) | 133 | int OYatzee::getPoints( const int num , QValueListInt l) |
128 | { | 134 | { |
129 | QValueListInt::Iterator it = l.begin(); | 135 | QValueListInt::Iterator it = l.begin(); |
130 | int c = 0; | 136 | int c = 0; |
131 | 137 | ||
132 | if ( num != Chance ) | 138 | if ( num != Chance ) |
133 | { | 139 | { |
134 | for ( ; it != l.end() ; ++it ) | 140 | for ( ; it != l.end() ; ++it ) |
135 | { | 141 | { |
136 | if ( *it == num ) | 142 | if ( *it == num ) |
137 | c++; | 143 | c++; |
138 | } | 144 | } |
139 | 145 | ||
140 | return c * num; | 146 | return c * num; |
141 | } | 147 | } |
142 | else | 148 | else |
143 | { | 149 | { |
144 | for ( ; it != l.end() ; ++it ) | 150 | for ( ; it != l.end() ; ++it ) |
145 | { | 151 | { |
146 | c += *it; | 152 | c += *it; |
147 | } | 153 | } |
148 | return c; | 154 | return c; |
149 | } | 155 | } |
150 | } | 156 | } |
151 | 157 | ||
152 | OYatzee::~OYatzee() | 158 | OYatzee::~OYatzee() |
153 | { | 159 | { |
154 | } | 160 | } |
155 | 161 | ||
156 | void OYatzee::detectPosibilities() | 162 | void OYatzee::detectPosibilities() |
157 | { | 163 | { |
158 | posibilities.clear(); | 164 | posibilities.clear(); |
159 | qDebug( "running detectPosibilities()" ); | 165 | odebug << "running detectPosibilities()" << oendl; |
160 | 166 | ||
161 | Dice *d = dw->diceList.first(); | 167 | Dice *d = dw->diceList.first(); |
162 | 168 | ||
163 | QValueListInt numbers; | 169 | QValueListInt numbers; |
164 | 170 | ||
165 | for ( ; d != 0 ; d = dw->diceList.next() ) | 171 | for ( ; d != 0 ; d = dw->diceList.next() ) |
166 | { | 172 | { |
167 | numbers.append( d->hasValue() ); | 173 | numbers.append( d->hasValue() ); |
168 | } | 174 | } |
169 | 175 | ||
170 | //the 6 numbers | 176 | //the 6 numbers |
171 | QValueListInt::Iterator it; | 177 | QValueListInt::Iterator it; |
172 | 178 | ||
173 | for ( int i = 1 ; i < 7 ; ++i ) // check for 1-->6 | 179 | for ( int i = 1 ; i < 7 ; ++i ) // check for 1-->6 |
174 | { | 180 | { |
175 | bool cont = false; | 181 | bool cont = false; |
176 | it = numbers.begin(); | 182 | it = numbers.begin(); |
177 | for ( ; it != numbers.end() ; ++it ) | 183 | for ( ; it != numbers.end() ; ++it ) |
178 | { | 184 | { |
179 | if ( cont ) | 185 | if ( cont ) |
180 | continue; | 186 | continue; |
181 | 187 | ||
182 | if ( numbers.find( i ) != numbers.end() ) | 188 | if ( numbers.find( i ) != numbers.end() ) |
183 | { | 189 | { |
184 | posibilities.append( i ); | 190 | posibilities.append( i ); |
185 | cont = true; | 191 | cont = true; |
186 | } | 192 | } |
187 | } | 193 | } |
188 | } | 194 | } |
189 | 195 | ||
190 | //3er, 4er, Yatzee | 196 | //3er, 4er, Yatzee |
191 | it = numbers.begin(); | 197 | it = numbers.begin(); |
192 | int count; | 198 | int count; |
193 | int temp; | 199 | int temp; |
194 | int countFH = 0; //for the full-house-check | 200 | int countFH = 0; //for the full-house-check |
195 | 201 | ||
196 | for ( int i = 1 ; i < 7 ; ++i ) // check for 1-->6 at least 3 times | 202 | for ( int i = 1 ; i < 7 ; ++i ) // check for 1-->6 at least 3 times |
197 | { | 203 | { |
198 | count = 0; | 204 | count = 0; |
199 | temp = 0; | 205 | temp = 0; |
200 | it = numbers.begin(); | 206 | it = numbers.begin(); |
201 | for ( ; it != numbers.end() ; ++it ) | 207 | for ( ; it != numbers.end() ; ++it ) |
202 | { | 208 | { |
203 | if ( *it == i ) | 209 | if ( *it == i ) |
204 | { | 210 | { |
205 | count++; | 211 | count++; |
206 | temp++; | 212 | temp++; |
207 | } | 213 | } |
208 | if ( temp == 2 ) | 214 | if ( temp == 2 ) |
209 | countFH = temp; | 215 | countFH = temp; |
210 | } | 216 | } |
211 | 217 | ||
212 | if ( count >= 3 ) | 218 | if ( count >= 3 ) |
213 | { | 219 | { |
214 | posibilities.append( 9 ); | 220 | posibilities.append( 9 ); |
215 | 221 | ||
216 | //now we check if it is a full house | 222 | //now we check if it is a full house |
217 | if ( count == 3 && countFH == 2 ) //aka Full House | 223 | if ( count == 3 && countFH == 2 ) //aka Full House |
218 | posibilities.append( 11 ); | 224 | posibilities.append( 11 ); |
219 | if ( count >= 4 ) | 225 | if ( count >= 4 ) |
220 | posibilities.append( 10 ); | 226 | posibilities.append( 10 ); |
221 | if ( count == 5 ) //Yatzee | 227 | if ( count == 5 ) //Yatzee |
222 | posibilities.append( 14 ); | 228 | posibilities.append( 14 ); |
223 | 229 | ||
224 | oakPoints = count * i; | 230 | oakPoints = count * i; |
225 | } | 231 | } |
226 | } | 232 | } |
227 | 233 | ||
228 | //S-Straight | 234 | //S-Straight |
229 | if ( numbers.find( 3 ) != numbers.end() && numbers.find( 4 ) != numbers.end() ) | 235 | if ( numbers.find( 3 ) != numbers.end() && numbers.find( 4 ) != numbers.end() ) |
230 | { | 236 | { |
231 | bool isLong = false; | 237 | bool isLong = false; |
232 | bool isShort = true; | 238 | bool isShort = true; |
233 | //L-Straight | 239 | //L-Straight |
234 | if ( numbers.find( 2 ) != numbers.end() && numbers.find( 5 ) != numbers.end() ) | 240 | if ( numbers.find( 2 ) != numbers.end() && numbers.find( 5 ) != numbers.end() ) |
235 | { | 241 | { |
236 | isShort = true; | 242 | isShort = true; |
237 | 243 | ||
238 | //12345 or 23456 | 244 | //12345 or 23456 |
239 | if ( numbers.find( 1 ) != numbers.end() || numbers.find( 6) != numbers.end() ) | 245 | if ( numbers.find( 1 ) != numbers.end() || numbers.find( 6) != numbers.end() ) |
240 | isLong = true; | 246 | isLong = true; |
241 | } | 247 | } |
242 | //1234 | 248 | //1234 |
243 | if ( numbers.find( 1 ) != numbers.end() && numbers.find( 2 ) != numbers.end() ) | 249 | if ( numbers.find( 1 ) != numbers.end() && numbers.find( 2 ) != numbers.end() ) |
244 | isShort = true; | 250 | isShort = true; |
245 | //3456 | 251 | //3456 |
246 | if ( numbers.find( 5 ) != numbers.end() && numbers.find( 6 ) != numbers.end() ) | 252 | if ( numbers.find( 5 ) != numbers.end() && numbers.find( 6 ) != numbers.end() ) |
247 | isShort = true; | 253 | isShort = true; |
248 | 254 | ||
249 | if ( isShort ) | 255 | if ( isShort ) |
250 | posibilities.append( 12 ); | 256 | posibilities.append( 12 ); |
251 | if ( isLong ) | 257 | if ( isLong ) |
252 | posibilities.append( 13 ); | 258 | posibilities.append( 13 ); |
253 | } | 259 | } |
254 | 260 | ||
255 | posibilities.append( 13 ); //Chance, well, this is allways possible | 261 | posibilities.append( 13 ); //Chance, well, this is allways possible |
256 | 262 | ||
257 | displayPossibilites(); | 263 | displayPossibilites(); |
258 | } | 264 | } |
259 | 265 | ||
260 | void OYatzee::displayPossibilites() | 266 | void OYatzee::displayPossibilites() |
261 | { | 267 | { |
262 | //X for ( QValueListInt::Iterator it = posibilities.begin() ; it != posibilities.end(); ++it ) | 268 | //X for ( QValueListInt::Iterator it = posibilities.begin() ; it != posibilities.end(); ++it ) |
263 | //X { | 269 | //X { |
264 | //X qDebug( QString::number( *it ) ); | 270 | //X odebug << QString::number( *it ) << oendl; |
265 | //X switch ( *it ) | 271 | //X switch ( *it ) |
266 | //X { | 272 | //X { |
267 | //X case Ones: | 273 | //X case Ones: |
268 | //X qDebug( "1er" ); | 274 | //X odebug << "1er" << oendl; |
269 | //X break; | 275 | //X break; |
270 | //X case Twos: | 276 | //X case Twos: |
271 | //X qDebug( "2er" ); | 277 | //X odebug << "2er" << oendl; |
272 | //X break; | 278 | //X break; |
273 | //X case Threes: | 279 | //X case Threes: |
274 | //X qDebug( "3er" ); | 280 | //X odebug << "3er" << oendl; |
275 | //X break; | 281 | //X break; |
276 | //X case Fours: | 282 | //X case Fours: |
277 | //X qDebug( "4er" ); | 283 | //X odebug << "4er" << oendl; |
278 | //X break; | 284 | //X break; |
279 | //X case Fives: | 285 | //X case Fives: |
280 | //X qDebug( "5er" ); | 286 | //X odebug << "5er" << oendl; |
281 | //X break; | 287 | //X break; |
282 | //X case Sixes: | 288 | //X case Sixes: |
283 | //X qDebug( "6er" ); | 289 | //X odebug << "6er" << oendl; |
284 | //X break; | 290 | //X break; |
285 | //X case ThreeOfAKind: | 291 | //X case ThreeOfAKind: |
286 | //X qDebug( "3oaK" ); | 292 | //X odebug << "3oaK" << oendl; |
287 | //X break; | 293 | //X break; |
288 | //X case FourOfAKind: | 294 | //X case FourOfAKind: |
289 | //X qDebug( "4oaK" ); | 295 | //X odebug << "4oaK" << oendl; |
290 | //X break; | 296 | //X break; |
291 | //X case FullHouse: | 297 | //X case FullHouse: |
292 | //X qDebug( "Full House" ); | 298 | //X odebug << "Full House" << oendl; |
293 | //X break; | 299 | //X break; |
294 | //X case SStraight: | 300 | //X case SStraight: |
295 | //X qDebug( "Short S" ); | 301 | //X odebug << "Short S" << oendl; |
296 | //X break; | 302 | //X break; |
297 | //X case LStraight: | 303 | //X case LStraight: |
298 | //X qDebug( "Long S" ); | 304 | //X odebug << "Long S" << oendl; |
299 | //X break; | 305 | //X break; |
300 | //X case Yatzee: | 306 | //X case Yatzee: |
301 | //X qDebug( "Yatzee!" ); | 307 | //X odebug << "Yatzee!" << oendl; |
302 | //X break; | 308 | //X break; |
303 | //X case Chance: | 309 | //X case Chance: |
304 | //X qDebug( "Chance" ); | 310 | //X odebug << "Chance" << oendl; |
305 | //X break; | 311 | //X break; |
306 | //X } | 312 | //X } |
307 | //X } | 313 | //X } |
308 | 314 | ||
309 | sb->pb->setIntlist( posibilities ); | 315 | sb->pb->setIntlist( posibilities ); |
310 | sb->pb->update(); | 316 | sb->pb->update(); |
311 | } | 317 | } |
312 | 318 | ||
313 | void OYatzee::startGame() | 319 | void OYatzee::startGame() |
314 | { | 320 | { |
315 | /* | 321 | /* |
316 | * TODO | 322 | * TODO |
317 | */ | 323 | */ |
318 | } | 324 | } |
319 | 325 | ||
320 | void OYatzee::stopGame(){} | 326 | void OYatzee::stopGame(){} |
321 | 327 | ||
322 | void OYatzee::setPlayerNumber( const int num ) | 328 | void OYatzee::setPlayerNumber( const int num ) |
323 | { | 329 | { |
324 | numOfPlayers = num; | 330 | numOfPlayers = num; |
325 | } | 331 | } |
326 | 332 | ||
327 | void OYatzee::setRoundsNumber( const int num ) | 333 | void OYatzee::setRoundsNumber( const int num ) |
328 | { | 334 | { |
329 | numOfRounds = num; | 335 | numOfRounds = num; |
330 | } | 336 | } |
331 | 337 | ||
332 | void OYatzee::slotStartGame() | 338 | void OYatzee::slotStartGame() |
333 | { | 339 | { |
334 | } | 340 | } |
335 | 341 | ||
336 | void OYatzee::slotRollDices() | 342 | void OYatzee::slotRollDices() |
337 | { | 343 | { |
338 | qDebug( "Roll nummer: %d" , ps.at( currentPlayer-1 )->turn ); | 344 | odebug << "Roll nummer: " << ps.at( currentPlayer-1 )->turn << "" << oendl; |
339 | 345 | ||
340 | if ( ps.at( currentPlayer-1 )->turn == 3 ) | 346 | if ( ps.at( currentPlayer-1 )->turn == 3 ) |
341 | { | 347 | { |
342 | QMessageBox::information( this, | 348 | QMessageBox::information( this, |
343 | "OYatzee", | 349 | "OYatzee", |
344 | tr( "Only three rolls per turn allowed." ) ); | 350 | tr( "Only three rolls per turn allowed." ) ); |
345 | return; | 351 | return; |
346 | } | 352 | } |
347 | 353 | ||
348 | Dice *d = dw->diceList.first(); | 354 | Dice *d = dw->diceList.first(); |
349 | 355 | ||
350 | for ( ; d != 0 ; d = dw->diceList.next() ) | 356 | for ( ; d != 0 ; d = dw->diceList.next() ) |
351 | { | 357 | { |
352 | if ( !d->isSelected ) | 358 | if ( !d->isSelected ) |
353 | d->roll(); | 359 | d->roll(); |
354 | } | 360 | } |
355 | 361 | ||
356 | //qDebug( "Roll nummer (vorher): %d" , ps.at( currentPlayer-1 )->turn ); | 362 | //odebug << "Roll nummer (vorher): " << ps.at( currentPlayer-1 )->turn << "" << oendl; |
357 | ps.at(currentPlayer-1)->turn++; | 363 | ps.at(currentPlayer-1)->turn++; |
358 | //qDebug( "Roll nummer (nachher): %d" , ps.at( currentPlayer-1 )->turn ); | 364 | //odebug << "Roll nummer (nachher): " << ps.at( currentPlayer-1 )->turn << "" << oendl; |
359 | 365 | ||
360 | detectPosibilities(); | 366 | detectPosibilities(); |
361 | } | 367 | } |
362 | 368 | ||
363 | /* | 369 | /* |
364 | * Scoreboard | 370 | * Scoreboard |
365 | */ | 371 | */ |
366 | Scoreboard::Scoreboard( playerList ps, QWidget *parent, const char *name ) : QWidget( parent , name ) | 372 | Scoreboard::Scoreboard( playerList ps, QWidget *parent, const char *name ) : QWidget( parent , name ) |
367 | { | 373 | { |
368 | ps_ = ps; | 374 | ps_ = ps; |
369 | 375 | ||
370 | pb = new Possibilityboard( this , "pb" ); | 376 | pb = new Possibilityboard( this , "pb" ); |
371 | 377 | ||
372 | createResultboards( 4 ); | 378 | createResultboards( 4 ); |
373 | 379 | ||
374 | QHBoxLayout *hbox = new QHBoxLayout( this ); | 380 | QHBoxLayout *hbox = new QHBoxLayout( this ); |
375 | 381 | ||
376 | hbox->addWidget( pb ); | 382 | hbox->addWidget( pb ); |
377 | 383 | ||
378 | hbox->addSpacing( 25 ); | 384 | hbox->addSpacing( 25 ); |
379 | 385 | ||
380 | Resultboard *r = rbList.first(); | 386 | Resultboard *r = rbList.first(); |
381 | 387 | ||
382 | for ( ; r != 0 ; r = rbList.next() ) | 388 | for ( ; r != 0 ; r = rbList.next() ) |
383 | { | 389 | { |
384 | hbox->addWidget( r ); | 390 | hbox->addWidget( r ); |
385 | } | 391 | } |
386 | } | 392 | } |
387 | 393 | ||
388 | Resultboard* Scoreboard::nextRB( int currentPlayer ) | 394 | Resultboard* Scoreboard::nextRB( int currentPlayer ) |
389 | { | 395 | { |
390 | Resultboard *b; | 396 | Resultboard *b; |
391 | 397 | ||
392 | b = rbList.at( currentPlayer ); | 398 | b = rbList.at( currentPlayer ); |
393 | 399 | ||
394 | qDebug( "Anzahl: %d" ,rbList.count() ); | 400 | odebug << "Anzahl: " << rbList.count() << "" << oendl; |
395 | 401 | ||
396 | return b; | 402 | return b; |
397 | } | 403 | } |
398 | 404 | ||
399 | void Scoreboard::createResultboards(const int num) | 405 | void Scoreboard::createResultboards(const int num) |
400 | { | 406 | { |
401 | Player *p = ps_.first(); | 407 | Player *p = ps_.first(); |
402 | for ( int i = 0 ; i < num ; ++i , p = ps_.next() ) | 408 | for ( int i = 0 ; i < num ; ++i , p = ps_.next() ) |
403 | { | 409 | { |
404 | QString n = p->playerName; | 410 | QString n = p->playerName; |
405 | rbList.append( new Resultboard( n , this ) ); | 411 | rbList.append( new Resultboard( n , this ) ); |
406 | } | 412 | } |
407 | } | 413 | } |
408 | 414 | ||
409 | void Scoreboard::paintEvent( QPaintEvent * ) | 415 | void Scoreboard::paintEvent( QPaintEvent * ) |
410 | { | 416 | { |
411 | //X QPainter p; | 417 | //X QPainter p; |
412 | //X p.begin( this ); | 418 | //X p.begin( this ); |
413 | //X | 419 | //X |
414 | //X p.drawRect( 0,0, this->width() , this->height() ); | 420 | //X p.drawRect( 0,0, this->width() , this->height() ); |
415 | } | 421 | } |
416 | 422 | ||
417 | /* | 423 | /* |
418 | * Dice | 424 | * Dice |
419 | */ | 425 | */ |
420 | Dice::Dice( QWidget *parent , const char *name ) : QFrame( parent , name ) | 426 | Dice::Dice( QWidget *parent , const char *name ) : QFrame( parent , name ) |
421 | { | 427 | { |
422 | QTime t = QTime::currentTime(); // set random seed | 428 | QTime t = QTime::currentTime(); // set random seed |
423 | srand(t.hour()*12+t.minute()*60+t.second()*60); | 429 | srand(t.hour()*12+t.minute()*60+t.second()*60); |
424 | 430 | ||
425 | connect( this , SIGNAL( selected() ), this , SLOT( slotSelected() ) ); | 431 | connect( this , SIGNAL( selected() ), this , SLOT( slotSelected() ) ); |
426 | } | 432 | } |
427 | 433 | ||
428 | void Dice::slotSelected() | 434 | void Dice::slotSelected() |
429 | { | 435 | { |
430 | if ( isSelected ) | 436 | if ( isSelected ) |
431 | isSelected = false; | 437 | isSelected = false; |
432 | else isSelected = true; | 438 | else isSelected = true; |
433 | 439 | ||
434 | update(); | 440 | update(); |
435 | } | 441 | } |
436 | 442 | ||
437 | const int Dice::hasValue() const | 443 | const int Dice::hasValue() const |
438 | { | 444 | { |
439 | return Value; | 445 | return Value; |
440 | } | 446 | } |
441 | 447 | ||
442 | void Dice::roll() | 448 | void Dice::roll() |
443 | { | 449 | { |
444 | Value = rand()%6; | 450 | Value = rand()%6; |
445 | Value += 1; | 451 | Value += 1; |
446 | 452 | ||
447 | update(); | 453 | update(); |
448 | } | 454 | } |
449 | 455 | ||
450 | void Dice::mousePressEvent( QMouseEvent* /*e*/ ) | 456 | void Dice::mousePressEvent( QMouseEvent* /*e*/ ) |
451 | { | 457 | { |
452 | emit selected(); | 458 | emit selected(); |
453 | } | 459 | } |
454 | 460 | ||
455 | void Dice::paintEvent( QPaintEvent * ) | 461 | void Dice::paintEvent( QPaintEvent * ) |
456 | { | 462 | { |
457 | QPainter p; | 463 | QPainter p; |
458 | p.begin( this ); | 464 | p.begin( this ); |
459 | 465 | ||
460 | p.drawRect( 0,0, this->width() , this->height() ); | 466 | p.drawRect( 0,0, this->width() , this->height() ); |
461 | 467 | ||
462 | if ( isSelected ) | 468 | if ( isSelected ) |
463 | p.drawRect( 20,20, 10,10 ); | 469 | p.drawRect( 20,20, 10,10 ); |
464 | 470 | ||
465 | paintNumber( &p ); | 471 | paintNumber( &p ); |
466 | } | 472 | } |
467 | 473 | ||
468 | void Dice::paintNumber( QPainter *p ) | 474 | void Dice::paintNumber( QPainter *p ) |
469 | { | 475 | { |
470 | p->setBrush( Qt::black ); | 476 | p->setBrush( Qt::black ); |
471 | 477 | ||
472 | int w = this->width(); | 478 | int w = this->width(); |
473 | int h = this->height(); | 479 | int h = this->height(); |
474 | int r = this->width(); | 480 | int r = this->width(); |
475 | r /= 10; | 481 | r /= 10; |
476 | 482 | ||
477 | switch ( Value ) | 483 | switch ( Value ) |
478 | { | 484 | { |
479 | case 1: | 485 | case 1: |
480 | p->drawEllipse( (int)( 0.5*w - r ) , (int)( 0.5*h - r ) , r , r ) ; | 486 | p->drawEllipse( (int)( 0.5*w - r ) , (int)( 0.5*h - r ) , r , r ) ; |
481 | break; | 487 | break; |
482 | case 2: | 488 | case 2: |
483 | p->drawEllipse( (int)( 0.3*w - r ) , (int)( 0.3*h - r ) , r , r ) ; | 489 | p->drawEllipse( (int)( 0.3*w - r ) , (int)( 0.3*h - r ) , r , r ) ; |
484 | p->drawEllipse( (int)( 0.7*w - r ) , (int)( 0.7*h - r ) , r , r ) ; | 490 | p->drawEllipse( (int)( 0.7*w - r ) , (int)( 0.7*h - r ) , r , r ) ; |
485 | break; | 491 | break; |
486 | case 3: | 492 | case 3: |
487 | p->drawEllipse( (int)( 0.5*w - r ) , (int)( 0.5*h - r ) , r , r ) ; | 493 | p->drawEllipse( (int)( 0.5*w - r ) , (int)( 0.5*h - r ) , r , r ) ; |
488 | p->drawEllipse( (int)( 0.2*w - r ) , (int)( 0.2*h - r ) , r , r ) ; | 494 | p->drawEllipse( (int)( 0.2*w - r ) , (int)( 0.2*h - r ) , r , r ) ; |
489 | p->drawEllipse( (int)( 0.8*w - r ) , (int)( 0.8*h - r ) , r , r ) ; | 495 | p->drawEllipse( (int)( 0.8*w - r ) , (int)( 0.8*h - r ) , r , r ) ; |
490 | break; | 496 | break; |
@@ -515,173 +521,173 @@ void Dice::paintNumber( QPainter *p ) | |||
515 | /* | 521 | /* |
516 | * DiceWidget | 522 | * DiceWidget |
517 | */ | 523 | */ |
518 | DiceWidget::DiceWidget( QWidget *parent , const char *name ) : QWidget( parent , name ) | 524 | DiceWidget::DiceWidget( QWidget *parent , const char *name ) : QWidget( parent , name ) |
519 | { | 525 | { |
520 | rollButton = new QPushButton( tr( "Roll" ) , this ) ; | 526 | rollButton = new QPushButton( tr( "Roll" ) , this ) ; |
521 | 527 | ||
522 | for ( int i = 0 ; i < 5 ; i++ ) | 528 | for ( int i = 0 ; i < 5 ; i++ ) |
523 | { | 529 | { |
524 | //appending the 5 dices of the game | 530 | //appending the 5 dices of the game |
525 | diceList.append( new Dice( this, "wuerfel" ) ); | 531 | diceList.append( new Dice( this, "wuerfel" ) ); |
526 | } | 532 | } |
527 | 533 | ||
528 | QHBoxLayout *hbox = new QHBoxLayout( this ); | 534 | QHBoxLayout *hbox = new QHBoxLayout( this ); |
529 | 535 | ||
530 | Dice *d = diceList.first(); | 536 | Dice *d = diceList.first(); |
531 | 537 | ||
532 | for ( ; d != 0 ; d = diceList.next() ) | 538 | for ( ; d != 0 ; d = diceList.next() ) |
533 | { | 539 | { |
534 | hbox->addWidget( d ); | 540 | hbox->addWidget( d ); |
535 | } | 541 | } |
536 | 542 | ||
537 | hbox->addWidget( rollButton ); | 543 | hbox->addWidget( rollButton ); |
538 | } | 544 | } |
539 | 545 | ||
540 | /* | 546 | /* |
541 | * Player | 547 | * Player |
542 | */ | 548 | */ |
543 | Player::Player( QString name ) | 549 | Player::Player( QString name ) |
544 | { | 550 | { |
545 | playerName = name; | 551 | playerName = name; |
546 | setupResultList(); | 552 | setupResultList(); |
547 | turn = 0; | 553 | turn = 0; |
548 | } | 554 | } |
549 | 555 | ||
550 | void Player::setupResultList() | 556 | void Player::setupResultList() |
551 | { | 557 | { |
552 | for ( int i = 1 ; i < 14 ; ++i ) | 558 | for ( int i = 1 ; i < 14 ; ++i ) |
553 | { | 559 | { |
554 | pResults.append( 0 ); | 560 | pResults.append( 0 ); |
555 | } | 561 | } |
556 | } | 562 | } |
557 | 563 | ||
558 | /* | 564 | /* |
559 | * TODO: muss noch genutzt werden | 565 | * TODO: muss noch genutzt werden |
560 | */ | 566 | */ |
561 | void Player::updateTotalPoints( pointMap m ) | 567 | void Player::updateTotalPoints( pointMap m ) |
562 | { | 568 | { |
563 | pointMap::Iterator it = m.begin(); | 569 | pointMap::Iterator it = m.begin(); |
564 | for ( ; it != m.end() ; ++it ) | 570 | for ( ; it != m.end() ; ++it ) |
565 | { | 571 | { |
566 | totalPoints += it.data(); | 572 | totalPoints += it.data(); |
567 | } | 573 | } |
568 | 574 | ||
569 | } | 575 | } |
570 | 576 | ||
571 | 577 | ||
572 | void Player::setResults( const int cat , const int points ) | 578 | void Player::setResults( const int cat , const int points ) |
573 | { | 579 | { |
574 | QValueListInt::Iterator it = pResults.at( cat ); | 580 | QValueListInt::Iterator it = pResults.at( cat ); |
575 | *it = points; | 581 | *it = points; |
576 | } | 582 | } |
577 | 583 | ||
578 | /* | 584 | /* |
579 | * Board | 585 | * Board |
580 | */ | 586 | */ |
581 | Board::Board( QWidget *parent , const char* name ) : QWidget ( parent , name ) | 587 | Board::Board( QWidget *parent , const char* name ) : QWidget ( parent , name ) |
582 | { | 588 | { |
583 | } | 589 | } |
584 | 590 | ||
585 | void Board::mousePressEvent( QMouseEvent *e ) | 591 | void Board::mousePressEvent( QMouseEvent *e ) |
586 | { | 592 | { |
587 | emit clicked( e->pos() ); | 593 | emit clicked( e->pos() ); |
588 | } | 594 | } |
589 | 595 | ||
590 | /* | 596 | /* |
591 | * Resultboard | 597 | * Resultboard |
592 | */ | 598 | */ |
593 | 599 | ||
594 | Resultboard::Resultboard( QString playerName , QWidget *parent , const char* name ) : Board ( parent , name ) | 600 | Resultboard::Resultboard( QString playerName , QWidget *parent , const char* name ) : Board ( parent , name ) |
595 | { | 601 | { |
596 | pName = playerName; | 602 | pName = playerName; |
597 | } | 603 | } |
598 | 604 | ||
599 | void Resultboard::paintEvent( QPaintEvent* ) | 605 | void Resultboard::paintEvent( QPaintEvent* ) |
600 | { | 606 | { |
601 | QPainter p; | 607 | QPainter p; |
602 | p.begin( this ); | 608 | p.begin( this ); |
603 | 609 | ||
604 | const int cell_width = this->width(); | 610 | const int cell_width = this->width(); |
605 | const int cell_height = this->height()/17; | 611 | const int cell_height = this->height()/17; |
606 | 612 | ||
607 | pointMap::Iterator it = pMap.begin(); | 613 | pointMap::Iterator it = pMap.begin(); |
608 | for ( ; it != pMap.end() ; ++it ) | 614 | for ( ; it != pMap.end() ; ++it ) |
609 | { | 615 | { |
610 | int i = it.key(); | 616 | int i = it.key(); |
611 | qDebug( "ok: %d , %d" , i , it.data() ); | 617 | odebug << "ok: " << i << " , " << it.data() << "" << oendl; |
612 | p.drawText( 0, i*cell_height , cell_width , cell_height , Qt::AlignCenter , QString::number( it.data() ) ); | 618 | p.drawText( 0, i*cell_height , cell_width , cell_height , Qt::AlignCenter , QString::number( it.data() ) ); |
613 | } | 619 | } |
614 | 620 | ||
615 | p.drawText( 0,0,cell_width,cell_height, Qt::AlignCenter , pName ); //Playername | 621 | p.drawText( 0,0,cell_width,cell_height, Qt::AlignCenter , pName ); //Playername |
616 | } | 622 | } |
617 | 623 | ||
618 | 624 | ||
619 | void Resultboard::updateMap( int item , int points ) | 625 | void Resultboard::updateMap( int item , int points ) |
620 | { | 626 | { |
621 | pMap.insert( item , points ); | 627 | pMap.insert( item , points ); |
622 | 628 | ||
623 | update(); | 629 | update(); |
624 | } | 630 | } |
625 | 631 | ||
626 | /* | 632 | /* |
627 | * Possibilityboard | 633 | * Possibilityboard |
628 | */ | 634 | */ |
629 | 635 | ||
630 | Possibilityboard::Possibilityboard( QWidget *parent , const char* name ) : Board ( parent , name ) | 636 | Possibilityboard::Possibilityboard( QWidget *parent , const char* name ) : Board ( parent , name ) |
631 | { | 637 | { |
632 | begriffe.append( "1er" ); | 638 | begriffe.append( "1er" ); |
633 | begriffe.append( "2er" ); | 639 | begriffe.append( "2er" ); |
634 | begriffe.append( "3er" ); | 640 | begriffe.append( "3er" ); |
635 | begriffe.append( "4er" ); | 641 | begriffe.append( "4er" ); |
636 | begriffe.append( "5er" ); | 642 | begriffe.append( "5er" ); |
637 | begriffe.append( "6er" ); | 643 | begriffe.append( "6er" ); |
638 | begriffe.append( "Total" ); | 644 | begriffe.append( "Total" ); |
639 | begriffe.append( "Bonus" ); | 645 | begriffe.append( "Bonus" ); |
640 | begriffe.append( "3oaK" ); | 646 | begriffe.append( "3oaK" ); |
641 | begriffe.append( "4oaK" ); | 647 | begriffe.append( "4oaK" ); |
642 | begriffe.append( "Full House" ); | 648 | begriffe.append( "Full House" ); |
643 | begriffe.append( "Short S" ); | 649 | begriffe.append( "Short S" ); |
644 | begriffe.append( "Long S" ); | 650 | begriffe.append( "Long S" ); |
645 | begriffe.append( "Yatzee!" ); | 651 | begriffe.append( "Yatzee!" ); |
646 | begriffe.append( "Chance" ); | 652 | begriffe.append( "Chance" ); |
647 | begriffe.append( "Score" ); | 653 | begriffe.append( "Score" ); |
648 | 654 | ||
649 | connect( this , SIGNAL( clicked(QPoint) ), this , SLOT( slotClicked(QPoint) ) ); | 655 | connect( this , SIGNAL( clicked(QPoint) ), this , SLOT( slotClicked(QPoint) ) ); |
650 | } | 656 | } |
651 | 657 | ||
652 | void Possibilityboard::slotClicked( QPoint p) | 658 | void Possibilityboard::slotClicked( QPoint p) |
653 | { | 659 | { |
654 | emit item( p.y()/(this->height()/17) ); | 660 | emit item( p.y()/(this->height()/17) ); |
655 | } | 661 | } |
656 | 662 | ||
657 | void Possibilityboard::paintEvent( QPaintEvent* ) | 663 | void Possibilityboard::paintEvent( QPaintEvent* ) |
658 | { | 664 | { |
659 | QPainter p; | 665 | QPainter p; |
660 | p.begin( this ); | 666 | p.begin( this ); |
661 | 667 | ||
662 | const int cell_width = this->width(); | 668 | const int cell_width = this->width(); |
663 | const int cell_height = this->height()/17; | 669 | const int cell_height = this->height()/17; |
664 | 670 | ||
665 | p.setBrush( Qt::blue ); | 671 | p.setBrush( Qt::blue ); |
666 | 672 | ||
667 | QValueListInt::Iterator listIt = list.begin(); | 673 | QValueListInt::Iterator listIt = list.begin(); |
668 | for ( ; listIt != list.end() ; ++listIt ) | 674 | for ( ; listIt != list.end() ; ++listIt ) |
669 | { | 675 | { |
670 | p.drawRect( 0 , (*listIt) * cell_height , cell_width , cell_height ); | 676 | p.drawRect( 0 , (*listIt) * cell_height , cell_width , cell_height ); |
671 | } | 677 | } |
672 | 678 | ||
673 | p.setBrush( Qt::black ); | 679 | p.setBrush( Qt::black ); |
674 | p.setBrush( Qt::NoBrush ); | 680 | p.setBrush( Qt::NoBrush ); |
675 | QStringList::Iterator begriffeIt = begriffe.begin(); | 681 | QStringList::Iterator begriffeIt = begriffe.begin(); |
676 | for ( int i = 1 ; i < 18 ; ++i ) | 682 | for ( int i = 1 ; i < 18 ; ++i ) |
677 | { | 683 | { |
678 | p.drawText( 0 , i*cell_height , cell_width , cell_height , Qt::AlignCenter , *begriffeIt ); | 684 | p.drawText( 0 , i*cell_height , cell_width , cell_height , Qt::AlignCenter , *begriffeIt ); |
679 | ++begriffeIt; | 685 | ++begriffeIt; |
680 | } | 686 | } |
681 | } | 687 | } |
682 | 688 | ||
683 | void Possibilityboard::setIntlist( QValueListInt &l ) | 689 | void Possibilityboard::setIntlist( QValueListInt &l ) |
684 | { | 690 | { |
685 | list = l; | 691 | list = l; |
686 | } | 692 | } |
687 | 693 | ||
diff --git a/noncore/games/oyatzee/oyatzee.pro b/noncore/games/oyatzee/oyatzee.pro index 754abd2..f505c66 100644 --- a/noncore/games/oyatzee/oyatzee.pro +++ b/noncore/games/oyatzee/oyatzee.pro | |||
@@ -1,11 +1,11 @@ | |||
1 | TEMPLATE= app | 1 | TEMPLATE= app |
2 | CONFIG = qt warn_on | 2 | CONFIG = qt warn_on |
3 | DESTDIR = $(OPIEDIR)/bin | 3 | DESTDIR = $(OPIEDIR)/bin |
4 | HEADERS = oyatzee.h | 4 | HEADERS = oyatzee.h |
5 | SOURCES = main.cpp oyatzee.cpp | 5 | SOURCES = main.cpp oyatzee.cpp |
6 | TARGET = oyatzee | 6 | TARGET = oyatzee |
7 | INCLUDEPATH += $(OPIEDIR)/include | 7 | INCLUDEPATH += $(OPIEDIR)/include |
8 | DEPENDPATH+= $(OPIEDIR)/include | 8 | DEPENDPATH+= $(OPIEDIR)/include |
9 | LIBS += -lqpe | 9 | LIBS += -lqpe -lopiecore2 |
10 | 10 | ||
11 | include ( $(OPIEDIR)/include.pro ) | 11 | include ( $(OPIEDIR)/include.pro ) |