我的五子棋小游戏
心得与产品简介:
经过半个月的基础学习,已近从什么都不懂的“JAVA盲”到现在可以做出自己的第二个小程序——简易五子棋感觉非常棒。所以记录下来我在编程中遇到的困难也好收获也好,可以在更久学习后回头看下现在青涩的我。
在做五子棋游戏之前我第一个实现的是简易的画板,功能很简单,但是给接下来的五子棋开发打了不少基础。
以前玩人机游戏从来没有想过电脑是怎样算的,更不用说去想一个游戏是怎样开发出来的。这次是算初步体验这种设计乐趣了。
在简易五子棋中主要实现了人机对战,在用户放置一颗棋子后通过计算周围黑白子赋予的不同的权值相加然后判断权值大小。当然电脑会将它的棋子放在权值最大的地方。电脑通过不断地计算和人脑来博弈,使游戏变得有趣味。
使用到的技术与问题解决:
既然是技术方面那就需要用稍微专业一些的描述了。
1初始化界面。在程序编程初期,并没有使用到图片,其中棋盘和棋子是通过类似做画图板的方法在窗口上绘制出横竖格与黑白实心圆。在这一部分中设置界面是大部分继承JFrame中的组件,棋盘是通过画布传给界面,棋子则是由其后的监听器来实现在界面上的显示。
2监听器与重绘。这是我在编程中遇到的第一个小麻烦。因为当窗口最小化再放大后界面上的东西就会全部被抹去,而解决这个问题的最好方法就是通过重绘来实现。棋盘的重绘就是将画布传入重写的窗体父类,稍微麻烦的是棋子。因为棋子的个数有最大值,所以用一个二维数组就可以解决。在数组中一个存放棋子的坐标,一个存放棋子的颜色,然后传入重绘部分。
3在指定位置放子与常量的初始化。这一部分难度不大,主要是考虑到允许点击误差,比如用户不能非常精准的点到棋盘格子的交叉点那么需要给一个小圆圈的范围内点击有效。还有就是常量的初始化,这一部分可以自建一个类,其后其他程序只需创建一个接口就可以使用其中定义的量,此方法的优点就是在以后程序需要修改这些量时只需在这个类中修改就可以实现对全局的修改,简单方便出错率小,是非常好的习惯。
4算法部分。这一部分是我在这个程序中遇到的最大的麻烦。分为两种,一是怎样判断输赢也就是五子连珠,其二是怎样在用户落子后电脑相应落子。五子连珠主要思想是遍历找到四个方向颜色相同的棋子每找到一个自加一次直到五个然后显示输赢。而人机对战部分主要是通过将电脑下的棋子和用户的棋子绑定,也就是说每当用户下一颗等于下了黑白两颗而白色棋子是计算不同的权值大小然后将棋子放在权值大的地方实现的。
5界面优化。这一部分简化了初始化界面时绘制棋盘和棋子,只需要将下载好的图片按照路径传给画布,然后计算好放子的交叉点就可以将原来看似丑陋的界面做的有模有样了~
后期拓展:
完成这个简易五子棋当然十分激动,但是兴奋过后有了更多的思考——如何将这个游戏做的和生活中游戏公司推广的那样。比如,有悔棋功能,选择难易程度的功能,保存棋局的功能,甚至做到可以在线人人对战呢?完成一个程序不难,但是难的是如何去完善和优化它,这需要我们培养很多方面的品质,不仅仅是技术方面。所以对于未来的学习我充满期待,接下来我想不断地完善我的五子棋小游戏,可以多录入几种开局情况,让我的“机器人”变得更加厉害!加油了~
分享到:
相关推荐
求1+2!+3!+...+20!的和 利用递归方法求5!...请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母 求100之内的素数 对10个数进行排序 求一个3*3矩阵对角线元素之和
这个小程序涉及到的基础知识点有:Java的基本结构(`public class`, `main`方法),字符串对象的使用(`System.out.println()`),以及如何运行一个Java程序。 2. **数字猜谜游戏**: 在这个程序中,用户将尝试猜测...
根据给定的文件信息,我们可以总结出以下关于Java编程语言中的日历程序的关键知识点: ### 一、程序功能概述 这段代码实现了一个简单的日历程序,可以计算指定年份和月份的日历布局,并打印出相应的日历。主要功能...
Java小程序,作为初学者入门的重要资源,集合了各种基础概念和编程技巧,旨在帮助新手快速理解和掌握Java语言。这些小程序涵盖了从基本语法到面向对象编程的各个层面,为学习者提供了一个实践和巩固理论知识的平台。...
在编程领域,尤其是在Java语言的学习过程中,矩阵乘积是一个经典的算法问题,对于初学者来说具有重要的...总之,通过解决“JAVA初学小程序:矩阵乘积”这样的实验题目,你可以逐步提升自己的编程能力和解决问题的能力。
Java图形用户界面(GUI)是Java...这两个小程序是学习Java GUI编程的基础示例,对于初学者来说,它们可以帮助理解如何创建和布局组件,以及如何处理用户交互。通过这些基础,开发者可以进一步构建复杂的桌面应用程序。
通过嵌套两个`for`循环,第一个循环控制行数,第二个循环控制列数。在每个循环内部,计算乘积并打印结果。这个程序演示了如何使用嵌套循环结构来生成复杂模式的输出。 这些经典小程序覆盖了Java的基础概念,如输入/...
本项目旨在通过Java Swing库创建一个具有图形用户界面的小程序。该程序包含了一个主窗口,其中设有“文件”与“图形”两个菜单栏,以及一个下拉列表用于选择颜色。此外,用户可以通过选择不同的菜单项在窗口下方的...
- **标题**:“Java小练习,Java练习小程序,Java必用”表示这是一系列针对Java初学者的练习题目。 - **描述**:“50java小练习 java小练习,Java练习小程序,Java必用”进一步强调了这些练习的重要性,并指出了练习...
Java小程序是初学者入门编程时常见的实践项目,用于巩固基础语法和编程逻辑。在这个压缩包中,包含了几个经典的Java编程示例,可以帮助学习者更好地理解Java语言的基本特性。以下是每个程序的简要介绍: 1. **百匹...
本篇文章将详细讲解一个简单的Java计算器小程序,它可以帮助初学者理解基本的Java语法和控制流程。 首先,让我们从程序结构入手。一个简单的Java计算器通常包含两个主要部分:用户界面(UI)和业务逻辑。在这个例子...
在Java编程中,创建一个图形化界面的计算器加法小程序是一项常见的练习,它涉及到Java Swing库的使用,事件处理和基本的算术运算。以下是对这个主题的详细解释: 首先,程序的核心是创建一个GUI(图形用户界面),...
## Java初学者习题集知识点概述 ### 第1章 Java语言快速入门 #### 简答题知识点 1. **面向对象与面向过程的区别** 面向对象是一种编程范式,将数据和功能封装到对象中,以对象为中心;而面向过程则以过程为中心...
第二个小程序名为"LeapYear",其功能与第一个相似,但代码结构略有不同。这里同样使用了`Scanner`类获取用户输入的年份,并根据闰年规则进行判断。代码如下: ```java import java.util.Scanner; public class ...
6. **变量的作用域**:在实验的第二部分,通过KY2_2.java程序,展示了变量的作用域规则,即变量只能在其声明的区域内被访问。理解这一点对于避免编译错误至关重要。 7. **关系和逻辑运算符**:在KY2_3.java程序中,...
第二个面板包含IP地址输入框、端口号输入框等。 5. **事件处理**: - 按钮点击事件通过实现匿名内部类的方式处理,例如发送消息、断开连接等操作。 - 文本框输入事件也通过类似方式处理。 #### 三、关键技术点 ...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
### 第一个Java程序知识点解析 #### 一、Java程序的基础结构与HelloWorld示例 - **基础结构**:Java程序的基础单位是类(`class`),每个类中至少包含一个主函数(`main` 方法)。Java是一种面向对象的语言,因此...
第二个程序涉及到了“水仙花数”的概念。水仙花数是指一个三位数,其每个位上的数字的立方和等于这个数本身。程序通过一个for循环遍历101到999之间的所有三位数,计算每个数的百位、十位和个位的立方和,如果相等,...
习题集内容覆盖面广,包括:Java言的基本常识、基本语法、面向对象的基本概念、数组、字符串、异常处理、文件和数据流、图形用户界面设计、小应用程序、线程、编程规范、网络程序设计、多媒体民图形学程序设计以及...