以下是本算法的主要思想步骤,而具体算法分析及注解,相关图片请下载文件
另外还可以在算法中添加悔棋、重来一局、显示当前步骤的算法,详细算法将在以后的博文中讲述,这里也给出了加强版的图片于下载文件中
编写五子棋程序,初步功能思想摘要:
1.框架类的实现:
最基本的是能实现在屏幕上显示一个窗口,类似windows窗口,该窗口的属性有:标题(如“中国五子棋--梅竹寒香”)、初始显示的窗口大小、是否可以改变的大小、窗口初始显示在屏幕的位置、以及窗口关闭时程序是否真正退出(若设计成不退出,那么只有通过任务管理器进行强制关闭了,有点麻烦哈)等。这些都会用到JAVA本身提供的javax.swing.JFrame类进行相关的设置,这些相对来说比较简单,多看几遍就会应用了
2.画布的取得:
每个JFram 类中,都包含一个默认的画布对象,由于本程序没有调用图片素材,所以棋盘的实现与棋子的实现都是通过画布的绘画功能实现的,例如棋盘的横竖线通过drawLine,棋子通过drawOval来绘出,这样稍稍繁琐了些,也是个小小的挑战,但能很大程度上巩固画布方面的java知识
3.画布的重绘:
当窗口移动,最小化后再重新显示,或被其他的程序窗口覆盖后再重新显示,都要用到画布重绘函数(这个方法不用程序显式调用,当上述三种情况发生时程序会自动调用),因为窗口所呈现的图像或文字,都是用数据的形式展现出来的,当发生上述三种情况是,系统将会把以上数据压入缓冲盘中暂时存放,当窗口重新显示是,这些数据就会被重新调出来,按照压入时的情况进行重绘,这样图像文字等内容才能重新显示,由于这个重绘函数继承于父类,而父类中的重绘函数没有进行数据记录与多余的重绘信息(就类似一个空函数)所以如果不作更改,当发生上述三种情况窗口重现时,主体窗口中将显示空白,为解决这个问题就要进行父类重绘函数的重写(进行覆盖)
4.鼠标监听器
这是系统提供的用来跟踪鼠标点击事件的函数,把鼠标监听器添加到JFrame中,就可以记录鼠标点击窗体时的坐标,从而可以用这个坐标值来确定落子的位置,还有利用他可以判断某处是否已经下过棋子
5.轮流下子:
可以用一个整型数进行跟踪记录,初始值设为0(当它为0时表明要下白子,当它为1时表明要下黑子),每次鼠标点击时,当这个值是0就下白子,当这个值是1时就下黑子,此时要定义一个数组来记录落子点的坐标,落子颜色,与是否已经落过子,方便后面的输赢与是否和局的判断
6.判断某节点处是否已落子和已落子的颜色
还是用类似标题5中的方法进行记录,这是就要用两个整型数分别进行记录
7.计算总步数
定义一个全局整型变量鼠标每点击落子成功,该整型数就自加1,这样就可以记录整个过程中所走的步数
8.判断输赢
编写一个判断输赢类WinONo,用来判断输赢,每次进行鼠标点击并落子成功,就向WinONo中的set函数中传递一次落子位置与落子颜色,把这个落子点作为基点(定义一个整型数sameColorCount记录不间断相同棋子的个数,初始值设为1)向他的四个方向进行查找颜色相同的棋子,例如在水平方向上,先向右进行五次循环,如果这几点右边界,那么直接结束循环,sameColorCount还为1,如果没有到达右边界,那么就向基点的有方向搜索,每次搜索到一个连续的相同颜色的棋子sameColorCount自加1,知道遇到循环结束或右边界或遇到不同颜色属性值(如果基点的棋子是白色,那么它的颜色属性值为0,而不同的颜色属性值有1和-1两种情况,1代表黑棋子,-1代表那个节点没有下棋子)就停止循环,接着用同样的方法从基点向左方向搜索,最后判断sameColorCount的值,如果大于等于5,则表明在这个方向上存在五子连珠的情况,再根据基点的颜色属性值弹出消息框提示执该颜色棋子方胜利,如果sameColorCount小于5,则什么也不执行,其他方向情况类似。每次进行鼠标点击调用一下这个函数进行输赢判断
9.重新布局
一旦某方胜利的时候让判断输赢函数中传出一个true,这样编写一个重新布局函数,将上一局的所有记录数据恢复到初始状态,在调用this.repaint()方法,实际上调用前面的paint()方法,进行初始化重绘
10.用红线画出五子连珠
在标题8判断输赢中,还例如是水平方向上的,分别记录五子连珠的左右端点的棋盘坐标,在调用drawLine画出红色判定线
提示:将含有代码的文件夹直接拷贝的到 src文件夹下,点击主函数类运行
分享到:
相关推荐
《五子棋游戏详解——基于Java的MVC架构实现》 五子棋,又名“连珠”,是一种流传已久的双人对弈策略游戏。在计算机领域,将这种经典游戏进行数字化,可以作为学习编程和软件设计的良好实践项目。本文将以一个使用...
《C++实现的五子棋程序详解》 五子棋是一种经典的双人策略游戏,深受玩家喜爱。在编程领域,实现一个五子棋程序不仅能锻炼编程技能,也是学习算法和逻辑思维的好方式。本篇文章将深入探讨由BrainDeveloper(蔡智聪...
《有简单AI的五子棋程序详解》 五子棋是一种经典的双人对弈游戏,深受广大编程爱好者和游戏开发者的喜爱。本文将基于提供的"有简单AI的五子棋"程序,深入探讨其背后的C语言实现、控制台界面设计以及简单的AI算法。 ...
尽管功能不全,但这种初步实现为未来改进和扩展提供了基础,如优化游戏算法、增强用户体验或增加更多社交元素。 【知识点详解】: 1. **Java编程语言**:作为项目的开发语言,Java具有跨平台性、稳定性和丰富的库...
《五子棋人机对弈系统详解》 五子棋人机对弈系统是一种常见的计算机程序,它结合了人工智能和游戏理论,使玩家能够与计算机进行互动对战。本项目基于VC++开发,旨在为初学者提供一个学习和娱乐的平台。虽然其算法...
《基于MFC实现的五子棋游戏开发详解》 五子棋是一款深受人们喜爱的智力游戏,它简单易学,却又充满策略性。在计算机科学领域,将这种游戏转化为计算机程序,是学习图形用户界面(GUI)编程和算法设计的一个经典实例...
【标题】:J2ME五子棋游戏开发详解 【描述】:J2ME(Java 2 Micro Edition)是Java平台的一个子集,主要用于移动设备和嵌入式系统的应用程序开发。这款五子棋游戏是基于J2ME编写的,设计简单,非常适合初学者学习和...
【五子棋Java实现详解】 在编程领域,五子棋是一种常见的练习项目,因为它涉及到基本的游戏逻辑、用户界面设计以及人工智能算法。这个“wuziqi-.rar_五子棋java”压缩包提供了一个简单的五子棋单机版程序,采用Java...
《VC++实现五子棋详解》 五子棋是一种古老而深受欢迎的棋类游戏,简单易学,却又蕴含丰富的策略性。在信息技术高速发展的今天,利用编程语言将其转化为电子版,不仅可以提升游戏体验,还能深入理解编程逻辑。本文将...
《VC实现的智能五子棋游戏详解》 在编程领域,尤其是游戏开发中,实现一个五子棋游戏是一项常见的练习,对于初学者来说,它既能够帮助理解基础的图形界面编程,也能涉及到人工智能的初步应用。本文将深入探讨一款...