<prompt> Unda mchezo wa tic-tac-toe unaotegemea maandishi kwenye Java ambao unaweza kutumia mchezaji mmoja dhidi ya mpinzani wa kompyuta na modi za wachezaji wawili. Mchezo unapaswa kutumia algoriti rahisi ya AI kwa kicheza kompyuta na uhifadhi takwimu za mchezo idadi ya ushindi, hasara na sare katika hifadhidata ya MariaDB.PLINFORMAT  <response>: javaagiza java.util.Skena;darasa la umma TicTacToe utupu tuli wa umma String args Mchezo wa mchezo Mchezo mpya ; mchezo.anza; Mchezo wa darasa bodi binafsi ya Bodi; mchezaji binafsi mchezaji1; mchezaji binafsi mchezaji2; Scanner binafsi ya Scanner; Hifadhidata ya kibinafsi; Mchezo wa umma this.board Bodi mpya; this.scanner Kichanganuzi kipyaSystem.in; this.database new Database; utupu wa umma start System.out.printlnKaribu kwa Tic-Tac-Toe!; selectGameMode; wakati !board.isGameOver playTurnmchezaji1; ikiwa !board.isGameOver playTurnmchezaji2; displayResults; utupu binafsi chooseGameMode System.out.printlnChagua hali ya mchezo:; System.out.println1. Mchezaji Mmoja; System.out.println2. Mchezaji wawili; int choice scanner.nextInt; ikiwa chaguo 1 player1 HumanPlayer mpyaX, skana; player2 KompyutaPlayer mpyaO; nyengine player1 HumanPlayer mpyaX, skana; player2 HumanPlayer mpyaO, skana; utupu wa faragha playTunMchezaji mchezaji ikiwa !board.isGameOver System.out.printlnMchezaji player.getSymbol zamu:; bodi.onyesha; int move player.chooseMoveubao; board.makeMovesogeza, player.getSymbol; onyesho la faragha la utupuResults bodi.onyesha; char mshindi board.getWinner; ikiwa mshindi System.out.printlnNi sare!; nyengine System.out.printlnMchezaji mshindi ameshinda!; hifadhidata.hifadhiTakwimu zaMchezomshindi; Bodi ya darasa Tekeleza ubao wa mchezo na mbinu kama isGameOver, getWinner, display, makeMoveMchezaji wa darasa la kufikirika alama ya char iliyolindwa; Mchezaji wa ummaalama ya char hii.ishara ishara; char ya umma getSymbol ishara ya kurudi; public abstract int selectMoveBodi ya bodi;darasa HumanPlayer huongeza Mchezaji Scanner binafsi ya Scanner; Public HumanPlayeralama ya char, Scanner Scanner super ishara; hii.skana skana; Batilisha public int chooseMoveBodi ya bodi Pata ingizo kutoka kwa mtumiaji ili kuchagua hoja Kicheza Kompyuta cha darasa kinapanua Mchezaji Public ComputerPlayeralama ya char super ishara; Batilisha public int chooseMoveBodi ya bodi Tekeleza algorithm rahisi ya AI kuchagua hoja Hifadhidata ya darasa Private tuli final String DB_URL jdbc:mariadb:localhost:3306tictactoe; Kamba ya tuli ya kibinafsi DB_USER jina_lako_la_la mtumiaji; Kamba ya tuli ya faragha DB_PASSWORD neno_la_siri; public void saveGameStatisticschar winner jaribu Muunganisho wa muunganisho DriverManager.getConnectionDB_URL, DB_USER, DB_PASSWORD Hifadhi matokeo ya mchezo kwenye hifadhidata catch SQLException e System.err.printlnHitilafu katika kuhifadhi takwimu za mchezo: e.getMessage; 