❤️Java❤️实现“五子棋”小游戏❤️

五子棋游戏程序源代码以及实现页面

需要各种小游戏源程序(贪吃蛇,火柴人,五子棋,手机界面空调等等二十款小游戏),私信我!!!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.要求
(1)对局双方各执一色棋子。
(2)空棋盘开局。
(3)交替下子,每次只能下一子。
(4)棋子下在棋盘的空白点上,棋子下定后,不得向其它点移动,不得从棋盘上拿掉或拿起另落别处。
(5)第一枚棋子可下在棋盘任意交叉点上。
2.工作负荷
(1)具有菜单界面。
(2)空棋盘开局。
(3)交替下子,每次只能下一子。
(4)棋子下在棋盘的空白点上,棋子下定后,不得向其它点移动,不得从棋盘上拿掉或拿起另落别处。
(5)第一枚棋子可下在棋盘任意交叉点上。
(6)五子连线后能判断输赢

3.程序描述
设计棋子坐标及大小代码
package game;

import java.awt.Color;//提供用于颜色空间的类。
import java.awt.Graphics;//该类是所有图形上下文的抽象基础类,允许应用程序绘制到在各种设备上实现的组件以及屏幕外图像上。
import java.awt.Graphics2D;//该类扩展了图形类,以提供对几何形状、坐标转换、色彩管理和文本布局的更复杂的控制。
import java.awt.RadialGradientPaint;//该类提供了一种用圆形径向色梯度图案填充形状的方法。用户可以指定 2 种或更多梯度颜色,此油漆将在每个颜色之间提供插值。
import java.awt.RenderingHints;//该类定义和管理密钥集合和相关值,允许应用程序为执行渲染和图像操作服务的其他类别使用的算法选择提供输入。

public class Chess {
   //定义棋类的属性
	Chessboard cp; 	//棋盘
	int row;		//横坐标
	int col;		//纵坐标
	Color color;	//棋子颜色
	
	public Chess(Chessboard cp, int col, int row, Color color) {
   
		this.cp = cp;
		this.col = col;
		this.row = row;
		this.color = color;
	}//构造方法 画棋子

	public Color getColor() {
   //返回颜色
		return color;
	}

	public void setColor(Color color) {
   //修改颜色
		this.color = color;
	}

	public int getRow() {
   //返回横坐标
		return row;
	}

	public void setRow(int row) {
   //修改横坐标
		this.row = row;
	}

	public int getCol() {
   //返回纵坐标
		return col;
	}

	public void setCol(int col) {
   //修改纵坐标
		this.col = col;
	}

	public static final int BANJING = 18;//定义静态变量半径
	
    public void draw(Graphics g) {
   
		//定义棋子圆心
		Graphics2D g2d = (Graphics2D) g;//强制将Graphics的g的值转换为Graphics2D的值
		int xPos = col * 20 + 15;
		int yPos = row * 20 + 15;//棋子落点的x坐标与y坐标
        RadialGradientPaint paint = null;
		Color[] c = {
    Color.WHITE, Color.black };//棋的颜色分为两种,黑色和白色
		float[] f = {
    0f, 1f };//提供一个 float 数组,用于指定如何沿渐变分布颜色。这些值的范围从 0.0 到 1.0,其作用与沿渐变的关键帧类似(它们标记渐变应完全变为某种特定颜色的位置)。
		int x = xPos + 3 ;
		int y = yPos + 3; //使棋子位于棋盘交叉线上
		if (color == Color.WHITE) {
   
			paint = new RadialGradientPaint(x, y, BANJING * 3, f, c);
		} else {
   
			paint = new RadialGradientPaint(x, y, BANJING, f, c);
		}
		g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);//消除锯齿
		g2d.setPaint(paint);//赋予棋子颜色
		g2d.fillOval(xPos - BANJING / 2, yPos - BANJING / 2, BANJING, BANJING);
		//使棋子画在棋谱上,xPos-BANJING/2,yPos-BANJING/2指的是填充椭圆的左上角的x与y坐标(变),BANJING, BANJING决定了棋子大小(不变)
	}
}

4程序2(标识符)设计说明
4.1程序描述
定义棋盘大小,棋子步数,棋子位置,判断胜利,判断棋盘上是否存在棋子,棋子是否下在合理位置上,提示什么棋子该下(黑子下完提示白子下,且落子为白子),修改棋盘颜色,修改棋盘线条颜色,设置文字大小及颜色,显示文字提示,定义重新开始游戏动作与悔棋动作。
package game;

import java.awt.BasicStroke;//该类定义了图形原始图轮廓的基本渲染属性集,这些属性由图形2D对象呈现,其笔画属性设置为此属性。描述由笔沿着形状轮廓绘制的标记的形状和在路径段的末端和连接上应用的装饰物所定义的渲染属性。
import java.awt.Color;
import java.awt.Font;//设置字体的类
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;//MouseAdapter的类是一个抽象类(适配器)用于接收鼠标事件。这个类的所有方法都是空的。这个类是方便的类创建侦听器对象。
import java.awt.event.MouseEvent;//表示鼠标操作发生在组件中的事件。如果并且仅当鼠标光标在操作发生时超出组件边界的未遮挡部分时,则鼠标操作应被视为发生在特定组件中。对于轻量级组件(如 Swing 的组件),仅在组件上启用了鼠标事件类型时,才会将鼠标事件发送到组件。鼠标事件类型通过将基于鼠标的相应鼠标添加到组件(鼠标列表或鼠标运动听器)或调用组件启用。启用具有相应掩码参数(或)的"启用事件(长)"。如果组件上未启用鼠标事件类型,则将相应的鼠标事件发送到启用鼠标事件类型的第一个祖先。
import javax.swing.JOptionPane;//它提供标准方法来弹出值的标准对话框或通知用户某些内容。
import javax.swing.JPanel;//JFrame 用来设计类似于 Windows 系统中窗口形式的界面。

public class Chessboard extends JPanel {
   
	public static final int MARGIN = 15;
	public static final int SPAN = 20;
	public static final int ROWS = 19;
	public static final int COLS = 19;
	Chess[] chessList = new Chess[20 * 20]; //表示棋子位置
	int chessCount = 0;//代表所下棋子步数
	boolean iso = 
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张AK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值