import java.awt.*; import java.applet.*; import java.awt.event.*; public class hello extends Applet { Five fiveObj = new Five(); Image image, chessImage1, chessImage2; boolean loadImage = false; public boolean initialize() { // 载入图片 image = getImage(getCodeBase(), "image/background.jpg"); chessImage1 = getImage(getCodeBase(), "image/chessImage1.png"); chessImage2 = getImage(getCodeBase(), "image/chessImage2.png"); loadImage = true; return true; } public void paint(Graphics g) { if(!loadImage)initialize(); // 画图 g.drawImage(image, 0, 0, this); for (int i = 0; i < 15; i++) { for (int j = 0; j < 15; j++) { if (fiveObj.sChessBoard[i][j] == 1) { g.drawImage(chessImage1, i * 40 + 20, j * 40 + 20, this); } if (fiveObj.sChessBoard[i][j] == 2) { g.drawImage(chessImage2, i * 40 + 20, j * 40 + 20, this); } } } } public void AISetChess() { fiveObj.checkGrade(); fiveObj.AIChoose(); fiveObj.setBoard(fiveObj.AIChooseX, fiveObj.AIChooseX, (short)2); } public boolean mouseDown(Event evt, int x, int y) { if (x < 0 || x > 617 || y < 0 || y > 617) return false; // if (!fiveObj.P1Turn) // return false; short tempX = (short) ((x - 16) / 40 ), tempY = (short) ((y - 16) / 40 ); fiveObj.setBoard(tempX, tempY, (short) 1); AISetChess(); repaint(); return true; } } // ////////////////////////////////////////////////////////////////////////////////////////// // Five 类 class Five { short sChessBoard[][] = new short[15][15]; // 记录棋盘现况 short sAICheck[][] = new short[2][572], // AI查询权值 sP1Grade[][] = new short[15][15], sP2Grade[][] = new short[15][15], sP1Grades, sP2Grades; boolean bCheckP1Board[][][] = new boolean[15][15][572], // 判断胜负 bCheckP2Board[][][] = new boolean[15][15][572]; boolean P1Win, P2Win, P1Turn, P2Turn, TempStart; short AIChooseX = 18, AIChooseY = 18; /////////////////////////////////////////////////////////////////////////////////////////////////// void Initialize() { int i = 0, j = 0, k = 0; for (i = 0; i < 15; i++) { for (j = 0; j < 15; j++) { sChessBoard[i][j] = 0; } } for (i = 0; i < 2; i++) { for (j = 0; j < 572; j++) { sAICheck[i][j] = 0; sP1Grade[i][j] = 0; sP2Grade[i][j] = 0; } } for (i = 0; i < 15; i++) { for (j = 0; j < 15; j++) { for (k = 0; k < 572; k++) { bCheckP1Board[i][j][k] = false; bCheckP2Board[i][j][k] = false; } } } P1Win = false; P2Win = false; P1Turn = false; P2Turn = false; } //////////////////////////////////////////////////////////////////////////////////////////////////// void setBoard(short x, short y, short playerID) { if (x < 0 || x > 14 || y < 0 || y > 14 || (playerID != 1 && playerID != 2)) return; if (sChessBoard[x][y] != 0) return; sChessBoard[x][y] = playerID; } //////////////////////////////////////////////////////////////////////////////////////////////////// void checkGrade() { short i, j, k; for (i = 0; i < 15; i++) for (j = 0; j < 15; j++) { // sP1Grade[i][j] = 0; if (sChessBoard[i][j] == 0) for (k = 0; k < 572; k++) if (bCheckP1Board[i][j][k]) { switch (sAICheck[0][k]) { case 1: sP1Grade[i][j] += 5; break; case 2: sP1Grade[i][j] += 50; break; case 3: sP1Grade[i][j] += 100; break; case 4: sP1Grade[i][j] += 400; break; } } } for (i = 0; i < 15; i++) for (j = 0; j < 15; j++) { sP2Grade[i][j] = 0; if (sChessBoard[i][j] == 0) for (k = 0; k < 572; k++) if (bCheckP2Board[i][j][k]) { switch (sAICheck[1][k]) { case 1: sP2Grade[i][j] += 6; break; case 2: sP2Grade[i][j] += 51; break; case 3: sP2Grade[i][j] += 101; break; case 4: sP2Grade[i][j] += 401; break; } } } } /////////////////////////////////////////////////////////////////////////////////////////////////////// void AIChoose() { short i, j,m, n, mat = 0, nat = 0, mde = 0, nde = 0; if (TempStart) { if (sChessBoard[4][4] == 0) { m = 4; n = 4; } else { m = 5; n = 5; } TempStart = false; } else { for (i = 0; i < 15; i++) for (j = 0; j < 15; j++) if (sChessBoard[i][j] == 0) { if (sP2Grade[i][j] >= sP2Grades) { sP2Grades = sP2Grade[i][j]; mat = i; nat = j; } if (sP1Grade[i][j] >= sP1Grades) { sP1Grades = sP1Grade[i][j]; mde = i; nde = j; } } if (sP2Grades >= sP1Grades) { m = mat; n = nat; } else { m = mde; n = nde; } } sP2Grades = 0; sP1Grades = 0; for (i = 0; i < 572; i++) { if (bCheckP2Board[m][n][i] && sAICheck[1][i] != 7) sAICheck[1][i]++; if (bCheckP1Board[m][n][i]) { bCheckP1Board[m][n][i] = false; sAICheck[0][i] = 7; } } AIChooseX = m; AIChooseY = n; } }