需要导入包import java.awt.*;import javax.swing.*;import java.awt.event.*;先用GUI弄个n*m的GridLayout布局的的界面private JFrame f;private Container c;c=f.getContenPane();c.setLayout(new GridLayout(n,m));然后用for循环在上面加入JB 展开
需要导入包import java.awt.*;import javax.swing.*;import java.awt.event.*;先用GUI弄个n*m的GridLayout布局的的界面private JFrame f;private Container c;c=f.getContenPane();c.setLayout(new GridLayout(n,m));然后用for循环在上面加入JButton,可以事先弄个2维的JButton数组,然后对应棋盘的长和宽,比如j[a][b]就是第a-1行b-1列private JButton[] j=new JButton[]for (int i = 1;i <= n*m;i++) for(int j=1;j <= n*m;j++) c.add(j[i][j]);然后再为每个JButton添加点击事件,根据你第几次的点击后Jbutton显示不同的图片(自己弄个计数器,每次点击增加1,单数的点击显示黑色棋子,双数的点击显示白色棋子),模拟五子棋每次放上棋子,同样也是for循环添加,可以直接接在前面的循环体里面(不过如果要做的好的话还需要) j[i][j].addActionListener(new BtnActionListener());其中BtnActionListener是自己定义的监听事件的内部类具体实现:class BtnActionListener implements ActionListener{ public void actionPerformed(ActionEvent e){ JButton btn=(JButton)e.getSource();//这个是获取引起此次时间的源 具体的实现代码 e.g: if(计数器==单数) btn.setIcon(黑色棋子图片所在路径) }}上面这个只是产生棋盘的实现代码,还有就是判断是否获胜的棋盘代码大致上可以用个for循环偏离所有棋盘上已经点击过有图片的Jbutton,然后判断它附近的棋子颜色,比如你是第i行j列你就可以判断下它四周8个格子内是否有同样颜色的棋子(上下左右、左上左下、右上右下,现实中还要考虑这个棋子是否在棋盘的边缘,可能四周不到8个棋子)既第[i-1][j-1]、[i-1][j]、[i-1][i+1]、[i][j-1]、[i][j+1]、[i+1][j-1]、[i+1][j]、[i+1][i+1]个位置、如果有相同颜色的棋子,再判断能连成1排的下个位置是否有棋子比如[i][j]有个棋子a,遍历得知[i+1][j]有个棋子(既a的右边),接着判断[i+2][j]是否有棋子,有接着判断[i+3][j],没有则退出此次循环,接着判断a周围其他的棋子但是如果每次都要判断所有的话,这个代码可能比较冗长,等棋子多了速度就变慢了,所以可以在每次下新棋子的时候只判断这个棋子四周既在前面BtnActionListener类中添加个方法,然后在外面实现该方法class BtnActionListener implements ActionListener{ public void actionPerformed(ActionEvent e){ JButton btn=(JButton)e.getSource();if(计数器==单数) btn.setIcon(黑色棋子图片所在路径) shiFouHuoSheng();//名字最好不要这样,只是为了方便才写 }}class void shiFouHuoSheng(){ 循环遍历前面BtnActionListener类中事件产生源Jbutton的四周的方法 其中加个if()判断,如果连续的棋子大于5个,则显示获胜信息,否则继续}只是个人意见,GUI的有点忘记了,可能有些地方没有考虑周到,具体的方法可以参考API 收起