java项目开发----五子棋(代码片段)

nooooooooooooo nooooooooooooo     2022-12-21     576

关键词:

项目(一)------五子棋

​ 我们都玩过五子棋那么,这么一个看似简单的游戏怎么用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编程语言编写的五子棋游戏(控制台版),用到二维数组、for循环、if语句、while()语句、ScannerUntil包,此项目主要是对数组的使用。该项目的功能有落子、输出棋盘、判断输赢。代码条:packageedu.qizi.ga... 查看详情

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

游戏介绍五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。五子棋有两种玩法。玩法一:双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。玩... 查看详情

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

游戏介绍五子棋是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。五子棋有两种玩法。玩法一:双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。玩... 查看详情

linux项目实战——五子棋(单机人人对战版)(代码片段)

Linux操作系统项目实战——五子棋GIF: 目录       Linux操纵系统项目——五子棋一、问题导引:二、实现要求:三、五子棋原理:1.落子数据信息保存载体:2.落子思路:3.判断“五子连珠”四、项目实... 查看详情

qtvs2017《五子棋》人机对战项目(代码片段)

...年了。一年前,自己学习qt语言时,顺便写了一个五子棋的小项目,个人感觉,这个五子棋项目还算挺大型的,整个项目代码量加起来可能有1w行,现在分享出来给有需要的朋友,参考借鉴。项目包括实... 查看详情

java五子棋(人机版),昨天买的棋子今天就用不上了(代码片段)

Java五子棋,老程序员也花了3天作者简介作者名:编程界明世隐简介:CSDN博客专家,从事软件开发多年,精通Java、JavaScript,博主也是从零开始一步步把学习成长、深知学习和积累的重要性,喜欢跟广... 查看详情

c语言项目:一天时间写出《五子棋项目》,包含源码分享(代码片段)

一天时间开发出老师说需要一星期的C语言游戏:五子棋项目!给大家分享一下~为了进一步了解C语言编程,熟悉优秀的编码风格,提升编码能力,丰富项目经验。所以在编程初期选择了控制台小游戏《单机五... 查看详情

java——五子棋(代码片段)

Java——五子棋(3)这里我新加一个指示器的功能,比如说这个样子:就是会提示你到底下在哪个位置的指示器。代码如下:具体的我注释好了,仔细认真看,一定会成功的,不懂得小伙伴随时私信... 查看详情

项目——网络对战五子棋(web-gobang)(代码片段)

目录1.项目开发背景2.项目需求&开发环境3.项目设计&项目难点4.功能实现&难点解决4.1.用户登录/注册4.2.项目难点解决4.2.1难点一:当用户点击开始匹配按钮时,创建房间并为用户分配相应的对手。4.2.2难点二:... 查看详情

项目——网络对战五子棋(web-gobang)(代码片段)

目录1.项目开发背景2.项目需求&开发环境3.项目设计&项目难点4.功能实现&难点解决4.1.用户登录/注册4.2.项目难点解决4.2.1难点一:当用户点击开始匹配按钮时,创建房间并为用户分配相应的对手。4.2.2难点二:... 查看详情

composemultiplatform实战:联机五子棋(代码片段)

1.认识ComposeMultiplatformJetpackCompose作为Android端的新一代UI开发工具,得益于Kotlin优秀的语法特性,代码写起来十分简洁,广受开发者好评。作为Kotlin的开发方,JetBrains在Compose的研发过程中也给与了大量帮助,可... 查看详情

基于blazor开发五子棋??小游戏(代码片段)

...已,没想到今年的粽子礼盒内暗藏玄关,内附一个棋盘和五子棋子。粽子什么的都不重要,主 查看详情

利用easyx制作简易的五子棋项目(代码片段)

目录一:预览结果:二:代码设计 三: 安装的文件及导入的函数及头文件一:预览结果:二:代码设计   需要安装2013及以上的vs版本:官网也可以下载最新版本进行安装 之后导入easyx的专业图... 查看详情

java五子棋(人机版),昨天买的棋子今天就用不上了(代码片段)

Java五子棋,老程序员也花了3天作者简介作者名:编程界明世隐简介:CSDN博客专家,从事软件开发多年,精通Java、JavaScript,博主也是从零开始一步步把学习成长、深知学习和积累的重要性,喜欢跟广... 查看详情

[教你做小游戏]《五子棋》怎么判断输赢?你能5分钟交出代码吗?(代码片段)

1.问题描述《五子棋》游戏,如何判断输赢呢?这个问题是不是很简单?适合给代码初学者练手。但是如果你真的只想快速开发一个五子棋,常年混迹开发业务、多年没摸算法的你,的确可能会在这个问题上头疼。因为目标不一... 查看详情

前端开发趣味之五子棋小游戏(js+node+websocket)可分房间对战(代码片段)

主要通过js、canvas、node、websocket来实现五子棋游戏。tip:如果你想清除的了解怎么实现,请一步步看思路流程。首先搭建一个express服务:constexpress=require('express')constpath=require('path')constapp=express()//静 查看详情

五子棋项目(代码片段)

...;4#include<easyx.h>56#defineROW157#defineCOL158#defineSIZE409/*10111.五子棋的规则棋盘上黑白棋走1213棋盘--->二维数组旗子黑-1白1空白01415判断输赢连成5个判断落子附近有没有成5个就行1617下棋先白然后黑写一个函数鼠标点击的位置转换... 查看详情

java初学者练习之五子棋游戏教程(附源码)(代码片段)

1.图形化界面的创建1.1创建JFrame窗体容器        1)JFrame窗体需要设置基本的大小、布局、默认的关闭方式,以及最重要的设置可见。1.2在JFrame上添加组件,用来绘制棋盘棋子和游戏操作。    1)棋盘棋子的... 查看详情