-rw-r--r-- | noncore/games/go/gowidget.h | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/noncore/games/go/gowidget.h b/noncore/games/go/gowidget.h new file mode 100644 index 0000000..94de2cc --- a/dev/null +++ b/noncore/games/go/gowidget.h @@ -0,0 +1,111 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qtopia Environment. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef GOWIDGET_H +#define GOWIDGET_H + +#include <qmainwindow.h> +#include "amigo.h" + + +class QToolBar; + +class GoMainWidget : public QMainWindow +{ + Q_OBJECT +public: + GoMainWidget( QWidget *parent=0, const char* name=0); +protected: + void resizeEvent( QResizeEvent * ); +private: + QToolBar *toolbar; + +}; + + +class QLabel; +class GoWidget : public QWidget +{ + Q_OBJECT +public: + GoWidget( QWidget *parent=0, const char* name=0); + ~GoWidget(); + + void doMove( int x, int y ); + void doComputerMove(); + + void readConfig(); + void writeConfig(); + +public slots: + void pass(); + void resign(); + void newGame(); + void setTwoplayer( bool ); + void setHandicap( int ); +signals: + void showScore( const QString& ); + void showTurn( const QPixmap& ); + +protected: + void paintEvent( QPaintEvent * ); + void mousePressEvent( QMouseEvent * ); + void mouseMoveEvent( QMouseEvent * ); + void mouseReleaseEvent( QMouseEvent * ); + void resizeEvent( QResizeEvent * ); +private: + void init(); + void removeStone(short x, short y); + void placeStone (enum bVal c, short x, short y ); + + void refresh( int x, int y ); + void showStone( int x, int y, enum bVal ); + void reportPrisoners(int,int); + + inline int x2board( int x ) { return (x-bx+d/2)/d; } + inline int y2board( int y ) { return (y-by+d/2)/d; } + + void endGame(); + + bool twoplayer; + enum bVal currentPlayer; + bool gameActive; + int nPassed; + signed char board[19][19]; + + int d; //distance between lines + int bx; //vertical baseline + int by; //horizontal baseline + + int lastX,lastY; + int newX,newY; + + static GoWidget *self; + + friend void removestone(short x, short y); + friend void intrPrisonerReport( short, short ); + friend void placestone(enum bVal c, short x, short y ); +}; + + + + + +#endif |