From d16aa943a04b1e630e913cc55789bb876cd0f42f Mon Sep 17 00:00:00 2001 From: cniehaus Date: Tue, 12 Aug 2003 16:09:37 +0000 Subject: A new Game: OYatzee. It is similar to Kniffel or Yatzee and not yet ready. --- (limited to 'noncore/games/oyatzee/oyatzee.cpp') diff --git a/noncore/games/oyatzee/oyatzee.cpp b/noncore/games/oyatzee/oyatzee.cpp new file mode 100644 index 0000000..7940b89 --- a/dev/null +++ b/noncore/games/oyatzee/oyatzee.cpp @@ -0,0 +1,214 @@ +#include "oyatzee.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +OYatzee::OYatzee( QWidget *parent , const char *name, WFlags fl ) : QMainWindow( parent , name , fl ) +{ + QWidget *thing = new QWidget( this ); + setCentralWidget( thing ); + + QVBoxLayout *vbox = new QVBoxLayout( thing ); + + sb = new Scoreboard( thing , "sb" ); + dw = new DiceWidget( thing , "dw" ); + + + vbox->addWidget( sb ); + vbox->addWidget( dw ); + + setPlayerNumber( 2 ); + setRoundsNumber( 1 ); + + connect( dw->rollButton, SIGNAL( clicked() ), this , SLOT( slotRollDices() ) ); +} + +OYatzee::~OYatzee() +{ +} + +void OYatzee::detectPosibilities() +{ + Dice *d = dw->diceList.first(); + + QValueList numbers; + + for ( ; d != 0 ; d = dw->diceList.next() ) + { + numbers.append( d->Value ); + } +} + +void OYatzee::setPlayerNumber( const int num ) +{ + numOfPlayers = num; +} + +void OYatzee::setRoundsNumber( const int num ) +{ + numOfRounds = num; +} + +void OYatzee::slotStartGame() +{ +} + +void OYatzee::slotRollDices() +{ + Dice *d = dw->diceList.first(); + + for ( ; d != 0 ; d = dw->diceList.next() ) + { + d->roll(); + } + + detectPosibilities(); +} + +/* + * Scoreboard + */ +Scoreboard::Scoreboard( QWidget *parent, const char *name ) : QWidget( parent , name ) +{ +} + +void Scoreboard::paintEvent( QPaintEvent * ) +{ + QPainter p; + p.begin( this ); + + p.drawRect( 0,0, this->width() , this->height() ); +} + +/* + * Dice + */ +Dice::Dice( QWidget *parent , const char *name ) : QFrame( parent , name ) +{ + QTime t = QTime::currentTime(); // set random seed + srand(t.hour()*12+t.minute()*60+t.second()*60); + + connect( this , SIGNAL( selected() ), this , SLOT( slotSelected() ) ); +} + +void Dice::slotSelected() +{ + qDebug( QString::number( Value ) ); +} + +int Dice::hasValue() +{ + return Value; +} + +void Dice::roll() +{ + Value = rand()%6; + Value += 1; + + update(); +} + +void Dice::mousePressEvent( QMouseEvent* /*e*/ ) +{ + emit selected(); +} + +void Dice::paintEvent( QPaintEvent * ) +{ + QPainter p; + p.begin( this ); + + p.drawRect( 0,0, this->width() , this->height() ); + + paintNumber( &p ); +} + +void Dice::paintNumber( QPainter *p ) +{ + switch ( Value ) + { + case 1: + p->drawText( 10,10,"1"); + break; + case 2: + p->drawText( 10,10,"2"); + break; + case 3: + p->drawText( 10,10,"3"); + break; + case 4: + p->drawText( 10,10,"4"); + break; + case 5: + p->drawText( 10,10,"5"); + break; + case 6: + p->drawText( 10,10,"6"); + break; + } +} + +/* + * DiceWidget + */ +DiceWidget::DiceWidget( QWidget *parent , const char *name ) : QWidget( parent , name ) +{ + rollButton = new QPushButton( tr( "Roll" ) , this ) ; + + for ( int i = 0 ; i < 5 ; i++ ) + { + //appending the 5 dices of the game + diceList.append( new Dice( this, "wuerfel" ) ); + } + + QHBoxLayout *hbox = new QHBoxLayout( this ); + + Dice *d = diceList.first(); + + for ( ; d != 0 ; d = diceList.next() ) + { + d->roll(); + hbox->addWidget( d ); + } + + hbox->addWidget( rollButton ); +} + +/* + * Player + */ +Player::Player( QString name ) +{ + playerName = name; +} + -- cgit v0.9.0.2