`
bigfang
  • 浏览: 40263 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

java的第一个程序——五子棋

阅读更多
   今天,终于完成了五子棋之人人大战的大部分设想,真是有点艰辛。虽然,这个程序还有很多可以改进的地方。
一、项目背景、功能说明
   五子棋的棋盘规格:15*15,这里的15指的是线的条数。可以两个人对弈。界面未做大量修饰,只有“重新开始”一个按键。默认黑方为先下方。另外加了几个效果,给最后一个下的棋子做十字的标记;当鼠标移到已经下好的棋时,会显示一个不可下棋的标志;鼠标在棋盘上移动,也会有一个框框的显示。
二、项目特点
   加了一些画图标记的效果,就是上文功能中介绍的,鼠标移动;最后一个棋子标记;当鼠标移动到已经下的棋时,显示不可下标记。其实,还有许多需要改进的地方。如机器下棋算法,由于本人对五子棋的研究一般般,所以,也没有写人机大战,觉得那个算法有点难。可改进的功能还有对下棋过程做保存,应该可以用队列来做存储。悔棋可用栈来保存。
三、学习总结
   此次,五子棋是第一个几百行的java程序。通过这次训练,对java中的swing组件,有了进一步认识;对多个监听器的使用,也有了一点了解,尝试了写成内部类,还有将鼠标类都写在一个新的类内;巩固了值传递和引用传递;也出现了,多个类之间传值,两个类互相之间传对象的错误。
   由于,之前写过C语言的五子棋,所以,大致框架都有所了解。不同的是前者由键盘控制,后者用鼠标控制,还有swing组件,监听器等等。
   因此,前期,对于下棋和五个子的判断,没有什么大的问题。主要是没有养成将程序分模块写的习惯。几乎所有功能语句,都写在一个类里。这使得程序很长,给修改和阅读带来不便。除了逻辑方面的问题,还有监听器的使用,内部类、非内部类和多个类之间多个属性的传递。目前,对多个类的结构关系,这方面的经验非常匮乏。
   另外,这次对数组和棋盘的坐标做了一下研究和比较。两者的横、纵坐标正好相反。完成程序时,选择一种即可,否则会混淆,影响后面的判断。
   后半段时间,主要用在前面所说的画图效果上。完成总体的设计框架之后,再完成其中小部分具体的内容,若同时处理,则很容易产生混乱,导致错误。理清各个画图次序之后,就可以实现了。其中也涉及到了两个鼠标监听器的值的先后次序,MouseListener和MouseMotionListener之间的公共值,当在一个监听器内改变后,另一个监听器何时改变。
四、展望 
   通过这个五子棋程序,对swing组件,动作监听器,鼠标监听器有了一些了解,对java的语法也有了一些巩固。总体来说,这个程序没用什么复杂的数据结构,只使用了最普通的数组。自己的思维和处理很多类的能力,都需要进一步提高。对基础知识的掌握也不是很深刻。



                  不可下棋的标志&&最后一个棋子做标记


                  鼠标移动的符号&&最后一个棋子做标记


                           黑方获胜
  • 大小: 36.7 KB
  • 大小: 39.3 KB
  • 大小: 39.3 KB
分享到:
评论

相关推荐

    大一下人工智能程序设计课程大作业——五子棋.zip

    2. **游戏规则**:理解五子棋的基本规则是项目的第一步,包括棋盘尺寸(通常是15x15或19x19)、棋子颜色(通常为黑白两色)、合法落子位置以及连五获胜的条件。 3. **游戏状态表示**:用二维数组或数据结构来表示...

    java源码包---java 源码 大量 实例

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    安卓Android源码——人机五子棋项目源码.zip

    9. **版本控制与发布**:项目的版本号“Five0.1”可能表示这是项目的第一个版本,表明了软件工程中的版本控制实践,如Git的使用,以及APK的打包和发布流程。 通过这个项目,开发者不仅可以学习到Android应用的基本...

    Java 项目-java的JAVA五子棋手机网络对战游戏的设计与实现.zip

    【标题】: "Java 项目——JAVA五子棋手机网络对战游戏的设计与实现" 【描述】: 这个Java项目专注于开发一个基于网络的五子棋手机游戏,允许玩家在线进行实时对战。它利用Java语言的强大功能,结合网络编程技术,为...

    java课程设计-五子棋

    本项目是一次Java程序设计课程设计,主要目标是开发一个Java小游戏——五子棋。项目由湖北商贸学院人工智能学院的学生付伟完成,指导教师为胡峡进。该项目旨在通过实际操作提升学生的编程技能,特别是Java语言的应用...

    老铁互怼五子棋demo.zip

    描述指出,该程序基于Java语言开发,原本是“JAVA联机版五子棋——源码(一个类一个main暴力开发)”,并且已经通过某种方式转换为可以在装有Java环境的Windows操作系统上直接运行的exe格式。压缩包中的唯一文件 ...

    java源码包2

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    第24项目:五子棋游戏.zip

    本项目“第24项目:五子棋游戏”就是一个很好的实例,它提供了一个完整的Java小游戏——五子棋,旨在帮助学习者深入理解和应用Java编程语言。该项目包括了视频教程、游戏素材以及源代码,为初学者提供了全方位的学习...

    java源码包3

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该...

    Socket项目案例-五子棋

    在本项目案例中,我们关注的是一个基于Java开发的小游戏——"五子棋",它利用了Socket技术来实现网络对战功能。Socket是网络编程中的一个重要概念,它允许两个远程计算机之间进行通信,为应用程序提供了低级别的网络...

    Android应用源码之FiveChess五子棋-IT计算机-毕业设计.zip

    一个标准的Android项目通常包括以下几个部分:`AndroidManifest.xml`(应用程序配置文件)、`java`目录(包含应用程序的Java源代码)、`res`目录(存放资源文件,如布局、图片、字符串等)、`assets`目录(存放原始...

    java源码包4

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    JAVA上百实例源码以及开源项目源代码

    多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该...

    Java实战入门[一个资深Java培训老师倾力收藏].pdf

    在第一章“基础入门”中,首先讲述了Java的发展故事,之后逐步介绍了Java开发环境的配置方法以及编写第一个Java程序。书中还涉及了Java中的基本数据类型,包括数值类型、字符类型和布尔类型,这些都是编程中最基础的...

    合肥工业大学Java作业4.zip

    Java GUI(图形用户界面)是Java编程中的一个重要组成部分,它允许开发者创建交互式的、视觉吸引人的应用程序。在Java中,GUI主要由Java AWT(Abstract Window Toolkit)和Swing库提供支持。AWT是Java早期的GUI库,...

    Java项目开发与毕业设计指导

    Ch01:俄罗斯方块游戏的实现 安装JDK,并正确配置环境变量(如果有疑问,可以参考任何一本java入门书籍)。打开Eclipse(可以到http://www.eclipse.org/现在官方...具体程序执行过程可参见本书第12.5.3计算过程一节。

Global site tag (gtag.js) - Google Analytics