From e33e8edb80936f8dd04729d70c0c991612340d5e Mon Sep 17 00:00:00 2001 From: gregory guy Date: Wed, 25 Nov 2020 15:16:40 +0100 Subject: [PATCH] Turn into a TDE application. The game is renamed TDEFifteen (original name: q15). Add icons (Public Domaine, https://commons.wikimedia.org/wiki/File:15-puzzle.svg). Signed-off-by: gregory guy --- CMakeLists.txt | 4 +- q15/CMakeLists.txt | 2 - q15/README | 1 - q15/src/main.cpp | 41 ----------------- q15/src/mainwindow.cpp | 51 ---------------------- q15/src/mainwindow.h | 40 ----------------- tdefifteen/AUTHORS | 1 + tdefifteen/CMakeLists.txt | 2 + tdefifteen/COPYRIGHT | 15 +++++++ tdefifteen/README | 7 +++ tdefifteen/icons/CMakeLists.txt | 3 ++ tdefifteen/icons/hi128-app-tdefifteen.png | Bin 0 -> 13968 bytes tdefifteen/icons/hi16-app-tdefifteen.png | Bin 0 -> 990 bytes tdefifteen/icons/hi22-app-tdefifteen.png | Bin 0 -> 1549 bytes tdefifteen/icons/hi32-app-tdefifteen.png | Bin 0 -> 2486 bytes tdefifteen/icons/hi48-app-tdefifteen.png | Bin 0 -> 4325 bytes tdefifteen/icons/hi64-app-tdefifteen.png | Bin 0 -> 5918 bytes {q15 => tdefifteen}/src/CMakeLists.txt | 12 +++-- {q15 => tdefifteen}/src/cat.xpm | 0 {q15 => tdefifteen}/src/gameboard.cpp | 24 ++++------ {q15 => tdefifteen}/src/gameboard.h | 12 +---- tdefifteen/src/main.cpp | 45 +++++++++++++++++++ tdefifteen/src/mainwindow.cpp | 45 +++++++++++++++++++ tdefifteen/src/mainwindow.h | 30 +++++++++++++ tdefifteen/src/tdefifteen.desktop | 9 ++++ 25 files changed, 178 insertions(+), 166 deletions(-) delete mode 100644 q15/CMakeLists.txt delete mode 100644 q15/README delete mode 100644 q15/src/main.cpp delete mode 100644 q15/src/mainwindow.cpp delete mode 100644 q15/src/mainwindow.h create mode 100644 tdefifteen/AUTHORS create mode 100644 tdefifteen/CMakeLists.txt create mode 100644 tdefifteen/COPYRIGHT create mode 100644 tdefifteen/README create mode 100644 tdefifteen/icons/CMakeLists.txt create mode 100644 tdefifteen/icons/hi128-app-tdefifteen.png create mode 100644 tdefifteen/icons/hi16-app-tdefifteen.png create mode 100644 tdefifteen/icons/hi22-app-tdefifteen.png create mode 100644 tdefifteen/icons/hi32-app-tdefifteen.png create mode 100644 tdefifteen/icons/hi48-app-tdefifteen.png create mode 100644 tdefifteen/icons/hi64-app-tdefifteen.png rename {q15 => tdefifteen}/src/CMakeLists.txt (82%) rename {q15 => tdefifteen}/src/cat.xpm (100%) rename {q15 => tdefifteen}/src/gameboard.cpp (95%) rename {q15 => tdefifteen}/src/gameboard.h (86%) create mode 100644 tdefifteen/src/main.cpp create mode 100644 tdefifteen/src/mainwindow.cpp create mode 100644 tdefifteen/src/mainwindow.h create mode 100644 tdefifteen/src/tdefifteen.desktop diff --git a/CMakeLists.txt b/CMakeLists.txt index db3dfb3f..813fa389 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,7 +91,7 @@ option( BUILD_KTRON "Build ktron" ${BUILD_ALL} ) option( BUILD_KTUBERLING "Build ktuberling" ${BUILD_ALL} ) option( BUILD_LSKAT "Build lskat" ${BUILD_ALL} ) option( BUILD_TWIN4 "Build twin4" ${BUILD_ALL} ) -option( BUILD_Q15 "Build q15" ${BUILD_ALL} ) +option( BUILD_TDEFIFTEEN "Build tdefifteen" ${BUILD_ALL} ) ##### configure checks @@ -161,7 +161,7 @@ tde_conditional_add_subdirectory( BUILD_KTRON ktron ) tde_conditional_add_subdirectory( BUILD_KTUBERLING ktuberling ) tde_conditional_add_subdirectory( BUILD_LSKAT lskat ) tde_conditional_add_subdirectory( BUILD_TWIN4 twin4 ) -tde_conditional_add_subdirectory( BUILD_Q15 q15 ) +tde_conditional_add_subdirectory( BUILD_TDEFIFTEEN tdefifteen ) if( BUILD_KSIRTET OR BUILD_KFOULEGGS OR BUILD_KLICKETY ) add_subdirectory( libksirtet ) diff --git a/q15/CMakeLists.txt b/q15/CMakeLists.txt deleted file mode 100644 index 0b719487..00000000 --- a/q15/CMakeLists.txt +++ /dev/null @@ -1,2 +0,0 @@ - -add_subdirectory( src ) diff --git a/q15/README b/q15/README deleted file mode 100644 index 7ecc7015..00000000 --- a/q15/README +++ /dev/null @@ -1 +0,0 @@ -Fifteen puzzle game diff --git a/q15/src/main.cpp b/q15/src/main.cpp deleted file mode 100644 index 849a4ee6..00000000 --- a/q15/src/main.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* - * $Id: main.cpp,v 0.1 2005/08/14 11:21:13 denis Exp $ - * - * Author: Denis Kozadaev (denis@tambov.ru) - * Description: - * - * See also: style(9) - * - * Hacked by: - */ - -#include - -#include - -#include "mainwindow.h" - - -const int XSize = 640, YSize = 480; - -int -main(int argc, char *argv[]) -{ - TQApplication *app; - MainWindow *mw; - int result; - - app = new TQApplication(argc, argv); - mw = new MainWindow(NULL); - - mw->resize(XSize, YSize); - mw->show(); - mw->setMinimumSize(mw->size()); - mw->setMaximumSize(mw->size()); - result = app->exec(); - - delete mw; - delete app; - - return (result); -} diff --git a/q15/src/mainwindow.cpp b/q15/src/mainwindow.cpp deleted file mode 100644 index 593b0fc9..00000000 --- a/q15/src/mainwindow.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - * $Id: mainwindow.cpp,v 0.1 2005/08/14 11:25:03 denis Exp $ - * - * Author: Denis Kozadaev (denis@tambov.ru) - * Description: - * - * See also: style(9) - * - * Hacked by: - */ - -#include - -#include "mainwindow.h" - -MainWindow::MainWindow(TQWidget *parent, const char *name) - :TQMainWindow(parent, name) -{ - file = new TQPopupMenu(this); - file->insertItem(tr("New"), this, SLOT(newGame()), TQt::CTRL + TQt::Key_N); - file->insertItem(tr("Load an image"), this, SLOT(loadImage()), - TQt::CTRL + TQt::Key_L); - file->insertItem(tr("Quit"), tqApp, SLOT(quit()), TQt::CTRL + TQt::Key_Q); - - menuBar()->insertItem(tr("File"), file); - - gb = new GameBoard(this); - setCentralWidget(gb); -} - -MainWindow::~MainWindow() -{ - delete gb; - delete file; -} - - -void -MainWindow::newGame() -{ - gb->newGame(); -} - - -void -MainWindow::loadImage() -{ - gb->loadImage(); -} - -#include "mainwindow.moc" diff --git a/q15/src/mainwindow.h b/q15/src/mainwindow.h deleted file mode 100644 index 2b898f7e..00000000 --- a/q15/src/mainwindow.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * $Id: mainwindow.h,v 0.1 2005/08/14 11:25:03 denis Exp $ - * - * Author: Denis Kozadaev (denis@tambov.ru) - * Description: - * - * See also: style(9) - * - * Hacked by: - */ - -#ifndef __MAIN_WINDOW_H__ -#define __MAIN_WINDOW_H__ - -#include - -#include -#include -#include - -#include "gameboard.h" - -class MainWindow:public TQMainWindow -{ - Q_OBJECT - -public: - MainWindow(TQWidget *parent = NULL, const char *name = NULL); - ~MainWindow(); - -private: - TQPopupMenu *file; - GameBoard *gb; - -private slots: - void newGame(); - void loadImage(); -}; - -#endif /* __MAIN_WINDOW_H__ */ diff --git a/tdefifteen/AUTHORS b/tdefifteen/AUTHORS new file mode 100644 index 00000000..c9b6db11 --- /dev/null +++ b/tdefifteen/AUTHORS @@ -0,0 +1 @@ +Denis Kozadaev (denis@tambov.ru) diff --git a/tdefifteen/CMakeLists.txt b/tdefifteen/CMakeLists.txt new file mode 100644 index 00000000..d08a5117 --- /dev/null +++ b/tdefifteen/CMakeLists.txt @@ -0,0 +1,2 @@ + +tde_auto_add_subdirectories() diff --git a/tdefifteen/COPYRIGHT b/tdefifteen/COPYRIGHT new file mode 100644 index 00000000..60896343 --- /dev/null +++ b/tdefifteen/COPYRIGHT @@ -0,0 +1,15 @@ +Copyright (c) 2017-2020 Denis Kozadaev + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. diff --git a/tdefifteen/README b/tdefifteen/README new file mode 100644 index 00000000..94a13563 --- /dev/null +++ b/tdefifteen/README @@ -0,0 +1,7 @@ +TDEFifteen is a sliding puzzle that consists of a frame of numbered +square tiles in random order with one tile missing. + +This kind of puzzle have many names such as: Gem Puzzle, Boss Puzzle, +Game of Fifteen... + +For more information: https://en.wikipedia.org/wiki/15_puzzle diff --git a/tdefifteen/icons/CMakeLists.txt b/tdefifteen/icons/CMakeLists.txt new file mode 100644 index 00000000..f9a2c11b --- /dev/null +++ b/tdefifteen/icons/CMakeLists.txt @@ -0,0 +1,3 @@ +##### icons + +tde_install_icons( tdefifteen ) diff --git a/tdefifteen/icons/hi128-app-tdefifteen.png b/tdefifteen/icons/hi128-app-tdefifteen.png new file mode 100644 index 0000000000000000000000000000000000000000..244a3a7c590ea8d7cf52f7419b56de72d3c1a721 GIT binary patch literal 13968 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 VF#2cgzbnl^(&7qYRU&%+{{!PFB}D)L literal 0 HcmV?d00001 diff --git a/tdefifteen/icons/hi16-app-tdefifteen.png b/tdefifteen/icons/hi16-app-tdefifteen.png new file mode 100644 index 0000000000000000000000000000000000000000..8dcf6383f01bf675d67242ec0ba930555499453b GIT binary patch literal 990 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG?e4&pIwTb5lzN%F#$H4F?)k33x*Lo804PB>j8?aJWlzrE^S^6S*-O|mzSga{@$ zZ%kyITK_=)hw#6K(jT&7iW7FM2+%YrONtiSXd>0?rhIm_`&p$Y@6NrOqh0s!WBdF& z8@`u%M_RAVezoe*XXXPF^388->)s?%8X9=rbl!XB1)oFLPJcg7bARoZtB>>d)!*6_ z%VN+kCiCSthi1p3jBBZo znzQdcG%TF7DdI>=_3stC_&qC{q5A{**?LS-@bXgTdy=SLDO^n?S&Uj z)0W@lwuw3J_WGCetk+dCGG8Kf(|hFR7MMvbT+QTt@aIp-;Lm=s?L{{UpbUV;jkjM^~PI{>{|M z<6ie174a3juIYqJKT=`MRMw6-#u?NQU{@KqA?o>$NWbG8EfW+}oHzs)bd`kd{FcqO zj{jp%>9&Q!EH|dPR#m&MUTRS)>oa9T-2I~GDhe!>fs3+bP0l+XkKORA>l literal 0 HcmV?d00001 diff --git a/tdefifteen/icons/hi22-app-tdefifteen.png b/tdefifteen/icons/hi22-app-tdefifteen.png new file mode 100644 index 0000000000000000000000000000000000000000..8c303f972e0061bba13a9be0ee97957cf911634e GIT binary patch literal 1549 zcmV+o2J-odP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rf3mpe2A{o%MtN;K75lKWrR5;6(mC0@#*BOPs zdv6V0#qR2Xq(qGzM3GI}ae^Q*0x*HS@Ge1Kz%P(@$YU7DlVn(A6(f=*3r;A@G7yUD z<|L9$)9kM5nx~sZQ$hlGdhp+cOGa9zJ(_8)U)86d|2mxAaPL7Xgwpw(%Jz)01a4_KZox3=W z13;Fg93LIAvbu&+3Lym1)TbEyyJr;-&{=}BH=i4J!(5hHLmVeuU0w0?$zuZF zr^pMUDCXecfM;JmC5|KVEMqzi+27yi%cozEW*J$QG9FL(+h708^WA@u7X?~t&|si7 zNt$EkB};ei6UGT?mXntnAx&1-`@~63niYgmLd)yY>GTMrgfuINlZ>DJ;#atiOBlsy ztq}qYbj|4e6u)j_8a9LB5$ETpNNLdN_Ar!W@6~ILPmT$~h`G5rlv3=y+UMltgrcmm zER#6NDUyI2WrYP8LP}Pa?{af(6LgIb0z=ezZI2s^i|Ff=R7Jwd$_lRQAcP=GGwL#D zYik3;Fc3m89bb}8W+{;%aGW{vJmcG!U*mZ#y1g!~mWS_880_ycKi{L>?$B(t`2O;e z)01Ns7Z>o_ZCrPbmoIji1{3BNdMGJDYYdGhPBNmg&o?h#@L+wDJTIt8IUMdYeEo`z z{x(^j6NU*BKfp8;Nt%(y4I+-@GdXT3Gq-;G8hawKRd-R zEjpbpQb~ef%E|FDaUA0~E>a4rs^ZPbF?FpmO_L~2D3U2lRf(FxQ}j1Cxb^Vo)K!UT zTI}u3;dvel3k$PdMc~*5tE(%x&J13j7c?E4t*t&vNdTf?%;f3k5Q70wBRC(8c=FGG z@Y~=09=p*X%L|@-@rW!;_T@sv>2j{2zE58yn2u>!Wpzl9Fz_MYGw&^IBMzMO{_64U2pC?qM2g2H9#L z(+l30&vC37ydKW7(EzhI7aFg@%5#N6E zoG1*~`OU}Jb^}*RTx$kQAedYi!8N=YtTfMXojKC1pw@z-tT7A&%XUc9oXP@?py_pq z)10cVLGpt#1cJaHv$V91sU)^-advhFLb0~GhGkorhGH-n;v#* zprWoSjDJ6S{MiThT^v)cT(8-WlK-wG%z|dG%GMMIxsM}h;q6B001R)MObuXVRU6W zZEs|0W_bWIFfuSLF)=MNIaDw=Iy5jkGc+qOF*-0X$<@jR00000NkvXXu0mjfP<*-j literal 0 HcmV?d00001 diff --git a/tdefifteen/icons/hi32-app-tdefifteen.png b/tdefifteen/icons/hi32-app-tdefifteen.png new file mode 100644 index 0000000000000000000000000000000000000000..6e63339d819c46781b02e82224fa202c2687e561 GIT binary patch literal 2486 zcmZ`*c{J3E7ynjbY&Do4l8DGQG0fP8(hOoomKmOKvKKSz}sKuQ1r0AY-|37(7R ze=CTWYeOO&TdxK%ozrUe!T3*A*n>0uQT>XUc}eQJ=v+9%nRk>0eVU) z`O%JcujSAI)+W@h=8eH7!m2*!02g;L|7I8`*Z2s|26 ztaS3Yrx1oJs-z;piAjF_!?{~BS(CRyn?xN=@pu!xdaUwj=8svucap}{?{`nUxfw$f ztZciMx8UHb5{k+x65(gb2^ zg(J)=bV@onJ9e795wG0sWb8tqB044eo)j`)PAqp}kdX}v7}8}Lt7T7reU;X;vA)x+ z?9B{O%elK2)fIn*mFn2!Prd+#B$Rwuq)L!8SrO93Uw`cqoKqF}bFFCSL3-Q6IBCVj z&?rcRRgMC^>9T6;(BwW!T9L?TxWxvq-ho8`x~2ru=%cWM*u zBTjIA?LOOuLA7(VHV4-SH>sLye6Xs_HZdqM7&jBJr% zv@i5$p1e6>s*=DE7Yt=z%20Qa{ZGMtQ3tgu@eCU6Q+*wIA!55VWnssG2aVOy8D}-O z-TSfU*-z+PVdvL0))+1=M9PTYGp(v=Ht`Gz`NTZS&bcPlO~jV6zl`08VWz9mFtz0$ zhb5_qVwT?;o3o!($Jt$e=uea^J);{qIX%izr`V}E>MVuLq*Olf)*sLE7iPV1r``&e z`IgHWs>s$Q)HQ9l>f#5SjB$|iimBp>v*&q?Gvtdsz^2kiy*GMl;t*4#FvUc9x@Hlv z_k7Y(Hd);j`B$8ol_5DbNulSO6fY_vFnTYd2%0-o>!)YVi(X$H`Eq@zAN-!5__o-c z{AKsf#$vk6fJBEluKAXU!r7e;ZdZgMI%0GCeif6M`V#Od-1i`+B|G2anpB8 zy`tz?SN?8?yoK^N(88x38wZ*hx6g#x(@4&I6C2%*qVVj6=@bO?Sx(mcN4WP(@{GeP zMGTrT8@x1U%k9sX1x61qZ-UfhO0Dw?M0wm+${L%d)ETdaGU26tmpioZ^;14o+v8@1 z=umRzRrmg&HrK8{olnUiAB{^fNh7@9KQ|bIc}(K3wEloM_zKK7LjK_n5g#x@>Uz`T z9G>?e_$FP4+na5r^{|gl+1S#3cfbG<`t}3t!Vr7^aO_4ZdbKcrAHpOJH`@JdQKMCl zbL&8Hu^SrAde~kInz~k7Sl;HQHszeb;F?%U0pns)U+7fb5s+)2rYyC(za!CGDcc%v z604J;V5#z`*ghY+i3y=1N{6!$12{@w_bxBd$^I_#dNZOAH|p-`c>-KsQ6b#<>J}b3 z>F7NFYlYoE@I$FDIhWmjN;pmErD5LouI+X!ADV){lq6Q-y}-H*w|Kwxa?FR|sUlzr zVSc+D1UhCeS7!gZ3xofa?D0z$8K<3f;(?4uq}OQ@^~&=XU`Pb2kR^`|Q5{24sFNH& zkI;8+u;(m4k#Qx`Q?yC~o;q+X?eKg7Ysn@*ryEx@M=4RvJ(+PkMDsON?yxW_W+o zpxw$LVIUzEF+q=7{95(>YJ}4O!;3@`;cT4|iqz|M=Nz6;o=^21SYg+_OpqI^!g_|J zu^L*;=Tjw4h6PT^3mIoUwk#?63(knr6|;?chD+|Z{#0FHp@o9@yGlq`Ul2T8n|T0o ze`%*Wxj*OGdK6FVLtNM5p6xKzbODSsY3sYH#=$DnSQ!4fZC55eX^1&-^nN05pI5Ln zUwwn))K7tz#jbBrqB`D^F=te_zE7#8+-xjA%)M7jr~iGhm)%7|w;6r%0!cl-SR1l& zCvsUFCrvBmXbkt}4ol7|+z#Lz^YYr7jZjyTiEh5$;yyPhtJlAOX#9;`mk+h*{`BI4 znFxAXFDWsRU%3pouME9Dr5_YbC zuL~zgo*c@97H)4#9aPlGY6v5MJVr5`mH z-rq`4T{!YPPPo<`6J8p=$GLIE*Q{)6l*N5)6hloNLT|Z;-bQ)`-{u0K1=E6E($u`9 xrEdq*MIvBGI6@7kiG;!G9|kx655Yh17SSu>{}Xz~dVl|80LIkHEmir0vCA%@A+^ARGh$#KZvrCp1^g1^^I318zA30FVLz zfbUUB>m6O%0Tar?6biWbZ@hT_Du?D_4mO9IFt4x)Gs{X`8*jt|09Q86p+>e|l#fOC zeH~{)5<1@>f)4|M=I|=*fqG3uj^=Q-yAIKD`f&nebe#DHJh}N&^4d$2iNphGs^2AM zqgXK`&VMZhbxcsw%{fDsTOiB3I`w$7hrWdsQXJXZV@s>TqjNT*qb-S5&>^#@6=1*z zi@u`W`99Xja47cKBgrH4qiv?51PiqY{15sT>*5 zQ(9Z;95R*sLQAxiH@Z4qq5F9d(i zuP3XAzc1D#2oB7U7syGkb$jaA({!VL)v0`$a~NCDk36XXblKlLb^HuIsOgm8TLV@U z)tkh2^YuH8+HZ;%Tt7Du?*MV@`8sA>h z%>ZBPp_kaDt?5goTZwbTAU-%;fzKD7NCw#(uyFSY-ryG$_82CQ9{at2ggIU@y`R<| zl#VQ3Q6QI`9}7lo)^vLM`f}%s*j;&|OX6Reb;je~bY{#%oya>~Y~^ou%rZV#biG`C z3w@J_TxlwAA7Wd;l;uA-5~1WQfmAA{nwrSaJH4UjyZ1YOeKN3?&z)?_*B7jBy;i!v z&*Am4>?{#EGjA!h%{}W(fM0i>ibs(NXwSnkdJPRNV#UiO*>pA1QhQIeQBvav$tN43 zqLP0Fy%xJIbe#$9n0J?;NrH^FhZSXIx%l{O7ZfXSqH|Cu?m~c)P%lCQpNN2vTX1jz zg(4z<2MbyLEIXI~+)OoQx$_(?=F_CX=7vaks8QUeatY+0X(l zn1PR`lg?S z)=hl@`G<6Y`-}4a<}mp2sD4&`_Y0(dSjCFyijlEze%PbZ6GVH$kdQ2!bW_nV{+dsd z1;*AjSTIRDtd^dF`5B@x+Ze`n>|iVnZ8}s5?&4SWeU}0+ z)@lfw0(Gf)%iyXUl)vfuQra)e@gOKZGI1|#73;y$X4fXgxg zoBF>fl~oM7WIHS(&c#gAM#QQrXGjWw;~u>q7bC`U-I=OOh79Evi0N68iyEhxWN|?BRl(rFB&xnCe}eAura=Xf7%-7HWw+ekEzqMNl7w(6Z~vE+C1j6TMAx#eI!_aAuS!M{EH)VQ6)NYEOiWDt zA_6OuxQ8BWjHw~s2l+uU@wO5HOXFFtzF*pN`8qFjKzvjIcZV>^tsqu?+`UoHFi!C*UJ{G#Vf7%K$`IbJqc7W8JklU0at>- z8r3ed8G@+wSbAd?Sp2otR%Pp)H%4ZK|5QNDFBe9TFdz^}j(2#3cMUl-L?VeXkYM%{3C(GBVfTxv{-1 znJhtp1QktWao?+Y_LO`7H?pO@^Z{THRs?{p0cnLbcxeENUuS@NU3^3#v`TetGBU(UG?20;Ff`!KoaL$tc8!yb!|?e{q85 zJo0Z1jhAU_Cr!277C1LdA@ozR?fLH4=z``04%T?O+`vK%^#UN-(*q4ig-_c{C*ObH z9RDma1C{#H^^ED@yTNl!URT9xh^*Pa^LnP#${KGTqk`qGml&Y&+mO%cQqR9Xu88`8 z?6WiN7Z#MwANo(M#3pw(8qszr!scd62}{X&R28fC?|Cca)R$B>$2hzM7u30L|sUrou-{C9|^+dj+SU}A<_!6x07~_)PGBMM49*ZUHn$4rxHE= z3_rhs#~Df3jK>XbrP#|$cm4X!Q~8iu`cZJvXRROOlA<#C!%7(VGJdr$KdP(jYujuq zfonaVcM$=jM6NrAW44b5O!eD+FLN8VIIQ&^IvK+|`{gydZ{JB*8~F2TJ{CjtuHxYrLIew{S9Ydj7+-3 z*47paor#c%7=xy!=9B!}>lL!MY50{55BLL6qBRF zc|!Jcl1_YhgQQouD@(UfL;QVO&Lj07R!CrioQOcI8(M_+H1|dJ@~L%(Kn0&N#2Fi;8MhVz8)Dm&@bTxMawm z(7Sr=gmMNpQgv#$Zd9HeK-F6vtWC|8d42ofm6k-qRW`4#l@*57&1>NcN%d%Z@wNEK zY4S$Fq;H|nl*3(|yUKigOkuV-%YKS5zfiea<+6004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rf3mpe2A{o%MtN;KOB1uF+RCwCmn`w|#S9a%r z_r6z|SsTS7wqh@!D3)T;1~iC8hz1EnYsWpZ9o?R>+T$(SA3Xlx`8E?BGchya@Wi-n zN!?O+NB4v@R;wjivSdlnLP#tU0)&tdiwZ;N&|N7I1SMK|xzu618k(YNZn|If;g)_FFZ~2OZe`^--qz8aD`qp%whqV@C%q{7B z&%@lJ&RD3QKAkCbDP~k{}CTRO2JpH?R@abMdmgxLm((;HCO~+ zo&AIgUovBUb0`^0CotA>@$|=3)zmU=P7_#LmQEW@%V!@lVbU}v&uGAwqZ5L`!7P`$ zFVj445^EMuZJ2pm^)owmKJ$lr|Ld-OKDhQP6Ov_jtYhnwe~BlZ2?`H7Qg^^&dGUo8 z@jSt!kMEBEK9){t&Ch=JQ>IRt%#NMAu-1;P6M|ee%X82Dm_5&SEjzpkf0!ohK!}@5eej)Vo@XHU_0M0t)SU9=;d) z6+PUqSZmQnqm+A33K1J#N{J`s$n6c8VbS{~1~A6D8(WK%1}P<2#b=*=f$#Y=EnX6j zQt_pYAy67AozC+-ZuIwa{Ns=CeV;q;T1{1TP3c4x&M-=85Fm}k^CaC}U3_xlVl6jN9z#?&j>7(=1=Hikh05n;IdyN)2F(4IuD*!H0+5=jk8* zE%O={@SlG0-w;9|i>9k{YHmcF0o-JJ`K1>*_30<{_Vm!w@+IH-gQwhDFEXHe5Eb6j z5(IgE`rNam(*vCO;&ZMf@Ie*hCrqNUsyd9>mOyI)<$j{ZjVbMr)`n!N zlINfOd#Y<{+4acdGd;7rw6!rp@krD0~OtOGz-YW_!D+W7lc}Kq2)`?d~uqN_BK8{^(jHVFbkB@ zSYu0cN-Kgu@%*ztx ze=B8dxUmgT90i2C!IEVwXPS7HSVC(i>NKYceI30vxQVN3& z!;}e~nFvFf5r)M}SFp5smAgNX4}vhf+4wZu?2}Cm>iab&{ecY}P1;c60Xl`)W5(t6-YYI0g?TB!li;@q(TH_2C1ZX)#H_B^c zihM^9#G$p&jvVoI5Cm94!v#TM29yj=sZL87KGPTm@H|OR`vvyB^LCiDxHM8AK$NDO z(eGgC>g*&v(9iYm9#WN+fQWU%eR!D8T0>_?2ZNabu3o!FB9ScUgeYyZNT;=?v$K_J!2|~ zRApH@YYi7#&QT#@cKuZRM6xWM)`~CBon~B36|-hc!SgH1fk-l$LHz69h|3^0fHs=R zvl`j<#1nW@P}XHF`D_}`_jvS?hq(zh754|F6@9(kOr0`?2OhY;tdvy<$Yrx!?doK4 zQzM%tYxR9ax255gL+_+p~mec?d(H&i6dLm?913uHl=|pum%G?(7-P zo;i&Wf<=oL)6}$N*u#|O0WJ*XGZ~H?dLN|}>o;tqwzh6qr-s6iwT2H4?5C&uI-cjT zWN9-C7B&uRZzv3Tp2y|ZR*oJ0kV%s!v3l(~QmNE$VE}7N_5<(*zkc;)u3Wyv>Tj$k zpUXSz3W}zy8{s(7krLk*y!_IO96$CEH8r)=j;mwcJsV&MooQoGS|f0IfH9iu*SqOx zZ{w{uU*|i2@D%ey0}Q3ect1c2^7(+j`S1UQ2@@u8{@fX|xg6W>-+?uTvHa2y8nh*J zmJbyD{r&Xy^>O~}8FKl237Et*Xl+SuJ~%kYM@J5kNF=GLtz}$Y9YIhaG;0i4;#4?- zA&X%9j$JgbSjD_~^I5xoBe`5Y2CSF{BV9y`w7aOhwhKhAslgVVbaigE{6DE>MRdVfWR|yH0l?q2-qm+Vh z2^eX(^wkA2=>e`^yT-V28(=Au|Sjx3zrHH4rb|SZ(~7Y6UG`kJ3Hf< zX03Nq7%G_oLzjTohLv~R4MH$`ZUaw#=MUpNyf6dIu>F8QDRw=wo4E}On7^=zZ#}#_ z#?xpd9YjSV8P1GAQISaU&|}|bT-^kMAaFA(x^EFfsCXYik*uuZ-~IdVGdP%K_1X<= z-L}&$*QhV}5@o#?z874;&Wl1Sxqec4xo@Wuppp6VSLVl;9Q!3_y zC@h*{7!n3!B;)EPuxZP-P@}`#-ocO>3Pa%xkixKV(GnIdS%wr6uyJ1ESxebCY@;wp z7|W#_T^)P)5Q2;gTLK%?pks9}d`S0jTI*7viQg+8NnL;;;7~e?G)5b8xm+9uU3NB<>zF`7eD36-~TQP8=HpA z9H#@z+yDFqFZ}#@?%(+ka~l@$^PfG>_z4r(^XkhaQz6BvQ=B=#$#yyTp6&@j|s;)(b=Z&m|>Y7@Fkhr5U1|9NAR2qxw0#)JXEFgr(g$pe_ z_skD@Z1c+dhf%E6jv0y>tt(C?K zFytO=(UN8K^mNm-w3+oAHj@kTA-uTCkTnIUu@*AvG!63`X;{!mCX?aO-A{7p{r%j% zc0IS>xtd%)AJzs77%hY#oldjj_B)Y6kRC`A1OXd1Z$(N$I-QA^W}!WI+%KIT;I1|6 zky4V)X4&=d6J)c42*won(0VaOKk2N+Ak!X_3r zEsZxe1+ep>$DPxRXwwunHlii4qBBF0Bp=0V`JB&Fy!tai0_5 zg~wz>sLKZmrPVFcV7LUNbdFJLJz~AClm<1@b4x->RRSlmK74IW(TSK;Cn+!u(bXbRdWRvr2lah3Lz#Zfq;rL^L27Qmd z_A|WsPp?s3TNj6h5&{HQ>x;q$(A(3)Kwmdk+S;hBstI*bP0xL>^nd5(dwRMV=8ck1kH~9-KbX@I;YnY||ENG&?<#KtZ1ZKo^IW~YXhRIXwS-R?O zlBuduw~&Tj@4fdPeq9asth*b(B2gAZ8e`bIcQ4bXOk&NNyO6$LmQJaFz5Cv!_gV)N zD=n$XYZ1~Lv#(YrNqSXS25xSE2~%gWWy^iHR2#f{wF}SlxOemBvP)E2D=uGdW%A_7 zY~H-7ER7J59n8|+d7a7CmT%7O!>c%mDZ_AitLO_1mdeo$;5w$sggVOU6Qj*K% zOV;ttbXpr%*%g9ZJ|7lF%Fr22b#*nhD>hP*eTU}RwPhI~msgy;lpb-GjgSYp%8)0e ztG|Z_prh?B_qk#!EZW=*%T&H!&_xdwo&G2eM^S}G;A)8#z8}tJM|F`giggwc(!*HL zmN-4W*`=*5|Aa_Xa!RMuy!Y;2JkR5S9lN-2;Vf^x@fyigif=vi7*nTB3p*>~Jizlj zZrr%RyL;cFwssu%eRDgW@6pxX&g;Ma726+pkXf_m6pd(MSGceH8hhV$RSiN>V zdtPxRxkNI_w(UEZGk4zDL;YJ^BUXltF?@RR6W)CN*S!7D|3ogI=fM8okVvNZ=*VGy zz31h4Hbf&7m9LH;JIWic?_uBGw@_L$IGE+K*X6~E+4S8c_rI-I;vAj^Z4)lF0*FOrN6(A zc?}B*!oo@MNzq&ou|>+9oJFTKD(dVnjfmpFFxLo(s9*=*QOU#GXXhgq}dgyk(aD$y}H zA2@#OBM!a4pSCNl9N52)M|b}one+fBPaLPZc3gN?*u+p1!O+2v_H*LcQB)9cVE=D8 z`r#pb->0*qosIWyEi(AO>hq6qKtekMR3wtz{f!N*S+|k#6DIKJ?mPMX)JYPF1gmbp zi+m8o(?43v7E2@Bi*!Tdm(S_n@s;ZjpJ0A{p zlX>KcCpmNaGd66xk7dhO#I?Tvr!$~HgN7;7>ZzYGyXXv#W!;8*!=tb!JljK|#uq+R z{fybnp3@NT4(EdaDFh1|7sn?*qp+rnX287pjVx$f9G?&sLQp?rR@_EVv?21_p9mVm z0L3&IjZ`uGxSCy2jWDJ`i&h%zQKF0CC#1?@G-wS<8H5xV6Ch(6blTGUSd=c!Bg!?z z%|2K3ogqsmo29#_H_il$A3_w@_d@Cd$P5mW%LjD#^oD1Hht~p!5}q+GJmv#UcTdj{ zf-Isy5q%XVqQM;5Y>q@y5d@lCUNP1e9R-lf>roRX_q918xNXuT#<#W7{pqWvUtTKu zLQ)*VBhtcBo6S>g4cAUyC|hT(Wnw;u%~`H}axTKZF?GfmYAmEo4LwS8vNc^6L}_EF ztsRF}d4w8n0DJPx#oUA{!J_GvU@`5 zDj}0!OACZXxIUoep_c67QCs001R)MObuX zVRU6WV{&C-bY%cCFfuSLF)=MNIaDw=Iy5jkGc+qOF*-0XxQKGP0000bbVXQnWMOn= zI&E)cX=Zr - -#include +// Author: Denis Kozadaev - (c) 2017-2020 + + +#include + +#include #include #include #include @@ -251,7 +243,7 @@ GameBoard::startMoving(int i, int t) dx = step(xt, map[n]->x()); dy = step(yt, map[n]->y()); tmr->start(DELAY); - TQApplication::setOverrideCursor(TQCursor(TQt::WaitCursor)); + TDEApplication::setOverrideCursor(TQCursor(TQt::WaitCursor)); } @@ -305,7 +297,7 @@ GameBoard::moveItem() xt = yt = -1; dx = dy = 0; tmr->stop(); - TQApplication::restoreOverrideCursor(); + TDEApplication::restoreOverrideCursor(); checkEndGame(); } } diff --git a/q15/src/gameboard.h b/tdefifteen/src/gameboard.h similarity index 86% rename from q15/src/gameboard.h rename to tdefifteen/src/gameboard.h index 8150acb6..55b25e29 100644 --- a/q15/src/gameboard.h +++ b/tdefifteen/src/gameboard.h @@ -1,13 +1,5 @@ -/* - * $Id: gameboard.h,v 0.1 2005/08/14 12:10:05 denis Exp $ - * - * Author: Denis Kozadaev (denis@tambov.ru) - * Description: - * - * See also: style(9) - * - * Hacked by: - */ +// Author: Denis Kozadaev - (c) 2017-2020 + #ifndef __GAME_BOARD_H__ #define __GAME_BOARD_H__ diff --git a/tdefifteen/src/main.cpp b/tdefifteen/src/main.cpp new file mode 100644 index 00000000..d9d5c989 --- /dev/null +++ b/tdefifteen/src/main.cpp @@ -0,0 +1,45 @@ +// Author: Denis Kozadaev - (c) 2017-2020 + + +#include "mainwindow.h" + +#include +#include +#include +#include + + +const int XSize = 640, YSize = 480; +static const char description[] = I18N_NOOP("TDEFifteen is a sliding puzzle\n" + "that consists of a frame of numbered square tiles\n" + "in random order with one tile missing."); + + +int main(int argc, char *argv[]) +{ + TDEAboutData about( "tdefifteen", // program name used internally + I18N_NOOP("TDEFifteen"), // displayable program name + "14.0.10", // program version string + description, // short description + TDEAboutData::License_GPL, // licence type + I18N_NOOP("(c) 2017-2020 Denis Kozadaev"), // copyright statement + 0, // text - any information + "http://trinitydesktop.org", // home page address + 0); // bug email address + + about.addAuthor( "Denis Kozadaev", "Author", "denis@tambov.ru" ); + + TDECmdLineArgs::init(argc, argv, &about); + TDEApplication app; + MainWindow* mainWin = new MainWindow(); + + mainWin->resize(XSize, YSize); + mainWin->setMinimumSize( mainWin->size() ); + mainWin->setMaximumSize( mainWin->size() ); + + app.setMainWidget( mainWin ); + app.miniIcon(); + mainWin->show(); + + return app.exec(); +} diff --git a/tdefifteen/src/mainwindow.cpp b/tdefifteen/src/mainwindow.cpp new file mode 100644 index 00000000..258b0220 --- /dev/null +++ b/tdefifteen/src/mainwindow.cpp @@ -0,0 +1,45 @@ +// Author: Denis Kozadaev - (c) 2017-2020 + + +#include "mainwindow.h" + +#include +#include + +#include + + +MainWindow::MainWindow(TQWidget* parent, const char* name) : TDEMainWindow(parent, name) +{ + TDEAction* actionQuit = KStdAction::quit(this, SLOT(close()), 0); + TDEAction* actionNew = new TDEAction( "&New Game", "reload", TQt::CTRL + TQt::Key_N, this, SLOT(newGame()), this, "New Game"); + + mMenu = new TDEPopupMenu(this); + mMenu->insertItem(SmallIcon("images_display"), "Load an image", this, SLOT(loadImage()), TQt::CTRL + TQt::Key_L); + mMenu->insertSeparator(); + + actionNew->plug(mMenu); + actionQuit->plug(mMenu); + menuBar()->insertItem(tr("Menu"), mMenu); + + mBoard = new GameBoard(this); + setCentralWidget(mBoard); +} + +MainWindow::~MainWindow() +{ + delete mBoard; + delete mMenu; +} + +void MainWindow::newGame() +{ + mBoard->newGame(); +} + +void MainWindow::loadImage() +{ + mBoard->loadImage(); +} + +#include "mainwindow.moc" diff --git a/tdefifteen/src/mainwindow.h b/tdefifteen/src/mainwindow.h new file mode 100644 index 00000000..46391c73 --- /dev/null +++ b/tdefifteen/src/mainwindow.h @@ -0,0 +1,30 @@ +// Author: Denis Kozadaev - (c) 2017-2020 + + +#ifndef __MAIN_WINDOW_H__ +#define __MAIN_WINDOW_H__ + +#include +#include + +#include "gameboard.h" + + +class MainWindow : public TDEMainWindow +{ + Q_OBJECT + +public: + MainWindow(TQWidget* parent = 0, const char* name = 0); + ~MainWindow(); + +private: + TDEPopupMenu* mMenu; + GameBoard* mBoard; + +private slots: + void newGame(); + void loadImage(); +}; + +#endif /* __MAIN_WINDOW_H__ */ diff --git a/tdefifteen/src/tdefifteen.desktop b/tdefifteen/src/tdefifteen.desktop new file mode 100644 index 00000000..e3409b4f --- /dev/null +++ b/tdefifteen/src/tdefifteen.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=TDEFifteen +GenericName=Puzzle-solving game +Exec=tdefifteen +Comment=Sliding puzzle with one missing tile +Icon=tdefifteen +Terminal=false +Type=Application +Categories=Qt;TDE;Game;BoardGame;