author | cniehaus <cniehaus> | 2003-08-13 14:53:18 (UTC) |
---|---|---|
committer | cniehaus <cniehaus> | 2003-08-13 14:53:18 (UTC) |
commit | 1b22b22d6e50b46f3ea04b5a1cfc3dc9bfd8a78a (patch) (unidiff) | |
tree | 327c797146d1a23cce2fdf558faa9ccacb9b6cf3 | |
parent | 6e7dbb9320256c326cd19e7555b4309e71d039e3 (diff) | |
download | opie-1b22b22d6e50b46f3ea04b5a1cfc3dc9bfd8a78a.zip opie-1b22b22d6e50b46f3ea04b5a1cfc3dc9bfd8a78a.tar.gz opie-1b22b22d6e50b46f3ea04b5a1cfc3dc9bfd8a78a.tar.bz2 |
well, a lot more is now implemented
-rw-r--r-- | noncore/games/oyatzee/oyatzee.cpp | 112 | ||||
-rw-r--r-- | noncore/games/oyatzee/oyatzee.h | 58 |
2 files changed, 160 insertions, 10 deletions
diff --git a/noncore/games/oyatzee/oyatzee.cpp b/noncore/games/oyatzee/oyatzee.cpp index 5c4d1f7..6228a8f 100644 --- a/noncore/games/oyatzee/oyatzee.cpp +++ b/noncore/games/oyatzee/oyatzee.cpp | |||
@@ -24,44 +24,53 @@ | |||
24 | #include <qvbox.h> | 24 | #include <qvbox.h> |
25 | #include <qwidgetstack.h> | 25 | #include <qwidgetstack.h> |
26 | #include <qpainter.h> | 26 | #include <qpainter.h> |
27 | #include <qlayout.h> | 27 | #include <qlayout.h> |
28 | #include <qregexp.h> | 28 | #include <qregexp.h> |
29 | 29 | ||
30 | #include <stdlib.h> | 30 | #include <stdlib.h> |
31 | #include <unistd.h> | 31 | #include <unistd.h> |
32 | #include <pwd.h> | 32 | #include <pwd.h> |
33 | #include <sys/types.h> | 33 | #include <sys/types.h> |
34 | 34 | ||
35 | OYatzee::OYatzee( QWidget *parent , const char *name, WFlags fl ) : QMainWindow( parent , name , fl ) | 35 | OYatzee::OYatzee( QWidget *parent , const char *name, WFlags fl ) : QMainWindow( parent , name , fl ) |
36 | { | 36 | { |
37 | QWidget *thing = new QWidget( this ); | 37 | QWidget *thing = new QWidget( this ); |
38 | setCentralWidget( thing ); | 38 | setCentralWidget( thing ); |
39 | 39 | ||
40 | |||
41 | setPlayerNumber( 4 ); | ||
42 | setRoundsNumber( 1 ); | ||
43 | |||
44 | playerList ps; | ||
45 | ps.append( new Player( "Carsten" ) ); | ||
46 | ps.append( new Player( "Julia" ) ); | ||
47 | ps.append( new Player( "Christine" ) ); | ||
48 | ps.append( new Player( "Stephan" ) ); | ||
49 | |||
50 | Game *g = new Game( ps ); | ||
51 | |||
52 | |||
40 | QVBoxLayout *vbox = new QVBoxLayout( thing ); | 53 | QVBoxLayout *vbox = new QVBoxLayout( thing ); |
41 | 54 | ||
42 | sb = new Scoreboard( thing , "sb" ); | 55 | sb = new Scoreboard( ps, thing , "sb" ); |
43 | dw = new DiceWidget( thing , "dw" ); | 56 | dw = new DiceWidget( thing , "dw" ); |
57 | connect( dw->rollButton, SIGNAL( clicked() ), this , SLOT( slotRollDices() ) ); | ||
44 | 58 | ||
45 | vbox->addWidget( sb ); | 59 | vbox->addWidget( sb ); |
46 | vbox->addWidget( dw ); | 60 | vbox->addWidget( dw ); |
47 | |||
48 | setPlayerNumber( 2 ); | ||
49 | setRoundsNumber( 1 ); | ||
50 | |||
51 | connect( dw->rollButton, SIGNAL( clicked() ), this , SLOT( slotRollDices() ) ); | ||
52 | } | 61 | } |
53 | 62 | ||
54 | OYatzee::~OYatzee() | 63 | OYatzee::~OYatzee() |
55 | { | 64 | { |
56 | } | 65 | } |
57 | 66 | ||
58 | void OYatzee::detectPosibilities() | 67 | void OYatzee::detectPosibilities() |
59 | { | 68 | { |
60 | posibilities.clear(); | 69 | posibilities.clear(); |
61 | qDebug( "running detectPosibilities()" ); | 70 | qDebug( "running detectPosibilities()" ); |
62 | 71 | ||
63 | Dice *d = dw->diceList.first(); | 72 | Dice *d = dw->diceList.first(); |
64 | 73 | ||
65 | QValueListInt numbers; | 74 | QValueListInt numbers; |
66 | 75 | ||
67 | for ( ; d != 0 ; d = dw->diceList.next() ) | 76 | for ( ; d != 0 ; d = dw->diceList.next() ) |
@@ -147,34 +156,32 @@ void OYatzee::detectPosibilities() | |||
147 | if ( numbers.find( 5 ) != numbers.end() && numbers.find( 6 ) != numbers.end() ) | 156 | if ( numbers.find( 5 ) != numbers.end() && numbers.find( 6 ) != numbers.end() ) |
148 | isShort = true; | 157 | isShort = true; |
149 | 158 | ||
150 | if ( isShort ) | 159 | if ( isShort ) |
151 | posibilities.append( 10 ); | 160 | posibilities.append( 10 ); |
152 | if ( isLong ) | 161 | if ( isLong ) |
153 | posibilities.append( 11 ); | 162 | posibilities.append( 11 ); |
154 | } | 163 | } |
155 | 164 | ||
156 | posibilities.append( 13 ); //Chance, well, this is allways possible | 165 | posibilities.append( 13 ); //Chance, well, this is allways possible |
157 | 166 | ||
158 | displayPossibilites(); | 167 | displayPossibilites(); |
159 | } | 168 | } |
160 | 169 | ||
161 | void OYatzee::displayPossibilites() | 170 | void OYatzee::displayPossibilites() |
162 | { | 171 | { |
163 | qDebug( "running displayPossibilites(), %d item", posibilities.count() ); | ||
164 | |||
165 | for ( QValueListInt::Iterator it = posibilities.begin() ; it != posibilities.end(); ++it ) | 172 | for ( QValueListInt::Iterator it = posibilities.begin() ; it != posibilities.end(); ++it ) |
166 | { | 173 | { |
167 | qDebug( QString::number( *it ) ); | 174 | qDebug( QString::number( *it ) ); |
168 | switch ( *it ) | 175 | switch ( *it ) |
169 | { | 176 | { |
170 | case Ones: | 177 | case Ones: |
171 | qDebug( "1er" ); | 178 | qDebug( "1er" ); |
172 | break; | 179 | break; |
173 | case Twos: | 180 | case Twos: |
174 | qDebug( "2er" ); | 181 | qDebug( "2er" ); |
175 | break; | 182 | break; |
176 | case Threes: | 183 | case Threes: |
177 | qDebug( "3er" ); | 184 | qDebug( "3er" ); |
178 | break; | 185 | break; |
179 | case Fours: | 186 | case Fours: |
180 | qDebug( "4er" ); | 187 | qDebug( "4er" ); |
@@ -227,34 +234,62 @@ void OYatzee::slotStartGame() | |||
227 | void OYatzee::slotRollDices() | 234 | void OYatzee::slotRollDices() |
228 | { | 235 | { |
229 | Dice *d = dw->diceList.first(); | 236 | Dice *d = dw->diceList.first(); |
230 | 237 | ||
231 | for ( ; d != 0 ; d = dw->diceList.next() ) | 238 | for ( ; d != 0 ; d = dw->diceList.next() ) |
232 | { | 239 | { |
233 | if ( !d->isSelected ) | 240 | if ( !d->isSelected ) |
234 | d->roll(); | 241 | d->roll(); |
235 | } | 242 | } |
236 | 243 | ||
237 | detectPosibilities(); | 244 | detectPosibilities(); |
238 | } | 245 | } |
239 | 246 | ||
240 | /* | 247 | /* |
241 | * Scoreboard | 248 | * Scoreboard |
242 | */ | 249 | */ |
243 | Scoreboard::Scoreboard( QWidget *parent, const char *name ) : QWidget( parent , name ) | 250 | Scoreboard::Scoreboard( playerList ps, QWidget *parent, const char *name ) : QWidget( parent , name ) |
251 | { | ||
252 | ps_ = ps; | ||
253 | |||
254 | pb = new Possibilityboard( this , "pb" ); | ||
255 | |||
256 | createResultboards( 4 ); | ||
257 | |||
258 | QHBoxLayout *hbox = new QHBoxLayout( this ); | ||
259 | |||
260 | hbox->addWidget( pb ); | ||
261 | |||
262 | hbox->addSpacing( 25 ); | ||
263 | |||
264 | Resultboard *r = rbList.first(); | ||
265 | |||
266 | for ( ; r != 0 ; r = rbList.next() ) | ||
267 | { | ||
268 | hbox->addWidget( r ); | ||
269 | } | ||
270 | } | ||
271 | |||
272 | void Scoreboard::createResultboards(const int num) | ||
244 | { | 273 | { |
274 | Player *p = ps_.first(); | ||
275 | for ( int i = 0 ; i < num ; ++i , p = ps_.next() ) | ||
276 | { | ||
277 | QString n = p->playerName; | ||
278 | rbList.append( new Resultboard( n , this ) ); | ||
279 | } | ||
245 | } | 280 | } |
246 | 281 | ||
247 | void Scoreboard::paintEvent( QPaintEvent * ) | 282 | void Scoreboard::paintEvent( QPaintEvent * ) |
248 | { | 283 | { |
249 | QPainter p; | 284 | QPainter p; |
250 | p.begin( this ); | 285 | p.begin( this ); |
251 | 286 | ||
252 | p.drawRect( 0,0, this->width() , this->height() ); | 287 | p.drawRect( 0,0, this->width() , this->height() ); |
253 | } | 288 | } |
254 | 289 | ||
255 | /* | 290 | /* |
256 | * Dice | 291 | * Dice |
257 | */ | 292 | */ |
258 | Dice::Dice( QWidget *parent , const char *name ) : QFrame( parent , name ) | 293 | Dice::Dice( QWidget *parent , const char *name ) : QFrame( parent , name ) |
259 | { | 294 | { |
260 | QTime t = QTime::currentTime(); // set random seed | 295 | QTime t = QTime::currentTime(); // set random seed |
@@ -348,16 +383,75 @@ DiceWidget::DiceWidget( QWidget *parent , const char *name ) : QWidget( parent | |||
348 | for ( ; d != 0 ; d = diceList.next() ) | 383 | for ( ; d != 0 ; d = diceList.next() ) |
349 | { | 384 | { |
350 | hbox->addWidget( d ); | 385 | hbox->addWidget( d ); |
351 | } | 386 | } |
352 | 387 | ||
353 | hbox->addWidget( rollButton ); | 388 | hbox->addWidget( rollButton ); |
354 | } | 389 | } |
355 | 390 | ||
356 | /* | 391 | /* |
357 | * Player | 392 | * Player |
358 | */ | 393 | */ |
359 | Player::Player( QString name ) | 394 | Player::Player( QString name ) |
360 | { | 395 | { |
361 | playerName = name; | 396 | playerName = name; |
362 | } | 397 | } |
363 | 398 | ||
399 | |||
400 | /* | ||
401 | * Board | ||
402 | */ | ||
403 | Board::Board( QWidget *parent , const char* name ) : QWidget ( parent , name ) | ||
404 | { | ||
405 | } | ||
406 | |||
407 | void Board::paintEvent( QPaintEvent* ) | ||
408 | { | ||
409 | QPainter p; | ||
410 | p.begin( this ); | ||
411 | |||
412 | p.drawRect( 0,0, this->width() , this->height() ); | ||
413 | } | ||
414 | |||
415 | /* | ||
416 | * Resultboard | ||
417 | */ | ||
418 | |||
419 | Resultboard::Resultboard( QString playerName , QWidget *parent , const char* name ) : Board ( parent , name ) | ||
420 | { | ||
421 | pName = playerName; | ||
422 | } | ||
423 | |||
424 | void Resultboard::paintEvent( QPaintEvent* ) | ||
425 | { | ||
426 | QPainter p; | ||
427 | p.begin( this ); | ||
428 | |||
429 | p.drawText( 10,10, pName ); | ||
430 | p.drawRect( 0,0, this->width() , this->height() ); | ||
431 | } | ||
432 | |||
433 | /* | ||
434 | * Possibilityboard | ||
435 | */ | ||
436 | |||
437 | Possibilityboard::Possibilityboard( QWidget *parent , const char* name ) : Board ( parent , name ) | ||
438 | { | ||
439 | } | ||
440 | |||
441 | void Possibilityboard::paintEvent( QPaintEvent* ) | ||
442 | { | ||
443 | QPainter p; | ||
444 | p.begin( this ); | ||
445 | |||
446 | p.drawRect( 0,0, this->width() , this->height() ); | ||
447 | } | ||
448 | |||
449 | /* | ||
450 | * Game | ||
451 | */ | ||
452 | |||
453 | Game::Game( playerList pla ) | ||
454 | { | ||
455 | players = pla; | ||
456 | } | ||
457 | |||
diff --git a/noncore/games/oyatzee/oyatzee.h b/noncore/games/oyatzee/oyatzee.h index 65a18fc..dd996ee 100644 --- a/noncore/games/oyatzee/oyatzee.h +++ b/noncore/games/oyatzee/oyatzee.h | |||
@@ -1,33 +1,37 @@ | |||
1 | #ifndef WORDGAME_H | 1 | #ifndef WORDGAME_H |
2 | #define WORDGAME_H | 2 | #define WORDGAME_H |
3 | 3 | ||
4 | #include <qmainwindow.h> | 4 | #include <qmainwindow.h> |
5 | #include <qlabel.h> | 5 | #include <qlabel.h> |
6 | #include <qlist.h> | 6 | #include <qlist.h> |
7 | 7 | ||
8 | #include <stdlib.h> // rand() function | 8 | #include <stdlib.h> // rand() function |
9 | #include <qdatetime.h> // seed for rand() | 9 | #include <qdatetime.h> // seed for rand() |
10 | 10 | ||
11 | class Dice; | 11 | class Dice; |
12 | class Game; | 12 | class Game; |
13 | class Scoreboard; | 13 | class Scoreboard; |
14 | class DiceWidget; | 14 | class DiceWidget; |
15 | class Resultboard; | ||
16 | class Player; | ||
15 | 17 | ||
16 | typedef QList<Dice> dicesList; | 18 | typedef QList<Dice> dicesList; |
19 | typedef QList<Resultboard> resultboardList; | ||
17 | typedef QValueList<int> QValueListInt; | 20 | typedef QValueList<int> QValueListInt; |
21 | typedef QList<Player> playerList; | ||
18 | 22 | ||
19 | class OYatzee : public QMainWindow { | 23 | class OYatzee : public QMainWindow { |
20 | Q_OBJECT | 24 | Q_OBJECT |
21 | public: | 25 | public: |
22 | OYatzee( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); | 26 | OYatzee( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); |
23 | ~OYatzee(); | 27 | ~OYatzee(); |
24 | 28 | ||
25 | Game *g; | 29 | Game *g; |
26 | DiceWidget *dw; | 30 | DiceWidget *dw; |
27 | Scoreboard *sb; | 31 | Scoreboard *sb; |
28 | 32 | ||
29 | QValueListInt posibilities; | 33 | QValueListInt posibilities; |
30 | 34 | ||
31 | void setPlayerNumber( const int num ); | 35 | void setPlayerNumber( const int num ); |
32 | void setRoundsNumber( const int num ); | 36 | void setRoundsNumber( const int num ); |
33 | 37 | ||
@@ -41,32 +45,35 @@ class OYatzee : public QMainWindow { | |||
41 | ThreeOfAKind = 7, //12444 | 45 | ThreeOfAKind = 7, //12444 |
42 | FourOfAKind = 8, //14444 | 46 | FourOfAKind = 8, //14444 |
43 | FullHouse = 9, //22555 | 47 | FullHouse = 9, //22555 |
44 | SStraight = 10, //13456 | 48 | SStraight = 10, //13456 |
45 | LStraight = 11, //12345 | 49 | LStraight = 11, //12345 |
46 | Yatzee = 12, //55555 | 50 | Yatzee = 12, //55555 |
47 | Chance = 13}; | 51 | Chance = 13}; |
48 | 52 | ||
49 | public slots: | 53 | public slots: |
50 | void slotStartGame(); | 54 | void slotStartGame(); |
51 | void slotRollDices(); | 55 | void slotRollDices(); |
52 | 56 | ||
53 | private: | 57 | private: |
54 | int numOfPlayers; | 58 | int numOfPlayers; |
55 | int numOfRounds; | 59 | int numOfRounds; |
56 | 60 | ||
61 | /* | ||
62 | * Check what posibilities the player currently has | ||
63 | */ | ||
57 | void detectPosibilities(); | 64 | void detectPosibilities(); |
58 | void displayPossibilites(); | 65 | void displayPossibilites(); |
59 | 66 | ||
60 | }; | 67 | }; |
61 | 68 | ||
62 | class Dice : public QFrame | 69 | class Dice : public QFrame |
63 | { | 70 | { |
64 | Q_OBJECT | 71 | Q_OBJECT |
65 | public: | 72 | public: |
66 | Dice( QWidget* parent = 0, const char* name = 0 ); | 73 | Dice( QWidget* parent = 0, const char* name = 0 ); |
67 | 74 | ||
68 | int Value; | 75 | int Value; |
69 | bool isSelected; | 76 | bool isSelected; |
70 | 77 | ||
71 | int hasValue(); | 78 | int hasValue(); |
72 | void roll(); | 79 | void roll(); |
@@ -81,36 +88,85 @@ class Dice : public QFrame | |||
81 | protected: | 88 | protected: |
82 | void paintEvent( QPaintEvent *e ); | 89 | void paintEvent( QPaintEvent *e ); |
83 | void paintNumber( QPainter *p ); | 90 | void paintNumber( QPainter *p ); |
84 | }; | 91 | }; |
85 | 92 | ||
86 | class DiceWidget : public QWidget | 93 | class DiceWidget : public QWidget |
87 | { | 94 | { |
88 | Q_OBJECT | 95 | Q_OBJECT |
89 | public: | 96 | public: |
90 | DiceWidget( QWidget *parent = 0, const char* name = 0 ); | 97 | DiceWidget( QWidget *parent = 0, const char* name = 0 ); |
91 | 98 | ||
92 | QPushButton *rollButton; | 99 | QPushButton *rollButton; |
93 | 100 | ||
94 | dicesList diceList; | 101 | dicesList diceList; |
95 | }; | 102 | }; |
96 | 103 | ||
104 | |||
105 | class Board : public QWidget | ||
106 | { | ||
107 | Q_OBJECT | ||
108 | public: | ||
109 | Board( QWidget *parent = 0, const char* name = 0 ); | ||
110 | |||
111 | protected: | ||
112 | virtual void paintEvent( QPaintEvent *e ); | ||
113 | }; | ||
114 | |||
115 | class Possibilityboard : public Board | ||
116 | { | ||
117 | Q_OBJECT | ||
118 | |||
119 | public: | ||
120 | Possibilityboard( QWidget *parent = 0, const char* name = 0 ); | ||
121 | |||
122 | protected: | ||
123 | virtual void paintEvent( QPaintEvent *e ); | ||
124 | }; | ||
125 | |||
126 | class Resultboard : public Board | ||
127 | { | ||
128 | Q_OBJECT | ||
129 | |||
130 | public: | ||
131 | Resultboard( QString playerName , QWidget *parent = 0, const char* name = 0 ); | ||
132 | QString pName; | ||
133 | |||
134 | protected: | ||
135 | virtual void paintEvent( QPaintEvent *e ); | ||
136 | }; | ||
137 | |||
138 | |||
97 | class Scoreboard : public QWidget | 139 | class Scoreboard : public QWidget |
98 | { | 140 | { |
99 | Q_OBJECT | 141 | Q_OBJECT |
100 | public: | 142 | public: |
101 | Scoreboard( QWidget *parent = 0, const char* name = 0 ); | 143 | Scoreboard( playerList ps, QWidget *parent = 0, const char* name = 0 ); |
144 | |||
145 | Possibilityboard *pb; | ||
146 | resultboardList rbList; | ||
147 | playerList ps_; | ||
102 | 148 | ||
149 | void createResultboards(const int); | ||
150 | |||
103 | protected: | 151 | protected: |
104 | void paintEvent( QPaintEvent *e ); | 152 | void paintEvent( QPaintEvent *e ); |
105 | }; | 153 | }; |
106 | 154 | ||
155 | |||
107 | class Player | 156 | class Player |
108 | { | 157 | { |
109 | public: | 158 | public: |
110 | Player( QString name ); | 159 | Player( QString name ); |
111 | 160 | ||
112 | QString playerName; | 161 | QString playerName; |
113 | int totalPoints; | 162 | int totalPoints; |
114 | }; | 163 | }; |
115 | 164 | ||
165 | class Game | ||
166 | { | ||
167 | public: | ||
168 | Game( playerList pla ); | ||
169 | playerList players; | ||
170 | }; | ||
171 | |||
116 | #endif // WORDGAME_H | 172 | #endif // WORDGAME_H |