ADD file via upload

main
p5p9m3wxy 1 year ago
parent 451d88b3c9
commit 9d348c3817

@ -0,0 +1,129 @@
//构建五子棋界面GoBangframe类
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JComboBox;
import java.awt.Dimension;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionListener;
import java.awt.event.MouseListener;
import java.util.ArrayList;
public class GoBangframe extends JPanel implements GoBangconfig{
public Graphics g;//定义一支画笔
public int[][] isAvail=new int [19][19];//定义一个二维数组来储存棋盘的落子情况
public ArrayList<ChessPosition>ChessPositonList=new ArrayList<ChessPosition>();//保存每一步的落子情况
public int turn=1;
JTextArea textA = new JTextArea("点击:开始新游戏(才能开始!!!)",10,15);
JTextArea textB = new JTextArea(" 设计人:xxx",0,15);
Font f1= new Font("宋体",Font.BOLD,15);
Font f2= new Font("宋体",Font.BOLD,15);
//主函数入口
public static void main(String args[]) {
GoBangframe gf=new GoBangframe();//初始化一个五子棋界面的对象
gf.initUI();//调用方法进行界面的初始化
}
public void initUI() {
//初始化一个界面,并设置标题大小等属性
JFrame jf=new JFrame();
jf.setTitle("五子棋");
jf.setSize(927,800);
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(3);
jf.setLayout(new BorderLayout());//设置顶级容器JFrame为框架布局
Dimension dim1=new Dimension(150,0);//设置右半部分的大小
Dimension dim3=new Dimension(800,0);//设置左半部分的大小
Dimension dim2=new Dimension(140,40);//设置右边按钮组件的大小
//实现左边的界面把GoBangframe的对象添加到框架布局的中间部分
this.setPreferredSize(dim3);//设置下棋界面的大小
this.setBackground(Color.GRAY);//设置下棋界面的颜色
//这里的话直接把左边的画板添加上去,指明是在框架布局的中间版块
//若放在其他版块会有一些小问题
jf.add(this,BorderLayout.CENTER);//添加到框架布局的中间部分
//实现右边的JPanel容器界面
JPanel jp=new JPanel();
jp.setPreferredSize(dim1);//设置JPanel的大小
jp.setBackground(Color.white);//设置右边的界面颜色为白色
jf.add(jp,BorderLayout.EAST);//添加到框架布局的东边部分
jp.setLayout(new FlowLayout());//设置JPanel为流式布局
//添加作者
textB.setFont(f2);
jp.add(textB);
//接下来我们需要把按钮等组件依次加到那个JPanel上面
//设置按钮数组
String[] butname= {"开始新游戏","悔棋","认输"};
JButton[] button=new JButton[3];
//依次把三个按钮组件加上去
for(int i=0;i<butname.length;i++) {
button[i]=new JButton(butname[i]);
button[i].setPreferredSize(dim2);
jp.add(button[i]);
}
//添加文本框
textA.setFont(f1);
textA.setLineWrap(true);//设置自动换行
jp.add(textA);
//按钮监控类
ButtonListener butListen=new ButtonListener(this);
//对每一个按钮都添加状态事件的监听处理机制
for(int i=0;i<butname.length;i++) {
button[i].addActionListener(butListen);//添加发生操作的监听方法
}
jf.setVisible(true);
}
//重写重绘方法,这里重写的是第一个大的JPanel的方法
public void paint(Graphics g) {
super.paint(g);
//重绘出棋盘
g.setColor(Color.black);
for(int i=0;i<row;i++) {
g.drawLine(x, y+size*i, x+size*(column-1), y+size*i);
}
for(int j=0;j<column;j++) {
g.drawLine(x+size*j, y, x+size*j, y+size*(row-1));
}
//重绘出棋子
for(int i=0;i<row;i++) {
for(int j=0;j<column;j++) {
if(isAvail[i][j]==1) {
int countx=size*i+20;
int county=size*j+20;
g.setColor(Color.black);
g.fillOval(countx-size/2, county-size/2, size, size);
}
else if(isAvail[i][j]==2) {
int countx=size*i+20;
int county=size*j+20;
g.setColor(Color.white);
g.fillOval(countx-size/2, county-size/2, size, size);
}
}
}
}
}
Loading…
Cancel
Save