必须要总结一下前段时间的参照MLDN的五子棋小程序的开发了!
所用的Swing的知识:
- JFrame容器的一系列方法.
- JOptionPane面板的一系列组建(JOptionPane.showMessageDialog()消息弹出对话框、JOptionPane.showConfigDialog()确认对话框、JOption.showInputDialog()输入框。。。等等)、鼠标的监听.
- MouseListener()以及添加鼠标监听的方法,this.addMouseListener(this),用来获得鼠标的点击坐标e.getX(),e.getY()等方法.
- Graphics的相关绘图方法及组件用以在窗口容器中绘制图像和文字.
五子棋小游戏的功能分析:
- 点击鼠标,可在相应的位置显示棋子
- 判断游戏是否结束,哪方获胜
- 进行游戏时间的设置,判断是否超过规定的时间
开发步骤概要:
- 首先开发出界面:创建FiveChessFrame.java ,界面棋盘采用18*18的标准,每格20像素。
- 然后,完成下棋功能,点击鼠标可以落子需要添加鼠标监听的功能;完成保存之前下过的棋子功能和黑白方轮流下棋的功能。可以通过一个二维数组int[19][19],点击鼠标往数组中插入1或者2,1代表黑,2代表白,初始化为0,代表没有棋子。并在绘图区绘制棋子。产生一个repain()的方法
- 再就是判断游戏的胜负:向周围八个方向判断二维数组的值,然后将此功能整合成一个总的方法。
- 接下来是需要显示游戏的信息 message 添加button组件的功能
- 下一步是处理屏幕闪烁的问题:通过双缓冲技术BufferedImage类的实现。BufferedImage bi = new BufferedImage(500,500,BufferedImage.Type_INT_ARGB)这个方法在内存中成像。在新建一个画笔g2 = bi.createGraphics(),然后把g2加到g上,显示在组件窗体中。
- 然后是实现几个按钮的功能,很简单
- 最后是实现倒计时的功能,这里需要用到多线程,实现Runnable接口,通过sleep方法和用标志位的方法实现黑白棋时间的同步。
心得:熟悉了Swing的编程,体会到多线程的重要性,并且希望抽个时间用良好的设计模式来改写这个小程序。