代码展示

package wuziqi;

 

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.util.ArrayList;

import java.util.List;

import java.util.Locale;

import java.util.Random;

 

import javax.swing.ImageIcon;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

 

public class pan extends JPanel implements MouseListener{

int i=0,j=0;

int row = 15;

// 数组下标

int col = 15;

// 数组上标

String qipan_name = "qipan1.jpg";

String qizi1_name = "c1.png";

String qizi2_name = "c2.png";

int num[][] = new int[row][col];

// 0:标示该位置为空,1:标示红棋子,2:标示黑棋子

boolean canSetqizi = true;

// 定义boolean值,用来判断该位置是否有子

int qizi_num = 0;

// 定义记录落子数

List<paihangbang> paihanglist = new ArrayList();

// 定义集合,用来存储排行榜

public void paint(Graphics g){

super.paint(g);

Image img= new ImageIcon("img/"+qipan_name).getImage();

// 调入棋盘图片

g.drawImage(img, 0, 0, 567, 567, this);

// 绘制棋盘

Image c1= new ImageIcon("img/"+qizi1_name).getImage();

Image c2= new ImageIcon("img/"+qizi2_name).getImage();

for(int i = 0;i<num.length;i++){

for(int j = 0;j<num[i].length;j++){

if(num[i][j] == 1)

{

g.drawImage(c1, i*35+20, j*35+20, 35, 35, this);

}

else if(num[i][j] == 2)

{

g.drawImage(c2, i*35+20, j*35+20, 35, 35, this);

}

}

// 重绘棋子

}

// 重载整个界面(防止最小化后原内容丢失)

}

public int[] getLoc(int x,int y) {

int count = 1;

// 定义计数器,用于计算棋子数

int[] wz1 = null;

int[] wz2 = null;

// 定义数组,用来存储危险位置

for(int i =x-1;i>=0;i--){

if(num[i][y] == num[x][y])

{

count++;

}

else

{

if(num[i][y] == 0){

wz1 = new int[]{i,y};

// 获取左边的危险位置坐标

}

break;

}

}

//

for(int i =x+1;i<row;i++){

if(num[i][y] == num[x][y])

{

count++;

}else{

if(num[i][y] == 0){

wz2 = new int[]{i,y};

// 获取有变位置危险坐标

}

break;

}

}

//

if(count>=3)

{

if(wz1 != null){

return wz1;

// 判断返回左边危险位置

}else if(wz2 != null){

return wz2;

// 判断返回右边危险位置

}else{

return null;

}

}

// 左右

count = 1;

wz1 = null;

wz2 = null;

// 初始化所有参数

for(int j =y-1;j>=0;j--){

if(num[x][j] == num[x][y])

{

count++;

}

else

{

if(num[x][j] == 0){

wz1 = new int[]{x,j};

}

break;

}

}

//

for(int j =y+1;j<col;j++){

if(num[x][j] == num[x][y])

{

count++;

}else{

if(num[x][j] == 0){

wz2 = new int[]{x,j};

}

break;

}

}

//

if(count>=3)

{

if(wz1 != null){

return wz1;

}else if(wz2 != null){

return wz2;

}else{

return null;

}

}

// 上下

count = 1;

wz1 = null;

wz2 = null;

for(int i =x-1,j =y-1;i>=0&&j>=0;i--,j--){

if(num[i][j] == num[x][y])

{

count++;

}

else

{

if(num[i][j] == 0){

wz1 = new int[]{i,j};

}

break;

}

}

// 左上

for(int i =x+1,j =y+1;i<row&&j<col;i++,j++){

if(num[i][j] == num[x][y])

{

count++;

}else{

if(num[i][j] == 0){

wz2 = new int[]{i,j};

}

break;

}

}

// 右下

if(count>=3)

{

if(wz1 != null){

return wz1;

}else if(wz2 != null){

return wz2;

}else{

return null;

}

}

// 左上右下

count = 1;

wz1 = null;

wz2 = null;

for(int i =x-1,j =y+1;i>=0&&j<col;i--,j++){

if(num[i][j] == num[x][y])

{

count++;

}

else

{

if(num[i][j] == 0){

wz1 = new int[]{i,j};

}

break;

}

}

// 左下

for(int i =x+1,j =y-1;i<row&&j>=0;i++,j--){

if(num[i][j] == num[x][y])

{

count++;

}else{

if(num[i][j] == 0){

wz2 = new int[]{i,j};

}

break;

}

}

// 右上

if(count>=3)

{

if(wz1 != null){

return wz1;

}else if(wz2 != null){

return wz2;

}else{

return null;

}

}

// 左下右上

return null;

}

public boolean iswin(int x,int y){

int count = 1;

for(int i =x-1;i>=0;i--){

if(num[i][y] == num[x][y])

{

count++;

}

else

{

break;

}

}

//

for(int i =x+1;i<row;i++){

if(num[i][y] == num[x][y])

{

count++;

}else{

break;

}

}

//

if(count>=5)

{

return true;

}

// 左右

count = 1;

for(int j =y-1;j>=0;j--){

if(num[x][j] == num[x][y])

{

count++;

}

else

{

break;

}

}

//

for(int j =y+1;j<col;j++){

if(num[x][j] == num[x][y])

{

count++;

}else{

break;

}

}

//

if(count>=5)

{

return true;

}

// 上下

count = 1;

for(int i =x-1,j =y-1;i>=0&&j>=0;i--,j--){

if(num[i][j] == num[x][y])

{

count++;

}

else

{

break;

}

}

// 左上

for(int i =x+1,j =y+1;i<row&&j<col;i++,j++){

if(num[i][j] == num[x][y])

{

count++;

}else{

break;

}

}

// 右下

if(count>=5)

{

return true;

}

// 左上右下

count = 1;