- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
疯狂java实战演义-第1章 控制台五子棋
第1章 控制台五子棋
1.1 引言
控制台五子棋,顾名思义,就是在Java控制台运行的五子棋游戏,需要用户用键盘输入棋子的位置来进行游戏。
由于是在控制台下面运行的程序,所以并没有漂亮的游戏界面,与及鼠标操作等东西,只是在一片黑色控制台环境下进行游戏,游戏的可玩性并不高,似乎这并不是一个完整的游戏。虽然如此,但事实上,一个程序最重要的并不是界面,而是处理各种业务逻辑与数据的方法,只要掌握了核心的方法,掌握基础的知识,便更容易学习awt,swing等图形用户界面的编写,万变不离其宗,写起有操作界面的程序也会变得更加容易,更加随心应手。而本章的主要目的让读者掌握与理解Java编程的基础知识,因此,掌握本章五子棋的实现原理,对于学习以后的章节将会非常有帮助。作为本书的第一章内容,我们在本章中将使用最简单的方式来实现一个控制台五子棋游戏。
1.1.1 五子棋介绍
五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠 ,英译”Renju”,英文称之为”Gobang”或”FIR”Five in a Row 的缩写 ,亦有连五子五子连串珠、五目、 五目碰、五格等多种称谓。五子棋是两个人之间进行的竞技活动,由于对黑方白方规则不同,黑棋必须先行。五子棋专用盘为 15×15 ,五连子的方向为横、竖、斜。在棋盘上以对局双方均不可能形成五连为和棋。void initBoard(),这个方法用于初始化棋盘,开始新的游戏时,应该调用此方法,初始化出一个新的空棋盘。
void printBoard(),此方法用于在控制台输出棋盘,各方每一完一颗棋子后,由于棋盘上棋子的状态有改变,所以必须调用此方法重新输入棋盘。
void setBoard( int posX , int posY , String chessman ),posX与posY是新下棋子的x与y坐标,,chessman是新下棋子的类型(黑子与白子),每下完一颗棋子后,通过调用此方法把棋子设置到棋盘上。
String[][] getBoard(),返回棋盘,返回类型是保存棋盘的二维数组。
当我们需要初始化棋盘的时候,可以直接调用Chessboard的initBoard方法,我们需要考虑该方法需要实现的功能:初始化棋盘。由于我们将棋盘看作是一个二维数组,因此initBoard就需要帮我们去创建一个二维数组,创建二维数组可以使用以下代码。
代码清单:code\gobang\src\org\crazyit\gobang\Chessboard.java
Object[][] array = new Object[size][size];
for (int i = 0; i array.length; i++) {
for (int j = 0; j array[i].length; j++) {
array[i][j] = new Object();
}
}
以上代码创建一个固定大小(一维与二维大小)的二维数组,再通过嵌套循环为数组中的每一个元素进行赋值。在游戏中如果我们进行了下棋的操作,可以直接改变这个数组的某一个元素值。在创建Chessboard类时,我们就需要发挥面向对象的思维,在我们的程序中,所有看到的或者想的事物,我们都可以将其抽象成具体的某个对象,并赋予一定的属性与行为。在设计对象的过程中,如果有某些事物拿捏不准,不知如何设计属性或者行为,可以将其设计成接口或者抽象类。
Chessboard中提供了一个printBoard的方法用于打印棋盘,在本章中,我们就需要将棋盘数组打印到控制台中,因此该方法可以简单的调用System.out.print去打印相关的字符串。需要注意的是,由于printBoard方法是没有参数的,因此我们需要为Chessboard提供一个二维数组变量,当调用printBoard方法的时候,将对象内的二维数组打印,我们可以将Chessboard看作一个有状态的Java对象,有状态的Java对象可以理解成一个Java对象保存一些与该对象相关的状态属性,如果该对象没有保存与该对象相关的状态属性,那么我们可以将这个对象看成一个无状态的Java对象。
当外部调用Chessboard的setBoard方法时,就可以将某个值设置到Chessboard中的二维数组里,告诉Chessboard玩家或者“电脑”在某个位置下了怎样的棋子。
1.3.2 Chessman类
Chessman类是一个枚举类,此类是构造器私有的,不能直接创建,里面有BLACK与WHITE两个静态属性,代表黑子与白子枚举类,两个表态属性都是Chessman类型的,要获取棋子,则通过这两个属性调用以下的方法获取棋子:
String getChessman(),返回Stri
文档评论(0)