From d64552743a65318da557d6ec156f1032b11aebaf Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Mon, 19 Oct 2015 15:36:20 -0500 Subject: [PATCH] restructuring main.cpp --- Board.cpp | 500 ++++++++++++++++++++++++++++++++++++++++++ Board.h | 390 +++++++++++++++++++++++++++++++++ GameEngine.cpp | 560 +++++++++++++++++++++++++++++++++++++++++++++++ GameEngine.h | 34 +++ a.out | Bin 0 -> 37669 bytes main.cpp | 583 +------------------------------------------------ 6 files changed, 1485 insertions(+), 582 deletions(-) create mode 100755 Board.cpp create mode 100755 Board.h create mode 100755 GameEngine.cpp create mode 100755 GameEngine.h create mode 100755 a.out diff --git a/Board.cpp b/Board.cpp new file mode 100755 index 0000000..78b82b3 --- /dev/null +++ b/Board.cpp @@ -0,0 +1,500 @@ +class Board +{ + char boardArray [8][8]; + char turn = 'O'; + + public: + + Board() + { + for (int i = 0; i < 2; ++i) + { + for (int j = 0; j < 8; ++j) + { + boardArray[i][j] = 'X'; + } + } + + + for (int i = 2; i < 6; ++i) + { + for (int j = 0; j < 8; ++j) + { + boardArray[i][j] = '_'; + } + } + + + for (int i = 6; i <= 7; ++i) + { + for (int j = 0; j < 8; ++j) + { + boardArray[i][j] = 'O'; + } + } + + + + } + + moves parse(string input) + { + + input = myToUpper(input); + + cout< 8 || row < 0 || kolumn > 8 || kolumn < 0) + { + cout<<"ERROR: index out of bound!"< 8 || row < 0 || kolumn > 8 || kolumn < 0) + { + cout<<"ERROR: index out of bound!"<= 0) && (r+reflector <= 7) && (c+1 <= 7) ) return true; + else return false; + } + + else if (moveType == "LEFT") + { + if (boardArray[r+reflector][c-1] != pieceToMove && (r+reflector >= 0) && (r+reflector <= 7) && (c+1 >= 0) ) return true; + else return false; + } + + else return false; + } + } + + + + + vector viewPossibleMoves() + { + vector output; + + for (int r = 0; r < 8; ++r) + { + for (int c = 0; c < 8; ++c) + { + if (boardArray[r][c] == turn) + { + if (isThisMovePossible(r,c,"FWD")) + { + moves temp(8-r,intToCharColumn(c+1),"FWD"); + output.push_back(temp); + } + + if (isThisMovePossible(r,c,"LEFT")) + { + moves temp(8-r,intToCharColumn(c+1),"LEFT"); + output.push_back(temp); + } + + if (isThisMovePossible(r,c,"RIGHT")) + { + moves temp(8-r,intToCharColumn(c+1),"RIGHT"); + output.push_back(temp); + } + + } + } + } + + return output; + } + + + void easyAI() + { + + //1) see all possible movements + + vector listOfMoves = viewPossibleMoves(); + + //2) pick a movement + + srand(time(NULL)); + int randomChoice = rand() % (listOfMoves.size()-1) - 0; // choose a move betwen listOfMoves[0] to last element + + //3) execute movement + + int temp = randomChoice; + + move(listOfMoves[randomChoice]); + + //cout<<"\n\nMove executed by AI: "< 8 || row < 0 || kolumn > 8 || kolumn < 0) + { + cout<<"ERROR: index out of bound!"< 8 || row < 0 || kolumn > 8 || kolumn < 0) + { + cout<<"ERROR: index out of bound!"<= 0) && (r+reflector <= 7) && (c+1 <= 7) ) return true; + else return false; + } + + else if (moveType == "LEFT") + { + if (boardArray[r+reflector][c-1] != pieceToMove && (r+reflector >= 0) && (r+reflector <= 7) && (c+1 >= 0) ) return true; + else return false; + } + + else return false; + } + } + + + + + vector viewPossibleMoves() + { + vector output; + + for (int r = 0; r < 8; ++r) + { + for (int c = 0; c < 8; ++c) + { + if (boardArray[r][c] == turn) + { + if (isThisMovePossible(r,c,"FWD")) + { + moves temp(8-r,intToCharColumn(c+1),"FWD"); + output.push_back(temp); + } + + if (isThisMovePossible(r,c,"LEFT")) + { + moves temp(8-r,intToCharColumn(c+1),"LEFT"); + output.push_back(temp); + } + + if (isThisMovePossible(r,c,"RIGHT")) + { + moves temp(8-r,intToCharColumn(c+1),"RIGHT"); + output.push_back(temp); + } + + } + } + } + + return output; + } + + + void easyAI() + { + + //1) see all possible movements + + vector listOfMoves = viewPossibleMoves(); + + //2) pick a movement + + srand(time(NULL)); + int randomChoice = rand() % (listOfMoves.size()-1) - 0; // choose a move betwen listOfMoves[0] to last element + + //3) execute movement + + int temp = randomChoice; + + move(listOfMoves[randomChoice]); + + //cout<<"\n\nMove executed by AI: "< +#include +#include +#include +#include "GameEngine.h" + +using namespace std; + +string myToUpper(string input) +{ + string output; + + for (int i = 0 ; i < input.size(); ++i) + { + int numeric; + + if ((input[i] - 0 >= 97) && (input[i] - 0 <= 122)) + { + numeric = input[i] - 32; + output.push_back((char)numeric);// = 'Q';//(char) numeric; + } + else output.push_back(input[i]); + } + + for (int i = 0; i < output.size(); ++i) + { + cout< 8 || row < 0 || kolumn > 8 || kolumn < 0) + { + cout<<"ERROR: index out of bound!"< 8 || row < 0 || kolumn > 8 || kolumn < 0) + { + cout<<"ERROR: index out of bound!"<= 0) && (r+reflector <= 7) && (c+1 <= 7) ) return true; + else return false; + } + + else if (moveType == "LEFT") + { + if (boardArray[r+reflector][c-1] != pieceToMove && (r+reflector >= 0) && (r+reflector <= 7) && (c+1 >= 0) ) return true; + else return false; + } + + else return false; + } + } + + + + + vector viewPossibleMoves() + { + vector output; + + for (int r = 0; r < 8; ++r) + { + for (int c = 0; c < 8; ++c) + { + if (boardArray[r][c] == turn) + { + if (isThisMovePossible(r,c,"FWD")) + { + moves temp(8-r,intToCharColumn(c+1),"FWD"); + output.push_back(temp); + } + + if (isThisMovePossible(r,c,"LEFT")) + { + moves temp(8-r,intToCharColumn(c+1),"LEFT"); + output.push_back(temp); + } + + if (isThisMovePossible(r,c,"RIGHT")) + { + moves temp(8-r,intToCharColumn(c+1),"RIGHT"); + output.push_back(temp); + } + + } + } + } + + return output; + } + + + void easyAI() + { + + //1) see all possible movements + + vector listOfMoves = viewPossibleMoves(); + + //2) pick a movement + + srand(time(NULL)); + int randomChoice = rand() % (listOfMoves.size()-1) - 0; // choose a move betwen listOfMoves[0] to last element + + //3) execute movement + + int temp = randomChoice; + + move(listOfMoves[randomChoice]); + + //cout<<"\n\nMove executed by AI: "< input) +{ + cout<<"\n\nList of possible Moves:"< +#include "Board.h" + +using namespace std; + +string myToUpper(string input); + +struct moves +{ + int row; + char column; + string moveType; + + moves(int linea, int columna, string m) + { + row = linea; + column = columna; + moveType = m; + } +}; + + + + +void displayPossibleMoves(vector input) +{ + cout<<"\n\nList of possible Moves:"<OtX*ejNHOvw|4`2rVi`)uP2zC?Dy%U+DW+R5D(}ZKM!FuO-~eX;P2!#Ux)$@@beO`fI4`M|GqBa-o;IeMnK- zN5Hs=uL(%J6iVNT)KGllRh$I$aYVx%B2Pn|?>gioJx?`gJy%P4>FkndA0=70!_0>I zb#n`6Hq^{$sBdcBIAdec+!=EV^TMILSzPZNuoLe!D=Rpowj=3FCMH=u4tq zh9hb0Q<4V%ECi&g?<(NEPT`bJBj?W`rIPctH2m|^;9pEr-_NAM-`}F1dG>YLbM9${bm7LBIIX?y@{v26HFp(~pH^Pyc>dP;u zxnizi7MHIuYl1Do_4VOMu%&#(l7>)Iu)JzrL(nkI^^Kt>GaRXEiI}EgUfX7_7QQ77 zRpD?jtg@%f+#IQE30BpZ)m2T^!3M*;VP#o(Nr8V=88Y2a7Acr#n&1d+FxP>ps-YoN z-KLo4H@AlCfUUm8Urm_hW#Phb{jEX2(3cia%&gv6Wwr!a1m}ws)rZ2!77i8`H`PZJ zmlRsMyn6NWvZ~^0zX+UH9cpZ@Y6<#5QKeRuCB?x`damS5P+Q8b-{@}yx-2rgy1t1c zE#cy7)TW@iuBye1v{cncfberR|7s9sL!tN|7ST9mtM-8!YquCs635S}h8tNmP%(i?ky|6me8eu&{4Pk#h zVoe*Af(_x~;cD463W-M5<S{AgsRF~SXxdN@W2_E_TN{JKR;}2=Emci5Mx-7{)t{>( z!HxB3Pm_3L+%;CAr(LsTi8(tj-?*lvc<~Z*R^F_lttD#)zXlJOY5YR+yz=-hSf+W5-$^=h>HS!mxs4-| ze{fYL>p^QL`+83MRl?C)N(b#H39r{=M4MPzNx-1>q_|K{du@0qW`$`syr{yod>fwZ zs6&wruh*8`}n+>nm{KUWAhPTi6J8gKqW+wiJZFt&a=&;L%r#*uXyKQ*ACMVj{ zHazW9bm+F>X+NUFejA?lC_41o@b*2&0UMt713L8C@U#!oA!ftVI$wtY8=m$$It<$I zUX3Iu>j&ynQ*8Jw8~y?tKF5ZqwY&}!ZTJf{63}bI)4ofGX*T>t8VQ(h!|VMUk&A5j zOKkjs_M=&`uV7>a+V^JdF^r)(A6(@%hAujWYxem*#3)@yIpTdo2p7FaX&R#OUQQpT zG!4yoH>cmEG!4o4Zce{UX&Q?0hdKQVO4IO9HqNCeFLS(Q+hY2S5umXRQzF1UrT8k zO7ZQSUQB5kLh;RZ$*9dIwj<|<;FZ=w>gnOD&n*aGh5BLMo7Xr_}cXhzk8;I@;y!6jj^V`<2_~gCTN`r9y7SbA7mL z2L7Smwej1KCEkWh?RFAThDuHgMDI8dh_?0yI{bh=u}6;&4fXhsk`D35aOv9A~P>1;OEuK?HXKk8!U14`GP*mCB)0$QMRE4gMW%TF^&C-u{w*dP8rG_=qE zS0nxkWZQUxaQ@r;f9Gl>Tp@plmcc3e_ZUN8kK<8JL-kh@uKHZYl6WainY)kG&W+=_s zP`9mc(AiJ<|Jpv_qK-Y8sxQ@k272*`>t9NpkrnQVJwn<>5A;t^xZPwRAA}GN7vf{1 z-7b9G<-bK0xO*?Pjr3Z0i=5~k$D^%-?ROk^wO(@f9fLzda7UA$+ffEHbs_ak00!%# z9R>@9*#*59|y)-{%Rq_QQ+sGuE{G z2VL!V435lxh#LE~cK>lCkGoXz*&hEfTCb3-0lTaLmUS#ymf7wfK<0sjtYb(X%d})2 zrL_ymQhrVJf{%h;N0Vi(BLCHXM=T-hD3V7d`K*{9P0Wo#l@lY^!pN!(sRP)XtRn~Z z9gNa-Ap0q{`k*rYKtLH^gm53vv-$$LzB&lng|>e<5Utn=bM91~kU4jJgr?~9cVmR1 zUovV1wN7V6H;URRsDElMbc7dFoO|(86lXT^AJ2=Oy; zViusW1_52vTM7M$Li0?OA4T^gBCRrs_$5VLSi*xlGMQBYo!*Hr4|s&Yjpxc@?2m-L^9 z>(c(SaP{}+;<~JVG_Ke5XW|;zj@c74kTt^uAoywcqTOf)8fV(+jQIc+)_$mC1z3JV zhM&*N4mD*KgQdgY{S38t^rcImkM4(mfcU*?Df_hYUcbhk0$l;(pC+}*JICzaSz6f- zlN}{X!A)n~H4ax};~1*#T_bQcHcjdJ)M}R9@7r2$3ABiR78XSlKCPOt`wD+wWJ=e> zg?fD5WzR5+i*1datsjZFOR=qqi~{qj?5(e%2`Sd<`FQP7HV-C> zF72)!!EP3-k}bPX4a`9p@STP3M8yNu`x28Ss=d&Jl9g8JZw}aM)kvkc)1oe&-S!!# zl(En))Bg%(VN9nzs-OW(%-d*+Li6>+KBl&l_;~os_=O~&+L$V#-S#1D(Ww%@X{1=ad>RqK&Swf5Q7d+XM{ z*6;ttR_iS!?i&zy>b1r;q`*tU(nTOnZ4PrfCmcnpWF4ZMO|&DzJmlC z3;pK}%zOR$wy85f#KhXVn>yJOG&!oZbx-UwkPWXH(6eOwQJxdwZu+2HUx$(8J7@;& z!wAOStryXl@*kbhKI%V)RVBNHL3Rtr*ex70Hl1s83t#`U&92i)H=c5jvCkPy<#Pt8 z7|Ul2L?+vO#&Wx~w~^?-0IN~6^<107xWvx$3=;6$%7+cG%NVd+#sIsF<5WW)ZQ5mg z9&=K{WgPFQ7*sAJ*5N0;ony%1G9Eo@tMLMquU&>@$GmQ@HoFWigIvZy6g!3$iZg}F zh*4|ql}!f4`w&+yLsvq(jK^?SFyS(eCA$odUB?HI5SJl!MLm_vpap=ly6iFrl3d1< z{kAG!L*m3`oJy6CvCEK(r*s)y>))sa9>?E9T)7NgYwa?g!n~Jo8OM@c#_4u7A4Wo4 zhOO4@GETA9UGLdyeI1DtmvM@%c->-cU@M?;ACJf*_O8i04=$dD;{yLsWEAh^<0~+pu=S)-wfT;rRjpYcuN{mR zkqgI)&6;^H!)ggP+O9x{$9~uvLR65mPc1ZCNAdDH{sCmFLSpQHAy2pMn^=ZH-dal@ zlvX}IRfCbbmn&9R@7C^(=j%9@g?EipSt%;_1@GWO``fq%dJNH>c$9ckQi(j5rYrF> zT?$H^tm9Nnt|}2|DR7J`P~DG|-2mNtB6J}7Y=G|}{n$sKW2;K_#9UBFFY61i43hPF zd>k*ezDnHGS%&Slv!B9(V=IxVC5v9j-g;0iGw!2~l^I7NofY?CPT6d=o;OCw6`RRj zw;q+;#QhW8KIEO+W=j3;PsHYDIWv%D%Uju7c2X5O{of+`f3TQ}Zy~+ilD!w1pl4?( zCTP}5%_{$aH9w{q-m66SU5-*aS8NY-Zf#~;^u%sc^WJunTcyh7GJeeQuQHpq6>rk7 z!V2D&|NAuab^0Ht{JBc6$B};6T4qgWK`R~}R_8rfnQ@&Tro8XGn~*afS!{KFj_69C zisv9ZvGeXlrWAGlG4?RdI%COi-KYB!CJ>TCavN2-T*mVpSGVkv>U=G>FSh(YQ8xQ6 z$XN!5er(;J*>{Z#k!2^+)a7ke~0y8IeuiZ)%j0ESNc@^39@@F*$0s+ zMV+6=V&7TkUg%sZ?fezYAS8$6Zc^oP8NcTESD7uT&ev1-PvqYNn}{#i+ZrJ+arwT3k%Osj9*a=CftzR=bZ7 zS1JxR?PMDV+qW^f0NorBtAK#EdQa@%*e0l4PizELUnqC)CI5w`CGTbbXZPnO|549b zboXNoCaqmC;BG7+cgY>M{aA)Rhw_Zrx1l;z`5CgrE~aYWj=zkW?~taQ0kY9E#2fhd z{Xn!gimf2s4vFDPPcfL8oyNDgW-kB(D>0^k`X$}^C}{+QXOLK2=HyCKnFD7I|orBiil64n23-YXQ^8eV)#Bbpf4vd|Aj~aOR!`^ zZ6&-y3-9n{;r45eDyTH8f4rk^K~`S%7%3XEv*=MIYYlB*3S9bpAi6*B{9uOG%CZwx z47EVH&mYdfEpO{yUy_CB=0a)<^o*d@sH}U3Wz4FV4=yJSevme|G+l} z)Kcv>^cem4jn{5Bvuis*!{v=XaGOumZEhKx9>hTbuhj#h6(~8W7yQUlbvUCcc_HrX zuzD+`_pojcaX#z*QW1*Sk51MN_4hw>GwxVfx0ZiEwTNOhNYBeU=m`h+_e%1xQ9Qfg z=NDug+@U~aeofC3;Xmc++I%UU8iF`G$KX~AJ$QRljI@aCAgdOg=_AhcJSRJv$)qTm z8kEgN?~tQpJR$MNs0%?@Pi&8_C9!g+<}9iqo+Kg*(G94Gwmzg95a=u=k&Wb4{S{a$ zS(SxZF%aeM4ol$4xYWxA=$`g|2}Xu^;@N%G+C{dzOAWA_F`?O-u0} zFzcv~ZWIdImqT%VXWEf_DtDojeH2@8BXSmtCVO?D>nW{1;ejoA)My;;**>;2d6PT8 z>eKYdb$FltG~qR9+!i4xtbz9iq7`UDGFVTnn0vGJ5d0e~=*_^T)O@}0UHm9MG6pH` zR_7jM<8sy}=C!h#oW!`Gc_8uRV-(xe2)K}kM+N7dMa)#+-#Gbj8sZOFDwRCDC`E zqrM%Rh*^{@vGuLU#r)2|p;$TYp!ATia=!L8|p24N0mjy(tpOj7@lp`z0p0z6_#oLE4(j zNCE~O23{wMQttYfBmku)F@eZ^19e-09>pWIkM&cX>Tw?YCmF3jVJ2&?mR5GoVX8&N zMuo7brAQKGTcX5d36y#oQw4==TN##JX_1kW)Ws6D8(y;oiE?bcO;sIFA2A`P){l0S zilRMCFKpN?9tOS4AM2l|mw|L|-ZsjP@D#

ph~#er7Ahc`Boa$B8xOQsB|CpMX-a z{@IWd%l;kpRdj1S@8xJuY&t=%9{DStGw7{|*pqK?M;+$)hY#OJQ4C(w&?8u^P94-* zpz%<%*&MBC89LE=$N|Mrt~Om#111(ya#xv{UjwscpnYmUe(7!C@MhX*aYPsQaZU8% z$SH@1<+)@+c4vJgmfl{ZH+pv9k;z`2k*5*re;vl!J+=B3xxekHrC_}>7l<}YJx~(8 zed=JKbH*Fvym))*%5DPDnyGyyAjV3fk*VleH%-Occ1Md!F8#-%=s%029|oTPho?CD zYV4P&Q()_#Bj*;pMenHq7V19qgdx4Idre*~?8m8uybkt0p zSb~_hq$4tQT1m(4Q}b!U#>;Ye4Ub+vr6-NRWUbvpTSgb&E$2|;Usi6cF1{vEZY=xE zQe)JpQOylin}RLgRbIT!AD#k)4Y|gSG`!wLUhiVBcZt`#)a&(oz017bYrNio;RVTv zw6-*P7kCZ->eZ`OFYw~00l|%4{EovLs`ai5wKmmEfdZRCtzP_e=8}lFG1M0HM(U~} z-sbvXb^fB{5TsNF9E=b4l3S6cTcMlVT1xhawP^UQTVOWkXd9tzsxF4TdB2 zO;wTlP?NU|S+zp=iNgAz$bk+)F9f!DLmN;Ee$V0!wRpp!M*Iw?zG?l{L=&ZJLafCU zqoS!LSRGp5gdgzKa8)9knjx>asSQ75sZlylfgwxq3mGy%b0{3H$B&P^D^Tt50>es^ z8DO-}1RL<%9T+6!U5sDU+(JJ9YF&@_Z>e>l1ll1|=Ur5smzQUZ@;BipOhq4A=9va$>c+KlWLu;@$|2=#F{Z2Y|U}$I%@GF?v zvoI!m0jB}J12_o&j{zrwe+1^P&48N$cLBCxlHCuu126`75HJh(u%3Wt$OqgDSPFRk zp`oE>z&ioA1AZHx;%UGM@ZJXi>i`D<58!Tu7kcc+O-&zQ4L0DFfQ17?L)!pv2i!$? zJk0fCxP2MW2e=Ec5|AD-Zv*@Ua2H@LZdUCF+zv>?b2nfX?ri@8a2ntdzyRPH+{kMN ztOeW-cpu5Ri$OVa?S0|o%+0@54cYXG+a?f~2cI0DO`1Ax;24Lr~)2lN6y0O$k!8DJ&g zQNYcB<31T0dKmCrz;3|H0Q&%!0@4qWKL_XqYyk8DZU(Fb{5s%fz>th2D6O`zqixz+->`K=*Oz4R}7_HozHxy8v4O_XGYAFb23EFo1q^0I(9U1{Znj?H*6a#e#^Z1pjxU9J<4l z@sngecXOh=36RqZzK_6X$#TEX45V)%=-)jsG&I>x|7;?EIp~jo9>>tXns&l5tokGsJtXDR4~2Zx5rlISa~`tF7NI?&1YWW4XFZ*7Jp z=U&L!4WBdsA7+)~>Gu!=>G2ron{j9In|6IY53sUSpXs0e>A5$fJ=6V<1m9lB zi-GU^;LEtzCXe)bDAC^Zo9u<~wU?n>OZT9X!}SM!8R(Pj^om3|(?R!vzJ&Dtk*%CN z6%S=2Imf_vBlyM=Lbs=FyiI`pt_A%TJKbH&LMVSB=nsH?shwVv(6bzLdN%B}({D`B zBSKGA50bwF^lu=4D*9B=CxE^K^a$b^KepAA+UMp(IS0Yl2flRmq}SAb1A4l8oQpZ` z4bY41^$08Zq{oBEKLGlB)UJDz_3-p1+O-C9p1_lgEA4VNCiL6_dN1gy>Pz-`1oU5k zUTDuBO61=QI=#tpk)2+dpdSJKkD#ZkM+WBPT-0baF~S ze+u-KPB}}HYSM?h~uJmaXXUG>! zof=k5zZdlBpf9%5??~wV80afOPiMDZfnElBfjz%+(=7ie=rt$EKPJmCZU#M_U8jRy z4*FQTe4F1W0evy(>DsLU^o1v&-wXQO6UcuI^r@ipnnl}hRl+{M0(~OrXWR8FPtcEo zo(uX6JH0MJA9I>vOa?vOygnWDb3sp4Kk5gh-E9FOL?Gvz;G1UG zL*`}bCp$oY1az;RZu6f{3O!vrybAjL$bX(a|C&Vk$3VXi^mO?rpaa|idcd9^b)ad4 z^eY7YJD|^Z(8(ncy&Uu|&~xqdl0^9t(A$5V-XHD&{bA7g_rbcIOI3bq`zJx)2>F;+ ztw8qw74Xf#M+tlFeeN%gs2%HTANgfZXU4s7fmRqAa%E2hV*cM5DJS+~YCkX5Qm5iZlQ2Hd-bl`Jn4D*W(`JO?T!)9%G+Jah`d8<{z@a`O_@p zXRd(}zs@p_WGPDZRKWXOnH?jIU9QYeMi~9BOzddB?autxNaGcE=H8J;yC?I5k;a3b z%s-4Y4tX-amSsGUk@>|eqbDQt`&q`v8JVwV8QU{6U(7OI$;=$gGVU3X`6rY!BJ7MYu zn+oNcQ|+^SnPuu{v_N?-a!tAbEqS+VUccM*jtdjlyJV$@JbvsOXtl$EvR#w8(paa( zc+PfZ*JOUt<+_`Sf6z55oM6_O{y%}G6MU>`Y@&kslGf^LBRJuWSX)uh_@E~{MYe)!L! z5Jxgp8tucOIZLH6g>fhnI))MlUW+4!Z77F{0`0%uCzMnRA6%;CBT+C2*g>*9E>S@FRgE#`#!~b@Vf$^61Y#`>jK{u_>sU7T;kR#E2n zme7asF7+1X;R`9=8}UJw8HMKT8S8LIv%1dP5^Spv)6LF;IkV=^o4uAku`(>iu4*#M)awa}A`3*5=Uf#^` zrf^NLIXn|z6g2UL!C*t}O#T8?UYRkoHQX{Y+)_QW8DD3rS|1G0TwGCHvUKKp`d-b9 zS$PHc`pit|Kwl5^E-LflLp8JU0UX!nFLALnrn6jk;_CW2E)*V=ay6_1&h5%tPryC$ z3IZ7;^9W>(yp(ApsA_IErV%)ijLiC`2xytDNM&S=bh}10BbK=a7uVTa>3W)HyST^^ zpF!H74}rN26ERWcMZzNJmf0li+kg|vp3^AP>sK>|^~g{qXS)6loNJ3qXFe>=>)wzx z!u4aK-Rz<-3sBI4DgHYCNAAYORlf|^`IO8-A+CC&P_vKxJ}xTx9mKN!NXc8{xSoc8 zV^qE2x~&kAwd3auhh zbodMvMT-;~p0Nu?UopCP{MBRJm@GzIY!r__xu`R(Y?d$&SC3HwFBwBB_()`) z%Yhu>LJ=b~Eg5bonw8K5rX2060B#g;SxP%%8J&%~kalB~lBc^|#p6lT*eTFB`wZ75 zV3znxT-j#BEVOY{9)-b?`%{a}iork!t*!3+o_3dOlIL?Dcyb@| zgkJaLW<@-qg`V76Pv~0D*o8O#pyz(~h0ugFQ}>ZE2M?h-8*{K!r+dg6Pf!ch>jGM@ zQ_zDcs*=N&?WgRb@R_^y-qxmY{rV<6nIbn5t_!t9QlW_G@WNI``tF;-vWScP-jY+D zae_^4%|=zrdVJtaeejFCH+yQEy-miLRV^)5o75M<4Eh)zvJj`>@u@Yt44wgq%Z!lx zHX}!j^6&~%%Vv|FMX#;T1#z{bg@91M=ALDY8Xod4g-1NO^uPNbw(aO zp{HP-j-e9-Tbhl$rcfl9hwrh?h*YhY6n|+~5!N@g=B;b3$H#l?Ym7Wf)m4S-jJ%pn zO%SbMq(xEM@YO%8Q<4%UXf45pD#{?S=7xxo$DJn+ACW_xJ3(GcsHQ4XW#k3x%-WW! z#-LeOgSw$GS-E| zMjjr{HU=>g@@j(XTGt~pJwFCsC7WBUQQ)0 zdf%ln1&G-5N8COp(K7}L6BV$o&io5OvFE?n?PFegRzgAhQI*1^sv`nv^w1Qq_22FG zA%*8Gf+&>=QyCO68FSEbRw0GQsUe-;$nYgG6sZ*JNKu_%(8gyGp}nKdulJWlQhisELI5^v{9$4BN>hkq|u#zTr1e#4L==y6u4aup{UQ?&_ zezRNhZ>G!$qz>t+^(Pz!a&=TyonP;7eX`*X5EFtfU+35LC%0_RulLK_B){HYQ+}+~ ztnzh!nhwY&SO%$(>l3H|<*^6d?i#lP5qtg|$)A&}I4X6;B!l+)8h*=>UoVB4$Eyru zrb$LeevSPOBKGq2{gK;gFM%Lxs06M~{dv_5yjD|h9=1#VZJHnwwEeZf|3rk!*KGQ` z@%nr6J2XKuILm+Dk$<<($DF$rFpgoNYY)!ye+iWIK|rTlycUgsAv78UFqG`vXi zTMQD}Eg35v1ZREdT?sAA&YH7YrD)@B4^G~tY4V38|18J&bLOY{&55J({&%@5b+&`( zNE)9@lmAs&b<$hQ_TWewH>b%zc)iNC#-15*-G4NCgXAC9eth%8FwSrksFNCgLGo*P z8V04{e`S9)OJXN_pow1pCF3&; zy{=2fXJVb^v!gifA&;onVK%AcY^g6?n?Vj5DnH(oXc?R1-Z9Cgab-yjE#PaomGdzMi-2L=R3((eqI<9$VbfN;`_< z9-Ks?=MOv4gQxp?UP#8%Ev4bXV@w{71jfUsu?#194DWCx^G`{GzaS0%!Zi4)Y48`N z!CyQKPkti9czlLu-l`SXEy;dB{i zKUoGmmD@euhgc%qh$!I)9QY=|JD*E#0p5lFu)VAjvBcc>6^;+@x6c4i^7Zph%0pov z{#_~h|2x2^s@GqbKiAkP_M!HmKzG_npB)Z;CIV08et)8m`L5(E-rN_we(rjP;A>e< zuCeV(#jpMR*MLu@PdfX5o8^o*9(IiP-HadJE>wIf`Sk9ki%vUojMJBa$E-ZeKm1Yf zdi_mY6h2}(!~Fwpq#E87fx;IFz5(ZO>Z|vYirX+=5;<9gK1QL1IQ&uY-<|2>w8nd|VWM)E&Q*B59h)xrNus~@ zq^ksfbiU&EvNXf^yx@-)DZG{+6MVOnyF~cu1reQBPz=sWgTEYj($lH`a^O?h(-i(+ z%=WQdJ-&7b{;4?%zmlnjaY*pv@)iCT!PAFysoaC-D*V3*{zAbY7JgmdYk?n!8`OHf z&Jq4n#!JEmZcc;Wng;(p;7Ol8=_mB=C53*$-!68(OrZ@gZj7X|&(*+_oD6CAi-doZ z;C~_Y)pvo@cin$p2VUnD(F_LC;77rsalJ0_F`r%+&k+1SCMvv^IY;m} zNx9no^ksXJvs3VAvoyoFSMV3exF{6-Uf{J%K`|JKg)`xu=M&L8a3ufBlYGplR}u?= z_cA8=a=pk&#^U`q;B)b(*KZgm9KI*=@09+j{mH>JatdMaRQfLmp7eZ7^bCmn8wGzn z-^ZAU;J+aFl01di{9h6Lox*>q@c#sOuf*-(CE#;X`0ckv&KU70V0c=AsQK3mex>x=3q;OCg1=4LSKDnS?o+0+&nn<^-RIywLZwJh;Knrk zx23^a-dJZq0fNuKQr0K3VvR+Jsn#Ml7IW9 z3QzC+QrT=LBA;CAuJib_o zF~;F0AL;3|&lfg z;eS%<`*R`wO7Kl$XRXgWf^QQ$==yrcD?NAR`&fckzjUMECrf*2f8H*5=eqPU;Hlj1aXwPd3daO*AtW;HjMRD-08e^m zh~0EQ|DNCnF7&Yk{d}!EjhvT(r}@q~u74+Toa>N(q>*#hnM$8*@dH-B0-oxdGhXS# zO5w6d@H(yGT9Na%)Jv~VcBJ8dRQR3qX3<%x?N*uwe>3o8Pp2RLmf)M``dCGJo=f4C zG;-cyJe=ZLKIWs}j8S-x@t9p0g->E_>CV3p=6@cXP)>^ZBP9^5xrVKuN2_b zqH3JhXge9wz%h(f4eGVS>Xt}2(u$w^(>pEKE?I4s6ql9b=*YwYlV+sRtfnI-!-hUK z(uOk4nvl7^A+!zxYw&CBF#kH64r^=(MuIhYbMp&vo?a>@F5h|`CepIWQ13g`v^F+w zLKa&p`OO((r8D;Os+*hne8Q4~`TRrs4fWxmSsiM^3kR*$bjV^^q@)P1-Gulp3-gA; z0+U|IiO}heFit&w&weZae%{2XemGK7<-@BRW_~?RX1u0k)#61Z$kMvbEH=#><~MFC z4^=edP{%SlY4V1W0tm-(gM4UaRduAkEoe5k`RO!5Cl+r&B)uWDZ1tiQe$&5lDILxoX+6GCvMLT(r2vPaLGKWh#1e$cErI(F}9xXICy-QM|;UH#_9DBYo_p&&Q__ zs*?wyxuYT{I6%>v6DNYIV>eR}=wL-B8lq>JW^0pW?jTN>3^i{utLUuD+4O|~vmWo? zRH5e-m(HPd*k3lwEW-(#ICis~PTRzpo2zj;r*-INq+l)|K1zA?`JJFkX8(Mv0~D9# zo5eUJ632J?{Y%TM8wwye(LZXN&D!RCGu&L=Fi*a$P)tXC);6PXKMv0budBnAer$|_P-uhsq9N&7;mQFoV^+-PHNYz7{Ph+M-Zyl!Q!-v&Dw8N?* z&0ka>F2@&WR=~fO%I8}A_4PcB;rL;kgnJ6LF4E(d4&K!rF`W-b|4HzisG}9kMnl(N zIf7RMQ3ro1Z2I3j54qZ578)nXJ&@eOFec>=mB%>I$=d&obC7WYv7@-;ABHHSpU^r5 zu#ROLWtaau=T|!vqw}6mU>-E*sxt9C3HL^`p2PPkJHqYoRE})uE1VD0OzL4^ofJ;S z*9%O?q2`V?O(6*{UM&;ZD)Ps3TY~IOTY|Otx)RPWr)fh?7OQyB-!Ln`ranxc9MS`T z217WVR_t0ZYnfFwH7&t#I8>`AV5|vfz|)91>Bud}PwLqP+_PET6Rlv9mnr0Au7wqO z6@$Df=1eR@twoP%&6?LPZKmanHF>sKlP4B7Wmu13WiwyeCTu@m-O)8nG=^TPQa6D+ zLdS+ifytew_hNQL^_iQb#w4Xg`v)Y%K1>88iVr)~(MHroH6{e%- z|JBMS1{bd#c#W1=71A>L6fCAIqG~=jSQXy1sF-WZ)1_W#)9g5GWk+YrtM#r7VLoSF z)#xP49-6W-^O@z%+GT}KZLyJDX=!gbZ)?dcBb^LP)jw$i6(w9|>2jXjPMRgTO=+Q# zqD_@SE%PcLS739E|H9718q@#Nor#IJ_!Bz?tJP$BM+@hhOZ1*toY=K$;gZx}Wthwo zFUiYB=`#)C^h>PO)P*n+U{4*w{sv!|Q|m21mgq3zy5ce{UFVpz{Bn*3EQzr>Y^=H^ zXtM9Fx2=Soo5JB8mD`6G$LJC%Ybnb!doAsqN)H3I2~$FfhHq6*yiv99Qdxwxm0Z1C zdMy^Jt5Z)=n3%*TQ?F)!I(!Zeb(N5a!)Xh(@k-ym)KUfw3gT> zA8wfDX^^2ku|zCx#GKFjT5RWxX1P6r4pIT7Xt7CE6nP;VD&9#L$Jx;h)IU{ zrC%1nx8rvyw5$#*$4$=bMDqsMFP%S1y%r&lZJ7MqEVKvht6Fg5fr{Ww05mtT zimtA6Y|~(=d8SDpUfh5UYmIWx!2M}o{dK|h_|0`H17KNV+Z;PraYZ*k(HQIl0x7?$?n!w{8HWHh=1caPcWF zge#ixnb;b0buir87=*G*mYB2i@@YKtq8786bLY(sazY+V)T6l-Kcznu+TIj^{h}y@!};i1<-v9gYN>fei6FqoMP@`!PsI8jqkmlXhJJQ agQ*)%^Gvl2EQ?q(+R5iLw71%G8UF`gqZph3 literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp index e365e5b..6e8a8e0 100644 --- a/main.cpp +++ b/main.cpp @@ -2,591 +2,10 @@ #include #include #include - +#include "GameEngine.h" using namespace std; -// class piece -// { - // char color; //w for white, b for white, e for empty - // int xpos; - // int ypos; - - // public: - - // piece(int x, int y) - // { - // xpos = x; - // ypos = y; - // } - - // void setColor(char kolor) - // { - // color = kolor; - // } - - // char getColor() - // { - // return color; - // } -// }; - - -string myToUpper(string input) -{ - string output; - - for (int i = 0 ; i < input.size(); ++i) - { - int numeric; - - if ((input[i] - 0 >= 97) && (input[i] - 0 <= 122)) - { - numeric = input[i] - 32; - output.push_back((char)numeric);// = 'Q';//(char) numeric; - } - else output.push_back(input[i]); - } - - for (int i = 0; i < output.size(); ++i) - { - cout< 8 || row < 0 || kolumn > 8 || kolumn < 0) - { - cout<<"ERROR: index out of bound!"< 8 || row < 0 || kolumn > 8 || kolumn < 0) - { - cout<<"ERROR: index out of bound!"<= 0) && (r+reflector <= 7) && (c+1 <= 7) ) return true; - else return false; - } - - else if (moveType == "LEFT") - { - if (boardArray[r+reflector][c-1] != pieceToMove && (r+reflector >= 0) && (r+reflector <= 7) && (c+1 >= 0) ) return true; - else return false; - } - - else return false; - } - } - - - - - vector viewPossibleMoves() - { - vector output; - - for (int r = 0; r < 8; ++r) - { - for (int c = 0; c < 8; ++c) - { - if (boardArray[r][c] == turn) - { - if (isThisMovePossible(r,c,"FWD")) - { - moves temp(8-r,intToCharColumn(c+1),"FWD"); - output.push_back(temp); - } - - if (isThisMovePossible(r,c,"LEFT")) - { - moves temp(8-r,intToCharColumn(c+1),"LEFT"); - output.push_back(temp); - } - - if (isThisMovePossible(r,c,"RIGHT")) - { - moves temp(8-r,intToCharColumn(c+1),"RIGHT"); - output.push_back(temp); - } - - } - } - } - - return output; - } - - - void easyAI() - { - - //1) see all possible movements - - vector listOfMoves = viewPossibleMoves(); - - //2) pick a movement - - srand(time(NULL)); - int randomChoice = rand() % (listOfMoves.size()-1) - 0; // choose a move betwen listOfMoves[0] to last element - - //3) execute movement - - int temp = randomChoice; - - move(listOfMoves[randomChoice]); - - //cout<<"\n\nMove executed by AI: "< input) -{ - cout<<"\n\nList of possible Moves:"<