第1章 控制台五子棋
1.1 引言
控制台五子棋,顾名思义,就是在Java控制台中运行的五子棋游戏,需要用户用键盘输入棋子的位置来进行游戏。
由于是在控制台下面运行的程序,所以并没有漂亮的游戏界面以及鼠标操作等东西,而只是在一片黑色的控制台环境下进行游戏,游戏的可玩性并不高,似乎这并不是一个完整的游戏。但事实上,一个程序最重要的并不是界面,而是处理各种业务逻辑与数据的方法,只要掌握了核心的方法,掌握了基础的知识,便很容易学习AWT、Swing等图形用户界面的编写,万变不离其宗,写起有操作界面的程序也会变得更加容易,更加得心应手。而本章的主要目的是让读者掌握与理解Java编程的基础知识,因此,掌握本章五子棋的实现原理,对于学习以后的章节将会非常有帮助。作为本书的第1章内容,我们将使用最简单的方式来实现一个控制台五子棋游戏。
1.1.1 五子棋介绍
五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。五子棋是一个比较大众化的棋类游戏,其玩法与规则如下:
五子棋是两个人之间进行的竞技活动,对黑方和白方规则不同,黑棋必须先行(本章中黑棋与白棋的规则一样,但一样由黑棋先下)。
五子棋专用棋盘大小为15cm×15cm,五连子的方向为横、竖、斜。
在棋盘上以对局双方均不可能形成五连为和棋。
首先形成五连子的一方为赢。
五子棋必须由两方进行游戏,当某一方按照一定规则连成五个棋子的时候,该游戏方就胜利,在本章中,我们并不需要做到对战形式的,可以设计一个简单的“电脑”来做我们的对手,当我们下完棋后,这个简单的“电脑”就随便在棋盘中下一步,当然,如果想做更强大的“电脑”,我们可以通过编写程序来实现,当我们下棋的时候,这个“电脑”就对我们所下的棋子进行检测,并将棋子下到最恰当的位置。本章的主要目的是展现五子棋的实现原理,如果读者有兴趣,可以自行开发强大的“人工智能电脑”来进行游戏。
1.1.2 输入输出约定
玩家必须以(x,y)的方式输入棋盘的坐标,其中,x代表横坐标,y代表纵坐标。x与y的值必须是1到N(棋盘的大小)之间的整数。
系统询问玩家是否继续游戏时,玩家输入y是代表继续,输入其他则代表退出游戏。
“●”代表黑子,“○”代表白子。当玩家以(x,y)的形式输入下棋的坐标后,游戏程序就可以根据玩家所输的坐标将棋子放置到棋盘中。我们可以将棋盘看做一个二维数组,填充着棋盘式的标志(“十”),玩家下棋后,就用棋子替换原来的标志,最后再次提示玩家进行下棋操作。由于本章是在控制台中进行打印,因此只需使用System.out.println即可,如果需要实现有界面的五子棋,例如使用Swing或者AWT,可以使用相应的方法,将二维数组“画”到界面中。因此,不管是使用Swing、AWT还是其他界面技术,五子棋的实现原理都大同小异。