一、实现功能(人人对战模式)
1、点击开始下棋,黑棋先手,再下白棋
2、拖动界面,棋子和棋盘依旧存在(实现重绘)
2、每下一颗棋子判断输赢,获胜方弹出游戏提示
3、点击悔棋按钮,实现悔棋
4、点击认输按钮,无法下棋,保留下棋结果
二、需要的API类(类、接口)
JFrame BorderLayout JPanel FlowLayout JButton Dimension JComboBox MouseListener|MouseAdapter MouseEvent ActionListener ActionEvent Graphics|Graphics2D Color String 数组
三、设计思路:
1、界面实现
图形界面开发+重绘+继承+接口
2、功能实现
事件监听机制+画图
四、上代码实现思路
1、界面实现(需要重绘棋盘和棋子)
package java2018_7_17五子棋;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
@SuppressWarnings("serial")
//继承Jpanel 实现自定义的Config接口public class ChessUI extends JPanel implements Config{
public static void main(String[] args) {
ChessUI chessUI=new ChessUI();
chessUI.showUI();
}
public void showUI() {
String []itemArray= {"人人对战","人机对战"};
JComboBox item=new JComboBox(itemArray);//实例化下拉框对象,并赋初值ChessListener ll=new ChessListener(this,item);//实例化事件处理类对象,并将面板和下拉框传递过去JFrame frame=new JFrame();//创建窗体顶级容器对象frame.setTitle("五子棋");
frame.setSize(new Dimension(900, 800));
frame.setLocationRelativeTo(null);//设置窗体位置时必须先确定窗体大小,顺序不能变this.setBackground(Color.CYAN);
this.setPreferredSize(new Dimension(700, 800));//设置中央面板大小this.addMouseListener(ll);//给面板加上鼠标监听方法frame.add(this,BorderLayout.CENTER);//添加中间面板JPanel eastpanel=new JPanel();//实例化东边面板eastpanel.setBackground(Color.LIGHT_GRAY);
eastpanel.setPreferredSize(new Dimension(100, 800));//设置东边面板大小frame.add(eastpanel,BorderLayout.EAST);//添加东边面板JLabel label=new JLabel();//实例化标签组件对象label.setPreferredSize(new Dimension(100, 120));//设置标签,注意标签是透明的,这样可以让按钮都移到中间eastpanel.add(label);//在东边面板加上labelString [] typeArray&#