From 52185e8f15bdcd143c491864dfae73a565d298d9 Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 17 Jul 2020 15:54:43 +0200 Subject: [PATCH] changing branches --- TicTacToe - MinMax/src/Board.java | 2 +- TicTacToe - MinMax/src/Game.java | 78 ++++-------------- .../TicTacToe - MinMax/Board$2.class | Bin 1705 -> 1715 bytes out/production/TicTacToe - MinMax/Game.class | Bin 3503 -> 3734 bytes 4 files changed, 15 insertions(+), 65 deletions(-) diff --git a/TicTacToe - MinMax/src/Board.java b/TicTacToe - MinMax/src/Board.java index e7746ad..264e8fb 100644 --- a/TicTacToe - MinMax/src/Board.java +++ b/TicTacToe - MinMax/src/Board.java @@ -104,7 +104,7 @@ public class Board extends JPanel implements ActionListener { public void run() { //check if game state evaluation needs to be done if (isChanged(oldPlayfield)) { - gameWon = game.checkWin(); + gameWon = game.checkWin(game.getPlayfield()); //repaint board if not won if (!gameWon) { repaint(); diff --git a/TicTacToe - MinMax/src/Game.java b/TicTacToe - MinMax/src/Game.java index 289ecbb..bfc302b 100644 --- a/TicTacToe - MinMax/src/Game.java +++ b/TicTacToe - MinMax/src/Game.java @@ -1,4 +1,5 @@ import javax.swing.*; +import java.util.Arrays; public class Game { @@ -24,71 +25,20 @@ public class Game { } public void computersTurn(){ - place(findBestMove(playfield), -1); + } - private int minmax(int[] board, int depth, boolean isMaximizing){ - int score = getBoardValue(); - - if (boardValue == 10 || boardValue == -10){ - return score; - } - - if (emptyTiles() == 0){ - return 0; - } - - if (isMaximizing){ - int best = -1000; - for (int i = 0; i < board.length; i++){ - if (board[i] == 0){ - board[i] = 1; - best = Math.max(score, minmax(board, depth + 1, false)) - depth; - board[i] = 0; - } - } - return best; - } else { - int best = 1000; - for (int i = 0; i < board.length; i++){ - if (board[i] == 0){ - board[i] = -1; - best = Math.min(score, minmax(board, depth + 1, true)) + depth; - board[i] = 0; - } - } - return best; - } - } - - private int findBestMove(int[] board){ - int bestVal = -1000; - int index = -1; - - for (int i = 0; i < board.length; i++){ - if (board[i] == 0){ - board[i] = 1; - int moveVal = minmax(board, 0, false); - board[i] = 0; - if (moveVal > bestVal){ - index = i; - bestVal = moveVal; - } - } - } - return index; - } - - public boolean checkWin() { + public boolean checkWin(int[] board) { //only check if winning is possible if (emptyTiles() < 5) { + System.out.println(boardValue); for (int i = 0; i < 3; i++) { //horizontal - if ((playfield[i] == playfield[i + 3] && playfield[i] != 0) && (playfield[i] == playfield[i + 6])) { + if ((board[i] == board[i + 3] && board[i] != 0) && (board[i] == board[i + 6])) { winningX1 = 75; winningX2 = 825; winningY1 = winningY2 = i * 300 + 150; - if (playfield[i] == 1){ + if (board[i] == 1){ boardValue = 10; } else { boardValue = -10; @@ -96,11 +46,11 @@ public class Game { return true; } //vertical - else if ((playfield[i * 3] == playfield[i * 3 + 1] && playfield[i * 3] != 0) && (playfield[i * 3] == playfield[i * 3 + 2])) { + else if ((board[i * 3] == board[i * 3 + 1] && board[i * 3] != 0) && (board[i * 3] == board[i * 3 + 2])) { winningY1 = 75; winningY2 = 825; winningX1 = winningX2 = i * 300 + 150; - if (playfield[i * 3] == 1){ + if (board[i * 3] == 1){ boardValue = 10; } else { boardValue = -10; @@ -109,19 +59,19 @@ public class Game { } } //diagonal - if ((playfield[2] == playfield[4] && playfield[2] != 0) && (playfield[2] == playfield[6])){ + if ((board[2] == board[4] && board[2] != 0) && (board[2] == board[6])){ winningX2 = winningY1 = 75; winningX1 = winningY2 = 825; - if (playfield[2] == 1){ + if (board[2] == 1){ boardValue = 10; } else { boardValue = -10; } return true; - } else if ((playfield[0] == playfield[4] && playfield[0] != 0) && (playfield[0] == playfield[8])){ + } else if ((board[0] == board[4] && board[0] != 0) && (board[0] == board[8])){ winningX1 = winningY1 = 75; winningX2 = winningY2 = 825; - if (playfield[0] == 1){ + if (board[0] == 1){ boardValue = 10; } else { boardValue = -10; @@ -175,8 +125,8 @@ public class Game { return winningY2; } - public int getBoardValue() { - checkWin(); + public int getBoardValue(int[] board) { + checkWin(board); return boardValue; } diff --git a/out/production/TicTacToe - MinMax/Board$2.class b/out/production/TicTacToe - MinMax/Board$2.class index 53920d2df070356a903d4d23bffce63d94429d89..8dd6fb0b3a77fafcfc8a9bfb8ef16db50bb6b9b9 100644 GIT binary patch delta 732 zcmYk3%TE(g6vltI1zU$HB9LMNK@ikZkop#RsHrc&`lM2=ifQTuhtg@C77#JwBT=Iv zF_{%zxD-uHG@(qo)IDoWT={pX3-3^ZF7CbOe)%3b=X~%j``-MpT7^H-#154<`~q+C zu9i&2bYnBs>{QvsZh>b!k=9}vLm=Xc#5+`is1i4|Y(h8k3SI2+P^;2S$O?#ZyMZOl15W)6q@LotEY z=na%mM!lqg^#Xk~7&ZIjYDWYN#cz~sLMlFKCW4_@+F&hSNfXTiIclbRBf-qIkQo^f z6g7GWyA4`t)2WcOv)Sqt4Rsxot!xt*W;Bt`_(Ksh^|!1FEn|mdr!^s}ig!!)u-AGi zJSF?suX8|h(E1{ps*gyHa!jx)6*0|3zKYM==j4RtbgV1&aZ;y8a*ESdhhxaoD><7# zt&ucSX1XgLOpX|w$FFli(nr7b-qBEWQBZ4r*J_;x0}M(oS-&0C?jgw)Jc80t%6~H% z^9RFbY_45f662FN)PS!|^N767F%t_6{Kv=%%W?HoSVhj(`*x1 zk-a=k_3}cqxw^uSd_eG!*St|p&bygFmo+vHE)XT-k@sT7*O3`VBZjs@( zO3m<;J7l@bbMEnq`%3JAlABS)}!LKKT5Tk0{{R3 diff --git a/out/production/TicTacToe - MinMax/Game.class b/out/production/TicTacToe - MinMax/Game.class index 183a47e614ba8e66427e35eba674b169cbc47b21..5191e1de44f2e0ea9e8fa19b51a12e8aee3c57b7 100644 GIT binary patch literal 3734 zcmaJ^{ZCuh8GerMhi$k}o8TlQu#u0pa7`g0o!caov>~N6!GQ!y5|VCQ%njV&4{93% zZ8Jq3T{TVWq@}AwrD-(UR#nQRwHmD5x~$qJMXD-I+Fwy=zvqXpY4)6R9rH133i7%4 z^?9H3zR&x-?{U8P_D^>J9K-b*1fT_>TQFb>M6NmuPFKdsO?M4VUUkzY0kg-;d8J+f zt*w15j1a;>)L5v6C7{3HWL<%9X}*vfb!Oe1fEbs1>McBi2)~)jI7?SNH!~#=xRjJ% zHCWhzMuD2iyi=GOb29Tp5XlgB3dBaejN9rJTb)e7b*7eDOA@pOyU`TH9t(TXEU-() zxY$*^<}u2Fp}CTm&kZ{{qBIp}^4F5Nl3U0*nUq^BI@9hc&&lMc1=`yNRc_9;QdeI- zJD1P7xzcgpwkhA^?PE0z@;es3i&g>aikF)@=@v_=`~nX!+AbyAlXAm;3kPtJ7ABZh z-z1a1>thxkm#%fwZs}wtMd{OS!A6{!yV<$Yl1#OzSS2k_pfiXr3x{xcOA$tviX}J8 zUHN&IBIbwd<-3LpUamA!B1zffH8_GNgZQ3>1fCMuq0-#CM<6&SJu)ni-c}Cus6_!B zXMwX`F6%6E53@^-%lw`}ZxAOeJd5W9>Nhlza!NA{M(sA*n6cX1XW^9Gs1c|J{dggW zh=muCBt7X2i56&VYyV%Wr5a9K7?f%Vvzj>;^ul3jJ!4^Li?v%?&ssRQ*?Lh~M=iXx z#d=tBecr+aToeeUXWaDcd5?*!;*FDlzWfwJdSuYcxo76HlWt+unat4AFqls}nK7r} z$@j8RFU@!?lQ}4*PPRgG`JyK!N1GJ4TVSb2N=|w<<;<0R>e3Y0JY`rMWn)m?9#5U5 ziWr1aJ=ZCBPI75^#gwz?WxZFKJk7;)zQ9m|S?Z0wAyBIroKi}nU7{$vL1DTqnjn6y zrw%H2Ap4YAT1B@cPcIwww(<5c-#Wa}lE#AHeipU5$*i}vUt;m3mCX5N+4|bO<@F*( zyJ_=9ep|=mH`GtfkL2eIX}6!EXR#%hol;iV$65tAih}&)#Nbmvjt8}J#Hf`5Q7g-= zR!T#y6a&{NNE=Lkj`Qs-{RP)u_8%c^Z4E&?68@}a4R!J*`jK+H#Lt~{0;ibH0Kz;d ziaOfrahX=jhrrADKHr4w^fLSnX#58pwEuv*y`Asz9Qn{Z)U2-}YU@1j1B69G>=W#g zXK9dU?O}K_&@dX9;ts?ZcnfwBw@IDX>SLDABRYP-9WsrBnBY?Y4xe=dS`1nzE6MiI zPwuL>Z5hToS_13Xw~?b9?m#m$YuS`nefgY#Y=1v5@g>;^a_?O`zK%x|I^m*`nqR?E z5BFAK#`N3vI@;cYq1|p-!MW%+yAy_%Fk@!?&MiC}kC|lS2p4@Qrc2ivE_AH@7#%Tv z9o;eAjyLNQ+B%;81U(6ZTeYEOQ+)8?uQB6xRQswrT;Tu15t(o&x5F_NpZcpLA82KA z`$_fzlJOWnAIGB{#qEfr6CHS(GdgRkTAyEn&or4wmjvN6cX94sg+j>< C}HwV8;Y4Nzh)hcgdQ_{mkpNc zpOis`+XRIL&iN2CvT&OHnKS(GeWjT$yAEB!v)3Diwvrh?cgb% z8t|lIOtxgQ!b!5sNeIue9ucNx5oeYj8qYe0OofvsXb%Wx1`!IPpMOFK;0ZEA7I+W% zTm;UM3wE#Yq>@9o#LLvC6gbtXJ=1L7!e{a3&Umvq(YcC2KCYl&86wJZ%#NI1!+;&t zj;Z|OS2&YYyQ^1bg=SV50`jhKAzwh7DtM^wlR-4Awv8>*tk zwTC#G!r^Nqv=wK-mQngRDekX|qo%F4p_QL=l!28EailhIyfsnF368QJ*1eBC@)B!( znaX#m^jTIr%YQeK!wS1_6?6C)ui(!pu+K{P0t@((82`en_%~j|J-jXgxGuu@p=iJj zu^VrQJ@}D0f@RT*H^l&cEY9LBF^->z3H(${;%zaFpD7*6(c8!lmi@|MDZGd3dEu-#fg0e!*MeU5>1G(8|>1T_giE_`|mxAjg=0D{1WUEQ1zmDAYo`4?_q! z3~0)cHUB>B;wlJZFo>W$HK1-Jd0hg(R44eiol(XWB>R=Jb1!$36qxp2UToX%mG^nn zErqbt-}R6>4nBEx%YzG*n{$A9NNz%s4PKbr(SE~$@Y_np+*d&hRc^x&imFV4BA747 zxH-YP-)~Fs!>S1`R0_7)d0;y`zpLtet*UcsyYoj?ofoS*k8F2dtLnT|)p>Zk^QTpv z`CpPUVSVMI*2=4X>^#d6-GK0aG5m!UyrW?J%GOqDQCn^b!Pa}K47f!ln|@*WSbw8R V{=NyztYDeyhn`f)YpQIo{}&FcfXe^? literal 3503 zcmZuzZERat8GerMz5eP=YL~k07Kf%;I}#^N){JJ$;-obFbeA+O4QZPcmK*0bxs787 z+i9EeEu}~d#E=lsuBeL&s1j6Sh@~qC?LYiNLP-2V2qCl|{N9hP-FV(}9mk0*OZS}f zp7TEMd7t;=_%EOQ@qGZVU_Ocfj1Wv47J>?~YtD72JLlwQyGN(5x!JNpFzw~N@}Ppz z);=CV7?BX7Hnzc5Fi$xPu0o`|RLqY#^KM>2O~{!>8`}}%&SK74zUsNT8HK=PMz(g? z_zZR`M5hZ*ac11fEfGOw!q}yd81r&&i&tuKaz)pfS#Bu{XcT+!ObE}~XhKq9x7_h& zcj<=5Tb>zREPI9gIVVq)XG(L08<~9BE#{rvh+8T-v+i-v$rWZ5+S`V;Z_bT!_p!pl zVj=J5%l*Er#^3(-@hC6(SsQ!NqF`V3@-stjsXS7+P6JlkWTrhM2U=}Bhy9e$!K~iN zWPH`Mksnm&M_d03Ni_g>KTl;N=&bn+hS?%1nsP zA@qdsqK(hvutMWTghrh59K)hdTWz$j&%R{iWjSaNNceumM!)bKAzyh?cIl8v2W$*( zlJNe{_|Pue(z(+c72oSU7$=rQ(mae_&4tT01Hwhw!G_w3Tb zv|Ai=rgN0+7%pU;+_+QpWL*)On`Ip~$O*78p4l6XbLZJvg%F} zmpz-7mk(`Ta<_qoYBR}fW2!NME))NW@3i6>es@s` zh{B}l2pdG4#&)3ruTpCJ5E#Y?S4xVf0{?9o`~mw@@1mip>n+-mNpdu4t|Fc?Y3~6d zYDeNRc8e_oV(VF64|Fa3Xqf-W}G+H>p`Vz0%=tk@$u&eAn;V?RbY3*a2*CIZbC zrRS^8rl}{V8dE8`#v?Qb9%0{xkJ2x}KGc9@jbDuwI{~R->XSD0CfNw_?7h?@9OyNP z7LP^WhOH+bt|FK)A9AbxEm+3G<~taSKiSi38NI5||q8H0N^-Z>*AE6IFq3kZw znyD*{)eHQ6k?aSF(TfY5S(vZN=BhHXR*l>}j4{FzlY6u&k(1dtGs+;&ZCs?x)X{84 z^a=K;K=>)PDb@ZFtd9_QijY62B3rs29Q=bSl0ZWGKw!}5H4~<=-rbQf$$BdXb2Qaq z2;;(-X^bYUlSRhJu z(qsC^uIzgm_%4x1mwF(17QV0U8tJCsef&!oSeO0=r@B^g$rs$gXw6PcZw;hkudbml z6*v0UkWQtV;;M5lj-O6Vtl`KShI|Ecm3bXwONg^nQ?U;@VRB0u2j?nw=1j5l+Pd%# z#@45m(UScm+T4(D?#O0yX}L!Qv#!Av#i;C)BbGKABH&qnc?Typ5>&|0~g!HS=x zOzAq=2IDC#rFQyda%H_tbjPMguy~1(SPkeWM&3W*$J&Dbd|4G-g)ftQ|8*SXX|Wkh zHSwj|`cV9g_qtuBkEbdKGLyGhxOt5&*2g+SKZKjGu)!B_E81N?C_k@y%yU(=aP@f$ zGbMxt1qag=TzQh#9c*}Ki-T|1bue2ESgms3R(5_-S9zwca(b)sgSyIYUFD&z%D<_r ze6_Cfk*&(Vt*gwx?G?gat`HVw<2-SZ(THy#`2PTY&%nN0gA%Q##w=^EPHNQrPx28S W6X6dUK`Lu=YRKO;37My3b?yIz2t^_Q