您的位置:首页 > 编程语言 > C语言/C++

五子棋 C++

2014-08-07 18:53 363 查看
下午在开源网上看到一个用c语言写的五子棋的程序,于是想着自己也写一个。一来练习练习基础,二是上次写的贪吃蛇中,类和类之间的通讯方式采用的是依赖关系,但总感觉那样做各个类之间的独立性还不是太好,正好可以拿这个试试。其实上次的贪吃蛇中可以见到观察者模式的影子,只不过通常的观察者模式中有多个观察者,而那里只有一个观察者。五子棋的结果表明,类与类之间采取组合的方式更有效(至少在这里是这样的)。

五子棋编程中的重点是如何去判断四个方向上五子是否连成线。这里的思想是,以玩家当前放下的棋子为中心点,依次从四个方向上去判断。对于其中某个方向,比如水平方向,假设玩家放下的棋子的坐标为(x,y),则判断方法为:从点(x,y-4)开始,一直到点(x,y),看这五个点是否连成线,否则判断从点(x,y-3)一直到点(x,y+1)是否连成线,以此类推,如果从(x,y-4)到(x,y+4)这九个点中都没有连续的五个点连成线,说明水平方向上找不到五点成线。其他三个方向也可以按这种方式去判断。当然这里实现了对错误输入的处理。源代码见这里



补充一个从键盘上获取特定类型的数据方法:

int a,b;
cin>>a>>b;
while(cin.fail())
{
cout<<"input error"<<endl;
cin.clear(); //清除fail状态
cin.sync(); //清除缓冲区
cin>>a>>b;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息