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