java项目开发----五子棋
Posted nooooooooooooo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java项目开发----五子棋相关的知识,希望对你有一定的参考价值。
java项目开发(一)----五子棋
项目(一)------五子棋
我们都玩过五子棋那么,这么一个看似简单的游戏怎么用JAVA代码去实现呢??
开发思路
五子棋的要素
两个用户
五子棋需要双方来下棋
所以我们需要两个用户来对战
双方可以是人也可以是AI
一方手执白棋、一方手执黑棋
黑白棋子
-我们通过黑白棋子来区分用户双方
-
属性
-棋子颜色
-棋子尺寸
-棋子行列坐标
-下的棋顺序
-
主要方法
-绘制棋子
-判断胜负
棋盘
-有棋盘我们才有地方下棋,我们需要棋盘
-
属性
-棋盘尺寸
-棋盘坐标
-棋盘背景
-棋盘格
-
方法
-棋盘绘制
游戏的几个界面—登录、模式选择、胜负弹窗、游戏界面
-我们无论绘制棋盘还是绘制棋子,都需要在窗口体上获取画笔,在窗口体上作画
-我们用户登录需要有登录界面、游戏模式选择要有模式选项界面、胜负判断胜负判断界面、游戏要有游戏界面
-
属性
-尺寸
-功能按钮
-界面标题
-界面背景
-界面布局
-
方法
-窗口体创建、可视化
-监听器
-地址传输
-布局设置
-按钮、面板、标签的设置
游戏规则
-胜负判断:五子棋顾名思义,从纵向、横向、两个斜向只要有五个同色棋子相连便赢了
-下棋顺序:白棋为先,黑白棋轮流下棋
-下棋规则:可以悔一步棋,不能重复一个地方下棋,不能将棋子下到边界之外
游戏窗口的创建
创建窗口对象
窗口创建思路
-输入javax.swing.*的包:import java.swing.*; //我们需要用里面的JFrame来创建窗口对象
-通过继承JFrame,用this来直接引用父类的方法设置窗口体,所以我们这里一开始可以不创建对象---子类继承父类的方法
-窗口体设置:运用JFrame的几个方法我们设置窗口体的标题、尺寸、小图标、关闭设置、可视化
代码
package com.xsx0805;
import javax.swing.*;
import java.awt.*;
public class WuZiqi extends JFrame{
//设置窗口体
public void initUI() {
//设置窗口体属性
this.setTitle("五子棋0");//设置窗口标题
this.setSize(1100, 1000);//设置尺寸
this.setIconImage(new ImageIcon("image\\\\saierda.png").getImage());//设置窗口体的小图标
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭设置
this.setLocationRelativeTo(null);//让窗口提居中
this.setVisible(true);//设置可视化
}
创建按钮对象
按钮创建设置思路
-创建按钮对象
按钮创建格式:
JButton 对象名=new JButton();//创建按钮对象的格式
-设置按钮的各种属性---尺寸、文本内容、字体
代码
JButton btn_1=new JButton();
JButton btn_2=new JButton();
JButton btn_3=new JButton();
JButton btn_4=new JButton();
JButton btn_5=new JButton();
JButton btn_6=new JButton();
JButton btn_7=new JButton();
JButton btn_8=new JButton();
//设置按钮内容---一些现在用的和以后慢慢完善的
btn_1.setText("悔棋");
btn_2.setText("回放");
btn_3.setText("存档");
btn_4.setText("读档");
btn_5.setText("返回菜单");
btn_6.setText("开始录制");
btn_7.setText("停止录制");
btn_8.setText("重新开始");
//设置字体
btn_1.setFont(new Font("SimSun",1,15));
btn_2.setFont(new Font("SimSun",1,15));
btn_3.setFont(new Font("SimSun",1,15));
btn_4.setFont(new Font("SimSun",1,15));
btn_5.setFont(new Font("SimSun",1,15));
btn_6.setFont(new Font("SimSun",1,15));
btn_7.setFont(new Font("SimSun",1,15));
btn_8.setFont(new Font("SimSun",1,15));
Dimension dim_2=new Dimension(100,40);
//设置按钮尺寸
btn_1.setPreferredSize(dim_2);
btn_2.setPreferredSize(dim_2);
btn_3.setPreferredSize(dim_2);
btn_4.setPreferredSize(dim_2);
btn_5.setPreferredSize(dim_2);
btn_6.setPreferredSize(dim_2);
btn_7.setPreferredSize(dim_2);
btn_8.setPreferredSize(dim_2);
设置布局
布局设置思路
-布局选择:按钮在窗口体上不可以影响到棋盘的绘制,所以我们需要将他们设置边界布局—BorderLayout,它分为 SOUTH\\NORTH\\CENTER\\EAST\\WEST五个方位
-面板设置:按钮很多,所以我们选择创建一个面板将他们加到面板上—JPanel通过面板类来创建面板对象
-加入窗体:最后将面板加入窗口体
代码
public void initUI() {
//设置窗口体属性
this.setTitle("五子棋0");
this.setSize(1100, 1000);
this.setIconImage(new ImageIcon("image\\\\saierda.png").getImage());
//创建按钮面板对象
JPanel jp_1=new JPanel(new FlowLayout(FlowLayout.CENTER,20,10));
jp_1.setBackground(Color.gray);//设置面板的背景颜色
JButton btn_1=new JButton();
JButton btn_2=new JButton();
JButton btn_3=new JButton();
JButton btn_4=new JButton();
JButton btn_5=new JButton();
JButton btn_6=new JButton();
JButton btn_7=new JButton();
JButton btn_8=new JButton();
//设置按钮内容
btn_1.setText("悔棋");
btn_2.setText("回放");
btn_3.setText("存档");
btn_4.setText("读档");
btn_5.setText("返回菜单");
btn_6.setText("开始录制");
btn_7.setText("停止录制");
btn_8.setText("重新开始");
btn_1.setFont(new Font("SimSun",1,15));
btn_2.setFont(new Font("SimSun",1,15));
btn_3.setFont(new Font("SimSun",1,15));
btn_4.setFont(new Font("SimSun",1,15));
btn_5.setFont(new Font("SimSun",1,15));
btn_6.setFont(new Font("SimSun",1,15));
btn_7.setFont(new Font("SimSun",1,15));
btn_8.setFont(new Font("SimSun",1,15));
Dimension dim_1=new Dimension(1000,70);
Dimension dim_2=new Dimension(100,40);
//设置按钮大小
btn_1.setPreferredSize(dim_2);
btn_2.setPreferredSize(dim_2);
btn_3.setPreferredSize(dim_2);
btn_4.setPreferredSize(dim_2);
btn_5.setPreferredSize(dim_2);
btn_6.setPreferredSize(dim_2);
btn_7.setPreferredSize(dim_2);
btn_8.setPreferredSize(dim_2);
//设置面板大小
jp_1.setPreferredSize(dim_1);
//在面板上加入按钮
jp_1.add(btn_1);
jp_1.add(btn_2);
jp_1.add(btn_3);
jp_1.add(btn_4);
jp_1.add(btn_5);
jp_1.add(btn_6);
jp_1.add(btn_7);
jp_1.add(btn_8);
this.add(jp_1,BorderLayout.SOUTH);//将面板以边界布局加到窗口上
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);
}
效果图
棋盘的绘制
棋盘绘制思路
- 获取画笔--Graphics它需要在窗口体上获取
- 设置监听器:将画笔传入监听器来画棋盘和网格
//获取画笔并将画笔传入监听器
wl.setGraphics(this.getGraphics());
- 棋盘网格:设置好网格的各种属性--行列数、行列间距、网格绘制初始坐标,我们可以将他们一起写入接口再将他们接入;
package com.xsx0805;
public interface GoBaangConfig {
/*** SIZE: 棋盘间距 兼 棋子直径 */
int SIZE=50;
/*** 棋盘左上角 X坐 标 */
int X=100;
/*** 棋盘左上角 Y 坐 标 */
int Y=100;
/*** 棋盘的行列值 */
int ROW=15;
int CLOUN=15;
}
- 棋盘背景图像--创建一个文件夹image存上我们选好的画板图像和背景图像,使用的时候用ImageIcon来创建图片对象供画笔用
- 棋盘绘制:通过网格的尺寸和坐标,设置好棋盘的尺寸和绘制坐标来绘制
代码
package com.xsx0805;
import javax.swing.*;
import java.awt.*;
public class WuZiqi extends JFrame implements GoBaangConfig{
private static final Image bgimg=new ImageIcon("image\\\\yellow.png").getImage();
//创建监听器对象
private WuZiqiListener wl=new WuZiqiListener();
//设置窗口体
public void initUI() {
//设置窗口体属性
this.setTitle("五子棋0");
this.setSize(1100, 1000);
this.setIconImage(new ImageIcon("image\\\\saierda.png").getImage());
//创建按钮面板对象
JPanel jp_1=new JPanel(new FlowLayout(FlowLayout.CENTER,20,10));
jp_1.setBackground(Color.gray);
JButton btn_1=new JButton();
JButton btn_2=new JButton();
JButton btn_3=new JButton();
JButton btn_4=new JButton();
JButton btn_5=new JButton();
JButton btn_6=new JButton();
JButton btn_7=new JButton();
JButton btn_8=new JButton();
//设置按钮内容
btn_1.setText("悔棋");
btn_2.setText("回放");
btn_3.setText("存档");
btn_4.setText("读档");
btn_5.setText("返回菜单");
btn_6.setText("开始录制");
btn_7.setText("停止录制");
btn_8.setText("重新开始");
btn_1.setFont(new Font("SimSun",1,15));
btn_2.setFont(new Font("SimSun",1,15));
btn_3.setFont(new Font("SimSun",1,15));
btn_4.setFont(new Font("SimSun",1,15));
btn_5.setFont(new Font("SimSun",1,15));
btn_6.setFont(new Font("SimSun",1,15));
btn_7.setFont(new Font("SimSun",1,15));
btn_8.setFont(new Font("SimSun",1,15));
Dimension dim_1=new Dimension(1000,70);
Dimension dim_2=new Dimension(100,40);
//设置按钮大小
btn_1.setPreferredSize(dim_2);
btn_2.setPreferredSize(dim_2);
btn_3.setPreferredSize(dim_2);
btn_4.setPreferredSize(dim_2);
btn_5.setPreferredSize(dim_2);
btn_6.setPreferredSize(dim_2);
btn_7.setPreferredSize(dim_2);
btn_8.setPreferredSize(dim_2);
//设置面板大小
jp_1.setPreferredSize(dim_1);
//在面板上加入按钮
jp_1.add(btn_1);
jp_1.add(btn_2);
jp_1.add(btn_3);
jp_1.add(btn_4);
jp_1.add(btn_5);
jp_1.add(btn_6);
jp_1.add(btn_7);
jp_1.add(btn_8);
this.add(jp_1,BorderLayout.SOUTH);//将面板以边界布局加到窗口上
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);
//获取画笔并将画笔传入监听器
wl.setGraphics(this.getGraphics());
//加上监听器
this.addMouseListener(wl);
}
public void paint(Gr以上是关于java项目开发----五子棋的主要内容,如果未能解决你的问题,请参考以下文章