Java Applet实现五子棋游戏
从谷歌的AlphaGo到腾讯的绝艺,从人脸识别到无人驾驶,从谷歌眼镜到VR的兴起,人工智能领域在不断的向前迈进,也在不断深入的探索。但背后错综复杂的技术和利益成本也是很多企业亟待解决的难题。对于人工智能,我们可能还帮不上什么忙,但我相信以后的人工智能技术会越来越开源,也会提供给我们便捷开发的接口。由围棋大战引发的思考才是我们今天的主题,我们今天是利用Java Applet窗口应用程序来实现五子棋的一个小游戏,最基础的一个版本,主要回顾一下Applet的应用以及Graphics画图技术。
首先,我们先来看一下运行结果的预览图:

第一眼看上去是不是觉得很多元素,不太好下手,其实右边的按钮和和其他的文字都是背景图片自带的,只有中间的纵横线和棋子是我们画上去的,而且托朋友@郑宇轩多做了几张图,点击右上角的换肤按钮可以实现换肤效果,游戏设置可以设置游戏时间,下方有分别针对黑方和白方的计时器,哪一方的规定时间一到如果还没落子就算输。顶部有本轮该谁的信息提醒。
一、需求分析
要想实现这样一个功能其实也不难,其实就是一张背景图,上面有各种按钮,我们可以通过获取鼠标坐标来设置点击事件,至于棋盘的格子,我们可以采用Graphics画图就是了,包括棋子也是,时间的计算就以落子开始以秒为单位向下递减。5子连一线有多种情况,横连,竖连,左45度斜连,右45度斜连,同样可以根据坐标位置来判断,我们开始就可以定义一个数组,分别记录每一次黑白落子的坐标位置。基本的功能也就这些,我们这里就不考虑国际规定的禁手规则了。
二、开发
1.首先定义一个类OperatorPane,这个类用来布置整个布局,包括画棋盘棋子什么的,判断几种连法,时间的设置等。如下图:

我们需要建一个存放背景图片的文件夹,如下图:

接下来,我们写个测试类GomokuGrame,导入我们刚刚定义的布局类。

三、测试
接下来我们就开始运行程序,如下:

好玩吗?今天就到这里了,主要是关于Applet窗体应用程序和Graphics画图的一些技术的使用,都是一些基础的东西,主要是先理清这里面的逻辑思维,明白了需求再下手,一切就都变的很清晰,很明朗。
如果您对本文观点有什么异议,欢迎您的留言,我们一起交流!
Java Applet实现五子棋游戏的更多相关文章
- JAVA课程设计+五子棋游戏
1. 团队课程设计博客链接 http://www.cnblogs.com/yzb123/p/7063424.html 2. 个人负责模块或任务说明 1.在同伴构建好初始框图的情况下,编写一个继承JPa ...
- 关于五子棋游戏java版
一 题目简介:关于五子棋游戏 二 源码的github链接 https://github.com/marry1234/test/blob/master/五子棋游戏 三.所设计的模块测试用例.测试结果 ...
- java 五子棋游戏
五子棋游戏 一,1.五子棋的基本常识 与任何一种竞技棋一样,五子棋的每一局棋也分为三个阶段:开局,中局和残局. 五子棋的开始阶段称为开局,或称布局.其开局阶段是十分短暂的,大约在七着与十几着之间.在这 ...
- java swing 双人五子棋源代码
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Toolkit; impo ...
- 自定义View实现五子棋游戏
成功的路上一点也不拥挤,因为坚持的人太少了. ---简书上看到的一句话 未来请假三天顺带加上十一回家结婚,不得不说真是太坑了,去年婚假还有10天,今年一下子缩水到了3天,只能赶着十一办事了. 最近还在 ...
- Java—Applet
1 Applet的定义 Applet是Java语言编写的,无法独立运行,但可以嵌入到网页中执行.它扩展了传统的编程结构和方法,可以通过互联网发布到任何具有Java编译环境浏览器的个体计算机上. 如下 ...
- The differences between Java application and Java applet
在Java语言中,能够独立运行的程序称为Java应用程序(Application).Java语言还有另外一种程序--Applet程序.Applet程序(也称Java小程序)是运行于各种网页文件中,用于 ...
- Java Applet与Java Application的区别
转自:http://www.educity.cn/java/500609.html 在Java语言中,能够独立运行的程序称为Java应用程序(Application).Java语言还有另外一种程序-- ...
- Java Applet使用
问题描述: Java Applet使用 参考资料: http://docs.oracle.com/javase/tutorial/deployment/applet/depl ...
随机推荐
- CoreData和FMDB你用哪个?
概括: 我们先说说这两个东西,CoreData 和 FMDB,其实就我自己而言觉得这两个都不错,刚开始是接触FMDB的,CoreData是工作后自己看的.苹果推荐开发者去使用CoreData,但 FM ...
- python实现多变量线性回归(Linear Regression with Multiple Variables)
本文介绍如何使用python实现多变量线性回归,文章参考NG的视频和黄海广博士的笔记 现在对房价模型增加更多的特征,例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为( x1,x2,..., ...
- Java 去除 ArrayList 集合中的重复元素
// One practice package Collection; import java.util.ArrayList; import java.util.Iterator; // 去除 Arr ...
- apache的用户认证
1. 限制用户访问的方式: 1. 限制访问服务的客户端主机 2. 需要用户名和密码 2. 行为用户验证需要两步: 1. 创建一个包含用户名和密码的文件 2. 服务器上的哪些资源需要保护,哪些用户可以进 ...
- 为什么使用enable_shared_from_this——shared_ptr两类错误
在使用C++实现弱回调时,订阅者应当维护一系列发布者的weak_ptr,而发布者注册回调时要传出this的shared_ptr指针,流行的实现方法是使用std::enable_shared_from_ ...
- JS事件流理解
事件是用户或浏览器自身执行的某种动作,如click,load和mouseover都是事件的名字. 事件是javaScript和DOM之间的桥梁. 你若触发,我便执行--事件发生,调用它的处理函数执行相 ...
- RAID分类
1. RAID在数据库存储上的应用 随着单块磁盘在数据安全.性能.容量上呈现出的局限,磁盘阵列(Redundant Arrays of Inexpensive/Independent Disks, ...
- 关于开发中使用writeToFile时的注意事项
总会有一些坑在前面等着你 我们先来看一下后台返回的部分json数据,稍后再来分析问题,仔细看一下userId和userCode两个字段,其他不用看 "list": [{ " ...
- mvc关于三级联动修改时数据回显
在网上找了好久,都没有找到自己想要的那种效果,最后还是自己写出来了, 虽然方法有点笨. 这是Controller里 public ActionResult Edit(string id) { //查询 ...
- Kubernetes运维生态-cAdvisor分析
Kubernetes的生态中,cAdvisor是作为容器监控数据采集的Agent,其部署在每个节点上,内部代码结构大致如下:代码结构很良好,collector和storage部分基本可做到增量扩展开发 ...