• 团队作业四

 


  • 项目简介:

  1、语言环境——java

    2、项目类型——单机版

  • 流程图:

  • 主要功能模块:

 

  • 设计思想:

(1)界面棋盘设计
   在对棋盘界面设计方面要考虑简洁友好,符合游戏者需求。棋子的设计方面系统中设置了两种棋子颜色,white或者black, 游戏者可自行选择。棋子怎样画出来,怎样使棋子按我们所想的方式来绘制出来是设计的主要难题。运行时要求当每次点击鼠标的时候就在点击鼠标的地方画一个棋子,所以得定义一个棋子的类使点击鼠标时系统把棋子绘制出来。这样主界面里的棋子就确定了,而且也确定了几个所需要的类。可以先定义好这些类了。
有了以上的准备就可以把棋盘绘制出来了,下棋时每次在适当位置点击鼠标的时候就在所点击的位置上画出你这个角色的颜色,然后计算机会自动的下棋,计算机自动下棋要有一个控制变量来控制能不能下棋。人可以随意的下子,可是计算机就要计算在哪个位置下子了。这里由计算机下子的算法来确定,人人对战的话就不象单机游戏一样,要计算机来判断人下子之后计算机下那一个地方了,人人对战只要在双方下子的时候判断赢棋情况,当然还要同步的控制两个人下棋的顺序,这样的话就要用到线程了,各自都继承或实现线程类或接口,以便各自能随时单独控制接发消息。

(2)算法设计
   对于五子棋游戏,无论人机对战,还是双人对战,都需要判断棋盘上是否存在五子连珠情况,这既是游戏名字的由来,也是游戏结束的标志。判断五子连珠的原理是从横,竖,左斜线,右斜线4条线上判断是否存在5个相连的同类棋子。对战一方落子后,在该处向8个方向检测连续的同类棋子,如果检测到直线方向上存在5个连续的同类棋子(包含本位置棋子),则判断为“连五”并结束检测循环。基于检测结果,可以判断游戏是否结束,并根据获胜方的落子代码判断获胜方是谁。由于不考虑禁手问题,在实现“连五”过程中,我们可以考虑完成“双四”,“四三”,“双三”,“冲四”,“活三”,“活四”来实现目的: 

   活四:有两个点能形成“连五”的四就是活四;

   冲四:只有一个点能形成“连五”的四叫做“冲四”,或者叫做“单四”;    

   活三:己方在落一子就能形成“活四”的三叫做“活三”。“活三”分为“连活三”和“跳活三”。

   连活三:在棋盘某一条阳线或阴线上有同色三子相连,且在此三子两端延长线上有一端至少有一个,另一端至少有两个无子的交叉点与此三子紧密相连。

   跳活三:中间仅间隔一个无子交叉点的连三,但两端延长线均至少有一个无子的交叉点与此三子相连。

   双三:由于黑方走一着在无子交叉点上同时形成二个或二个以上黑方 " 活 " 的局面。

   双四:由于黑方走一着在无子交叉点上同时形成二个或二个以上黑方 " 四 " 的局面。

   四三:指某一方同时具备两个先手,其中一个是 " 四 " ,一个是 " 活三 " 。   

   在实现上面这些高级算法的时候,我们需要一个基础,就是对制定位置周围情况进行检测。在棋盘上面,棋子存在8个移动方向,检测时需要对每个方向进行检测。为了简单直观,这里将每步棋子的移动生成一个新的棋子。

(3)聊天功能

   此功能有助于增加游戏的趣味性和游戏者之间的互动。

(4)悔棋设计

   增加此功能可以提高游戏的可操作性,避免因为不小心操作而草草结束游戏。

 

  • 项目任务分工:

1.棋盘风格设计,游戏声音采集(网络资源),功能设计。(马婧婧

2.逻辑功能实现以及代码编写(两人队友)。(周兴荣、王长

3.代码审查,以及测试。(李遇塘

4.游戏推广,以及收集试用建议进行汇总。(朱玲杰

  • 燃尽图:

  • 项目总结:

   项目开展到现行,还有接近五分之一的工作没有完成,在这个过程中,遇到了大大小小很多的问题;在队友之间的相互帮助、相互配合、合作下,一个一个的去解决问题;在网络上查找大量的资料,自学不会但要用到的知识,我们都觉得在这个项目开展以来学到了很多的东西。希望在接下来的时间里,再接再厉,共同努力帮项目完成好。