山东凯文科技职业学院
public DrawPanel(int k[][],int n1,int m1){ }
public void paintComponent(Graphics g){
super.paintComponent(g); Graphics2D g2=(Graphics2D)g; Graphics2D g3=(Graphics2D)g;
double X=20; double Y=20; double width=480; double height=480; double jiange=30;
// 画棋盘网格
for(int i=0;i<=width/jiange;i++){ }
g2.draw(new Line2D.Double(X+i*jiange,Y,X+i*jiange,height+Y)); g2.draw(new Line2D.Double(X,Y+i*jiange,width+X,Y+i*jiange));
a=k; n=n1; m=m1;
//画中间点的标记 g3.setPaint(Color.RED);
g3.draw(new Line2D.Double(254,245,254,254)); g3.draw(new Line2D.Double(245,254,254,254)); g3.draw(new Line2D.Double(267,245,267,254)); g3.draw(new Line2D.Double(267,254,275,254));
g3.draw(new Line2D.Double(245,266,254,266)); g3.draw(new Line2D.Double(254,266,254,275));
13
山东凯文科技职业学院
}
}
g3.draw(new Line2D.Double(266,275,266,266)); g3.draw(new Line2D.Double(266,266,275,266)); //画旗子
for(int i=1;i
//画旗子上的标记 if(n>0&&m>0){ }
g2.setPaint(Color.RED);
g2.setStroke(new BasicStroke(1.5f));
g2.draw(new Line2D.Double(30*m-16,30*n-16,30*m-4,30*n-4)); g2.draw(new Line2D.Double(30*m-16,30*n-4,30*m-4,30*n-16)); for(int j=1;j
Ellipse2D circle=new Ellipse2D.Double(); circle.setFrame(j*30-25, i*30-25, 28, 28); if(a[i][j]==1){
g2.setPaint(Color.BLACK); g2.fill(circle);
}else if(a[i][j]==2){ }
g2.setPaint(Color.WHITE); g2.fill(circle);
类PlayerVsPC代码: package resource;
import java.awt.Color;
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter;
14
山东凯文科技职业学院
import java.awt.event.MouseEvent; import java.awt.Toolkit; import java.awt.Dimension;
import javax.swing.JColorChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel;
public class PlayerVsPC {
15
private JFrame frame; //整个窗口 private JMenuBar bar; //菜单栏 private JMenuItem[][] jit;//菜单项数组 private JMenuItem[] mode;//模式项数组 private JMenu[] jm;
//菜单
public boolean isBlack; //是否为黑方下子状态 private int[][] qipan; private int row; private int col; private int prow; private int pcol;
private Color c=new Color(145,125,62); private DrawPanel panel; private JLabel label;
//棋盘面板 //棋盘上方的标签 //棋盘上方条形面板
//棋盘背景颜色
//棋盘数组 //当前行
//当前列
private JPanel panel0; private boolean isEnd; private int[][] qixingPC; private int[][] qixingPlayer;
private boolean isPC = true; //记录当前下棋模式 private boolean cMode = true;
//记录选择的对弈模式
山东凯文科技职业学院
public PlayerVsPC(){ }
public void addItems(){
frame=new JFrame(\五子棋游戏\bar=new JMenuBar(); jm=new JMenu[2]; jit=new JMenuItem[2][]; qipan=new int[19][19]; qixingPC = new int[17][17]; qixingPlayer = new int[17][17]; for(int i=0;i<19;i++){ }
for(int i=0;i<17;i++){ }
label = new JLabel(\人\机\人\对弈模式,请按开局开始游戏!\panel0=new JPanel();
for(int j=0;j<17;j++){ }
qixingPC[i][j]=0; qixingPlayer[i][j]=0; for(int j=0;j<19;j++){ }
qipan[i][j]=0;
addItems();
addEventAction(); printqipan(0,0);
jm[0]=new JMenu(\游戏\jm[1]=new JMenu(\选项\
jit[0]=new JMenuItem[3]; jit[0][0]=new JMenuItem(\开局\jit[0][1]=new JMenuItem(\重新开始\
16
山东凯文科技职业学院
jit[0][2]=new JMenuItem(\结束游戏\
jit[1]=new JMenuItem[3]; jit[1][0]=new JMenu(\对弈模式\ mode=new JMenuItem[2];
mode[0] = new JMenuItem(\人人对弈\ mode[1] = new JMenuItem(\人机对弈\ jit[1][0].add(mode[0]); jit[1][0].add(mode[1]);
jit[1][1]=new JMenuItem(\悔棋\
jit[1][2]=new JMenuItem(\背景颜色\
for(int i=0;i } } panel0.add(label); bar.add(jm[0]); bar.add(jm[1]); frame.setJMenuBar(bar); frame.add(panel0,\ } //给菜单项设定事件 public void addEventAction(){ jit[0][0].addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { row=prow=0;col=pcol=0; isPC=cMode; isBlack = true; isEnd = false; 17 //开局