java项目开发----五子棋

Posted nooooooooooooo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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项目开发----五子棋的主要内容,如果未能解决你的问题,请参考以下文章

Java课程设计——五子棋

《游戏学习》java实现连珠五子棋完整代码

《游戏学习》java实现连珠五子棋完整代码

五子棋游戏(简单易懂,入门都能学)

Java五子棋游戏——控制台版

Java+Swing实现五子棋游戏