From 2e68340b3ac15893cfc1aa6bbed55c1890ab7dfe Mon Sep 17 00:00:00 2001 From: jb Date: Mon, 16 Mar 2009 22:39:40 +0000 Subject: [PATCH] Add sudoku Game --- src/boardArea.cpp | 41 +++++++++ src/boardArea.h | 29 +++++++ src/images/logo32.png | Bin 0 -> 1493 bytes src/images/mac/editredo.png | Bin 0 -> 1752 bytes src/images/mac/editundo.png | Bin 0 -> 1746 bytes src/images/mac/filenew.png | Bin 0 -> 1173 bytes src/images/mac/fileopen.png | Bin 0 -> 2221 bytes src/images/mac/fileprint.png | Bin 0 -> 2140 bytes src/images/mac/filesave.png | Bin 0 -> 1206 bytes src/images/win/editredo.png | Bin 0 -> 1787 bytes src/images/win/editundo.png | Bin 0 -> 1768 bytes src/images/win/filenew.png | Bin 0 -> 977 bytes src/images/win/fileopen.png | Bin 0 -> 2402 bytes src/images/win/fileprint.png | Bin 0 -> 1732 bytes src/images/win/filesave.png | Bin 0 -> 1980 bytes src/main.cpp | 20 +++++ src/src.pro | 16 ++++ src/sudoku.cpp | 162 +++++++++++++++++++++++++++++++++++ src/sudoku.h | 43 ++++++++++ src/sudoku.qrc | 18 ++++ sudoku.pro | 6 ++ 21 files changed, 335 insertions(+) create mode 100644 src/boardArea.cpp create mode 100644 src/boardArea.h create mode 100644 src/images/logo32.png create mode 100644 src/images/mac/editredo.png create mode 100644 src/images/mac/editundo.png create mode 100644 src/images/mac/filenew.png create mode 100644 src/images/mac/fileopen.png create mode 100644 src/images/mac/fileprint.png create mode 100644 src/images/mac/filesave.png create mode 100644 src/images/win/editredo.png create mode 100644 src/images/win/editundo.png create mode 100644 src/images/win/filenew.png create mode 100644 src/images/win/fileopen.png create mode 100644 src/images/win/fileprint.png create mode 100644 src/images/win/filesave.png create mode 100644 src/main.cpp create mode 100644 src/src.pro create mode 100644 src/sudoku.cpp create mode 100644 src/sudoku.h create mode 100644 src/sudoku.qrc create mode 100644 sudoku.pro diff --git a/src/boardArea.cpp b/src/boardArea.cpp new file mode 100644 index 0000000..791f036 --- /dev/null +++ b/src/boardArea.cpp @@ -0,0 +1,41 @@ +/* + + Class for drawing the board. + +*/ + + +#include + +#include "boardArea.h" + + +/* Constructor. */ +BoardArea::BoardArea (QWidget *parent) : QWidget(parent) +{ + setBackgroundRole(QPalette::Base); +} + +QSize BoardArea::minimumSizeHint() const +{ + return QSize(270, 270); +} + +QSize BoardArea::sizeHint() const +{ + return QSize(300, 300); +} + +void BoardArea::paintEvent(QPaintEvent *) +{ + QRect rect(10, 20, 80, 60); + QPainter painter(this); + painter.drawLine(QPoint (10,10), QPoint (200, 200)); + painter.restore(); +} + +/* This function draw the complet board. */ +void BoardArea::drawBoard () +{ + +} diff --git a/src/boardArea.h b/src/boardArea.h new file mode 100644 index 0000000..1d796f8 --- /dev/null +++ b/src/boardArea.h @@ -0,0 +1,29 @@ +/* + Class of the drawinf of the board. + +*/ + +#ifndef BOARDAREA_H +#define BOARDAREA_H + +#include + +class BoardArea : public QWidget +{ + Q_OBJECT + +public: + BoardArea (QWidget *parent = 0); + QSize minimumSizeHint() const; + QSize sizeHint() const; + +protected: + void paintEvent(QPaintEvent *event); + +private: + void drawBoard (); +}; + + + +#endif diff --git a/src/images/logo32.png b/src/images/logo32.png new file mode 100644 index 0000000000000000000000000000000000000000..577fdb9d896b88f264d2533e2a4b8dbaad201914 GIT binary patch literal 1493 zcmV;`1uFW9P)~m*nK++uPfvrKF!KmVq;hg4F|u!zkQny zVPRnS`1sGy&+qT=*xJ#8f`Q@T;VmvIU0zw<-rmN@zvt)Z0RaJ-zYPEX{{R30_;cq~ z0000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU$n@L1LR7l5-m5Fwu zNEC)Cu!>bySrj71$TZ7<5n7M|srP@Yz6F}4PoJ5&Cows~{pzlNarb|>A2<8T^SZ8^ zSXR>{>C&)_lFb1TZbGERduk4g$Q(%%3(X5Rq?&tvef zGEu0^+UqNf`=RxC-^$~Vj^kGVLS#1d6)9uWtFyszguWM@%SCdVUR%{>Vaw?_(oet+ zyx%xuZye8WgxsHTyy8k*Wvw{0S>HGg^LN}vx-{nddjtV|0Ct3&H;0fV79RF51U(3^ z|7fc|TM3%3XT6EB;?=!2Ob`Z-3jjQ8up_(uT$b6!Otu5VY7UYD{V57pkiIw=}n)mC%F-0M1`Cw{l|~ zkH$J=Pc};ouRmMS5fprjX_;bin#~zjrfjj(9sor4?BMm8^G<1+1PlQ89Z8N1V@j#esLAx09LMx=#aaeFLC56##Hw0b^5tUZzbBouSi|br6-7LywoymD=BV-U7a~cODncH|rr@xg! zbX-ZgNKIc4mz7oen$Sp+qsVIT(1W>YFgIHR>bDev{j$cQlZCSkl*DzNR;vX^u|`{O zMX|4BD~RYrQ09__21vq3Dz>vRu86O)cFA&BOg^t_ zKVLTLL()#04^Qahnk~}{Tc*;+dR6y=BdKL_!|!ZXeShUBd=!QBiz*XzTrbrd%QXkR zIGmPsP66O)tsrK+-zDsMtg5<@d1}$o@3M~0#(uNeA7AcpHyE%SGa!;N#&9=PFu!U^ z!^C>O7KNr%b$k5^n3av)D)58mh?pb-ptNP*mi1a_g&N!JUJC--l07q%@Sm@?MbDQ{ z0F2SQkDJCF1j!W!{T6gx)WtDKyH@-b!5@qXN|^IC%-*VzG#Dw*j^YF?&Mmo!DE%J* vTKc>WH>}dvN}b7ZuHMEm4r5=(a!h{#6cRX&_9Et{00000NkvXXu0mjfjJ>-s literal 0 HcmV?d00001 diff --git a/src/images/mac/editredo.png b/src/images/mac/editredo.png new file mode 100644 index 0000000000000000000000000000000000000000..8875bf246c5ec3fb50ba3e8b809152aa421227fc GIT binary patch literal 1752 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 literal 0 HcmV?d00001 diff --git a/src/images/mac/fileopen.png b/src/images/mac/fileopen.png new file mode 100644 index 0000000000000000000000000000000000000000..9a100868070838df4fba830e30b1ee6b3f113ab1 GIT binary patch literal 2221 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 UB0_&5sQ>@~07*qoM6N<$f^ZKn4*&oF literal 0 HcmV?d00001 diff --git a/src/images/win/editredo.png b/src/images/win/editredo.png new file mode 100644 index 0000000000000000000000000000000000000000..9d679fe6fcbb334eafcc2dfd8af377bf050f0f76 GIT binary patch literal 1787 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 KMNUMnLSTY!`bcR2 literal 0 HcmV?d00001 diff --git a/src/images/win/filenew.png b/src/images/win/filenew.png new file mode 100644 index 0000000000000000000000000000000000000000..dd795cfffc5c1ce273b3afedb5ed01da3fc5668c GIT binary patch literal 977 zcmV;?11|iDP)bWCsWYp)^2+5pE&16P)J5wbOa;T^94~jGe@$^;8|{N*-xE=iGD7yYG#t zD);gVxW`xYe;#`OHF@&p7Liq?Fv=6g5~?BqQNT@!pB*cZ>hN`{7r7 z0@PL2_61PYzIFCAKdP##I$yS{oLX(QZfdoPWw^&}T5r!d$9(p=D`Njv29iHLkmyYoqFd-sx$01C;)-KSr9NW?hA@p%q*ht6 zmBq{Ur!PNBt}Oo0xOA02fK^~?NCng%Kounf3J6mu2dGt6?ZW)I`_c{m0&2h#@Q*)+)q%|+6*xkz zvTPUT&+i3#9k}X2>%fKw-O>SHJ_8A?H#zstslxR28`z&KEbRfh;$?0CiQdK+@4!zp z5h(%3fWyEo4>%O)?GhLPrv1^{dTECO&0hZj`DhT15m$C300000NkvXXu0mjfIXk#o literal 0 HcmV?d00001 diff --git a/src/images/win/fileopen.png b/src/images/win/fileopen.png new file mode 100644 index 0000000000000000000000000000000000000000..58d70149e9ebb6b1b99c24f24d604f9f34bc5042 GIT binary patch literal 2402 zcmV-o37z(dP)6w)|eG-w5?fU7O@$uaflj*$qc}7O32z=f53M{OoF)h7oeShA&_k4SQ-`@M2!vL`P0zC^t zY?)k^I}0rHWe|C=RDlEAO~3z){lA|>N^DWO3%gtyv=qZFLZDxQN4@1pb78rrDr|Lz zEAuSzVZ#)h2fhA_`Q-jNk=RMDu+F~f08IAe0*&5yTx1NiMuJnKz~|Qp_BoEUjC2%v zvoZSS-T5GXHQABrlg!1QcqfvCu^7l=91fx%()^bMf9vl(HwtT)!0)kYYw$&@p! z%vSqZF)j!=$(B(iU*S9*YtMQ{TyX-AC3--GDIhxu)Yy^FCcMx6)qDV5 zLUbkV#H7@O&-iiiVT_24(3ADdXV0_h5DF9KB<{aI#M{u^+K#(bH4p@v;J7voAK#N0 z?V-9E${<@EF?81y^?Alg~q(k%|cz=c2Yrj zi2rjwPs=^+b8CAiYHI6|8RrOB%Rj@`2z0P-}rc=^@l)YNN5#8NxGv z#Cc8DLfi^70ZeoxqcvU;!<2PrhCXUywQ$+(^b0;uXWiR>pO?G7@jDb3W#OjF4jj{d z9~A`=!2Lv^_XfUivch+HT968Mprt?$)p=GZ4b{O#Z8l20M+hIx1n{I)fVxNpw5I4$ zPpjjq?IuVHi|3TPtEU%D&8?8#twyxJF|78#jX)n8;9(tYLZO&wwZ)+9C>nCqArmU2 zE=vtH*+yt6bjCFUHvXGM%#C>E3BTk6pj`@Mjj@mhZAE#Q8U&s@VWjq#IpuC?>p=Cr zI;6*5gq_JMDoS;9HHoOQV}Wi@j8vPUF;@dM>3fKHAF9(-P?fHQhEg}g9bW>gy{wiv zw-FXj41L&N~lcUg{ri@sLZi~__{Kj_OlVJg)ls@ohCN_nkXZM0jh#Li24z2VDT3wDZJhJA=_0bF>!dph=|3lUJpF z14-mps7O>ot>`FZS?A!b&z=(3Il@}PYqLkNT<*6Fbz*;n+J6dHi}g_4upDLO6?}Db zatp(4U}LZpe(r~#wG~I)(?u|&}g)rI0 z%7|+d;mv>F1LQK@7%DQn;CD(Mrwu=W!WMZxYi>vLcUHwo!?mcFrO_ZMooTC{vV&-o z=%P7an=iD&sI9#0cT>JWahx*B)6Gzo?*xJEO1SE>VdBvv{BEvINRGB$6bRhmX1)fd z8f#!_VTRIjDMD}9Lv_nSR7$+5wGuE%)!kWqfJkhmK-$2^SdB!yRB}v>IB9t8mG~6N02@pVmJ^SVwr{hxUKD zsB;YQH_yUaXBF0eycE$farnF8UtxVr8KQV&0~ryzNc5HGvo4O=4jK6^P1eA@ zg0rX+Iq*}BlY7MyR!M7k6I7?$Q%bWcM=m zq9k4!vTSo2r=Cc0ke@Ag7M>g`@DxMzH7lIl@dgsZPb1LfV`SX? z9F@X7C`;BudDdB!#T-VUKAW5+w=H2i;r*!!U+~|a^FMMhWX)mDn-Sw{fJh%j_}je) zanx>9i_fE6Xo*;hC45_v+;`}GcY+FckRkkPKJIIgd z2$qD+g!iWQ@CEaExqOwAbMZUujGa1r5TwJVrxn+a07*qoM6N<$g5EQU{Qv*} literal 0 HcmV?d00001 diff --git a/src/images/win/fileprint.png b/src/images/win/fileprint.png new file mode 100644 index 0000000000000000000000000000000000000000..2afb769ee23189efd927255c5f01da54588f17a0 GIT binary patch literal 1732 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 O0000 +#include "sudoku.h" + +int main (int argc, char **argv) + { + Q_INIT_RESOURCE (sudoku); + QApplication a (argc, argv); + /* Create a new Sudoku object. */ + Sudoku * mw = new Sudoku (); + mw->resize (300,300); + mw->show(); + return a.exec(); +} diff --git a/src/src.pro b/src/src.pro new file mode 100644 index 0000000..31f1194 --- /dev/null +++ b/src/src.pro @@ -0,0 +1,16 @@ +SOURCES += sudoku.cpp \ + main.cpp \ + boardArea.cpp + +HEADERS += sudoku.h boardArea.h + +TEMPLATE = app + +CONFIG += release \ + warn_on \ + thread \ + qt + +RESOURCES += sudoku.qrc + +TARGET = ../bin/sudoku diff --git a/src/sudoku.cpp b/src/sudoku.cpp new file mode 100644 index 0000000..c5d20da --- /dev/null +++ b/src/sudoku.cpp @@ -0,0 +1,162 @@ +/* + * Main file of the sudoku program. + * + */ + + +#include "sudoku.h" +#include "boardArea.h" + +#include +#include +#include +#include + + +#ifdef Q_WS_MAC +const QString rsrcPath = ":/images/mac"; +#else +const QString rsrcPath = ":/images/win"; +#endif + +Sudoku::Sudoku (QWidget *parent) : QMainWindow (parent) +{ + setupFileActions(); + setupEditActions(); + board = new BoardArea (this); + setCentralWidget(board); +} + +Sudoku::~Sudoku() +{ + +} + +/************************************************************************* + * This function initialise the file Menu. + ************************************************************************* + */ +void Sudoku::setupFileActions() +{ + QToolBar *tb = new QToolBar (this); + tb->setWindowTitle (tr ("File Actions")); + addToolBar (tb); + + QMenu *menu = new QMenu (tr("&File"), this); + menuBar()->addMenu (menu); + + QAction *a; + + a = new QAction (QIcon (rsrcPath + "/filenew.png"), tr ("&New Game..."), + this); + a->setShortcut (Qt::CTRL + Qt::Key_N); + connect (a, SIGNAL (triggered ()), this, SLOT (fileNewGame ())); + tb->addAction (a); + menu->addAction (a); + + a = new QAction (QIcon (rsrcPath + "/fileopen.png"), tr ("&Open Sudoku..."), + this); + a->setShortcut (Qt::CTRL + Qt::Key_O); + connect (a, SIGNAL (triggered ()), this, SLOT (fileOpen ())); + tb->addAction (a); + menu->addAction (a); + + menu->addSeparator (); + + actionSave = a = new QAction (QIcon (rsrcPath + "/filesave.png"), + tr ("&Save..."), this); + a->setShortcut (Qt::CTRL + Qt::Key_S); + connect (a, SIGNAL (triggered ()), this, SLOT (fileSave ())); + a->setEnabled (false); + tb->addAction (a); + menu->addAction (a); + + a = new QAction (tr ("Save &As..."), this); + connect (a, SIGNAL (triggered ()), this, SLOT (fileSaveAs ())); + menu->addAction (a); + menu->addSeparator (); + + a = new QAction (QIcon (rsrcPath + "/fileprint.png"), tr ("&Print..."), + this); + a->setShortcut (Qt::CTRL + Qt::Key_P); + connect (a, SIGNAL (triggered ()), this, SLOT (filePrint ())); + tb->addAction(a); + menu->addAction(a); + + a = new QAction (tr ("&Close"), this); + a->setShortcut (Qt::CTRL + Qt::Key_W); + connect (a, SIGNAL (triggered ()), this, SLOT (fileClose ())); + menu->addAction (a); + + a = new QAction (tr ("E&xit"), this); + a->setShortcut (Qt::CTRL + Qt::Key_Q); + connect (a, SIGNAL (triggered ()), this, SLOT (fileExit ())); + menu->addAction (a); + +} + + +/************************************************************************* + * This function initialise the Edit Menu. + ************************************************************************* + */ +void Sudoku::setupEditActions() +{ + QToolBar *tb = new QToolBar (this); + tb->setWindowTitle (tr ("Edit Actions")); + addToolBar (tb); + + QMenu *menu = new QMenu (tr ("&Edit"), this); + menuBar()->addMenu (menu); + + QAction *a; + a = actionUndo = new QAction (QIcon(rsrcPath + "/editundo.png"), + tr ("&Undo"), this); + a->setShortcut (Qt::CTRL + Qt::Key_Z); + tb->addAction (a); + menu->addAction (a); + a = actionRedo = new QAction (QIcon(rsrcPath + "/editredo.png"), + tr("&Redo"), this); + a->setShortcut (Qt::CTRL + Qt::Key_Y); + tb->addAction (a); + menu->addAction(a); + +} + +/* Slots ............................................................. */ + + +void Sudoku::fileNewGame () +{ + +} + +void Sudoku::fileOpen () +{ + +} + +void Sudoku::fileSave () +{ + +} + +void Sudoku::fileSaveAs () +{ + +} + +void Sudoku::filePrint () +{ + +} + +void Sudoku::fileClose () +{ + +} + +void Sudoku::fileExit () +{ + +} diff --git a/src/sudoku.h b/src/sudoku.h new file mode 100644 index 0000000..0ab62d5 --- /dev/null +++ b/src/sudoku.h @@ -0,0 +1,43 @@ +#ifndef SUDOKU_H +#define SUDOKU_H + + +#include + +class QAction; +class QMenu; + +class BoardArea; + +class Sudoku : public QMainWindow +{ + Q_OBJECT + +public: + Sudoku (QWidget *parent = 0); + ~Sudoku(); + +private: + void setupFileActions(); + void setupEditActions(); + +private slots: + void fileNewGame (); + void fileOpen (); + void fileSave (); + void fileSaveAs (); + void filePrint (); + void fileClose (); + void fileExit (); + +private: + BoardArea *board; + + QAction *actionSave, + *actionUndo, + *actionRedo; + + QToolBar *tb; +}; + +#endif diff --git a/src/sudoku.qrc b/src/sudoku.qrc new file mode 100644 index 0000000..f052555 --- /dev/null +++ b/src/sudoku.qrc @@ -0,0 +1,18 @@ + + + images/logo32.png + images/mac/editredo.png + images/mac/editundo.png + images/mac/filenew.png + images/mac/fileopen.png + images/mac/fileprint.png + images/mac/filesave.png + images/win/editredo.png + images/win/editundo.png + images/win/filenew.png + images/win/fileopen.png + images/win/fileprint.png + images/win/filesave.png + + + diff --git a/sudoku.pro b/sudoku.pro new file mode 100644 index 0000000..20f1cba --- /dev/null +++ b/sudoku.pro @@ -0,0 +1,6 @@ +SUBDIRS += src +TEMPLATE = subdirs +CONFIG += release \ + warn_on \ + qt \ + thread