Java五子棋软件源码 五子棋游戏java编写思路

最近用Java写了一个有人机对战和人人对战两种模式的五子棋小游戏,也算是有自己一定的心得,现在把它分享出来。代码我会放在最后面,先把五子棋的思路捋清楚

一、首先上界面图

这是我五子棋的界面,比较简单,大家可以根据自己的想法随意DIY.

二、如何实现界面?

这个五子棋界面,由四个类实现,分别是: JFrame(作为顶层容器类的JFrame用来添加其他的所有组件) JPanel(在界面中用来分别添加棋盘界面和按钮界面) JButton(在界面作为按键如“开始”“认输”“重新开始”按键) JRadioButton(在界面中作为单选按钮如“人人对战”“人机对战”)

界面中有两个JPanel面板对象,一个在界面的左边用来绘制棋盘,一个在界面的右边用来放置按键。 给出界面实现代码

public class FiveChess extends JPanel{ public Graphics g; //五子棋盘里面的Graphics属性用来画图 public static void main (String args[]){ FiveChess fc=new FiveChess(); //实例化五子棋盘类得到五子棋盘对象fc fc.go(); //五子棋盘对象fc调用go() } public void setG(Graphics g){ //五子棋盘类用来设置Graphics属性的方法 this.g=g; } public void go(){ /* * 创建一个窗体,设置窗体里的属性 */ JFrame frame=new JFrame(); //实例化一个窗体对象frame frame.setTitle("五子棋"); //设置窗体的标题 frame.setSize(800,500); //设置窗体的大小 frame.setDefaultCloseOperation(3); /* * 添加两个面板 利用board布局 一个放中间 用来画五子棋的棋盘 一个放东边用来放置按钮 */ JPanel buttonpanel=new JPanel(); //实例化一个面板对象buttonpanel buttonpanel.setPreferredSize(new Dimension(300,500));//设置buttonpanel大小 只有窗体对象能够用setSize() buttonpanel.setBackground(Color.white); //设置buttonpanel对象的背景颜色 /* * 添加按钮 */ //实例化三个按钮对象 JButton bstart=new JButton("开始"); JButton bquit=new JButton("认输"); JButton bundo=new JButton("悔棋"); //设置三个按钮对象的大小 bstart.setPreferredSize(new Dimension(200,50)); bquit.setPreferredSize(new Dimension(200,50)); bundo.setPreferredSize(new Dimension(200,50)); //将这三个按钮对象添加到面板对象bp中去 buttonpanel.add(bstart); buttonpanel.add(bquit); buttonpanel.add(bundo); //实例化按钮组对象bg ButtonGroup bg=new ButtonGroup(); //实例化两个单选按钮对象 JRadioButton bpvp=new JRadioButton("人人对战"); JRadioButton bpvr=new JRadioButton("人机对战"); //设置两个单选按钮对象的大小 bpvp.setPreferredSize(new Dimension(200,50)); bpvr.setPreferredSize(new Dimension(200,50)); //将这两个单选按钮对象设为透明背景 bpvr.setOpaque(false); bpvp.setOpaque(false); bg.add(bpvp); //将这两个单选按钮对象添加到按钮组对象bg中 bg.add(bpvr); //将这两个单选按钮对象添加到面板对象buttonpanel中 buttonpanel.add(bpvp); buttonpanel.add(bpvr); this.setBackground(Color.gray); //棋盘对象设置背景色 /* * 窗体布局,将棋盘面板和按钮面板合理地布局在frame窗体对象上 */ BorderLayout bl=new BorderLayout(); //实例化一个布局对象 frame.setLayout(bl); //将窗体对象frame设置为BorderLayout frame.add(this,BorderLayout.CENTER); //把棋盘对象放在窗体对象的中间 frame.add(bp,BorderLayout.EAST); //把按钮面板放在窗体对象的东边 frame.setVisible(true); //窗体对象设置为可见 //棋盘对象设置Graphics属性 g=this.getGraphics(); }}

以上这段代码并没有给出如何画出15*15的棋盘 因为棋盘是在左边板上画出来的我们可以利用左边面板的重绘paint()方法画15*15棋盘

/* *画五子棋棋盘的方法 */ public void draw(Graphics ag){ Graphics2D g=(Graphics2D)ag; g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); for(int i=0;i=5){ if(xy[x][y].flag==1) op.showMessageDialog(null, "白棋胜出"); else op.showMessageDialog(null, "黑棋胜出"); } }如何实现按键点击和落子?

当我们是实现了界面之后,理所应当的,接下来就是实现点击按键和落子的功能了,如何达到在点击按键和落子之后五子棋界面会有相应的反应呢?这需要我们用到事件监听机制,为按键加上监听。 按键点击的事件监听,我们要用到ActionListener接口。 在棋盘上落子实际上就是点击棋盘,棋盘上相应的位置画出棋子。我们可以用到MouseAdapter适配器 定义一个继承了MouseAdapter适配器实现了ActionListenner接口的事件监听类listener 给出对应部分代码

package com.ly.fiveChessV2;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.RenderingHints;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.util.HashMap;import javax.swing.JOptionPane;import javax.swing.JPanel;/* * 点击按钮 点击棋盘面板 */public class listener extends MouseAdapter implements ActionListener{ int mode; int x,y; //x y是鼠标在棋盘界面上获得的坐标 private Graphics2D g; //画笔用来绘图 int chesscount; //连成一条线的同一颜色棋子数量 public chess [][]xy; //定义一个棋子数组 int col=1; //定义一个颜色标志位 1:白色2:黑色 chess chessnew=new chess(); //用一个棋子代表最近下的棋 public JPanel panel; /* * 将棋盘上的画笔g赋值给属性g */ public void setG(Graphics g){ this.g=(Graphics2D)g; } /* * 把棋盘面板对象传过来 */ public void setP(JPanel panel){ this.panel=panel; } /* * 将棋子数组传入 */ public void setChess(chess [][]xy){ this.xy=xy; } /* *处理按键事件 */ public void actionPerformed(ActionEvent e){ JOptionPane op=new JOptionPane(); String str= e.getActionCommand(); /* * 认输按键 */ if(str.equals("认输")){ if(col==1){ op.showMessageDialog(null, "白棋认输,黑棋胜"); } else{ op.showMessageDialog(null, "黑棋认输,白棋胜"); } for(int i=0;i

比丘资源网 » Java五子棋软件源码 五子棋游戏java编写思路

发表回复

提供最优质的资源集合

立即查看 了解详情