- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
五子棋的开发.doc
五子棋的开发
摘要:利用Java语言软件开发的一个界面简洁、直观、实用性功能比较高的五子棋游戏。主要完成了玩家之间对战功能。客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息。
关键词:深度搜索;估值;五子棋
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)29-6555-02
五子棋是“棋类游戏”,棋盘与围棋相同,两人对局,轮流下子,将五子连成一行者为胜(横、竖或斜)。五子棋的名称:日文亦有“连五子、五子连、串珠、五目碰、五格、五石、五联、京棋”等多种称谓。
1 程序设计思想
要实现五子棋的游戏功能,必须先有一个棋盘,通过继承JPanel,然后在JPanel上画出一个16*16的棋盘。对于下棋的操作,通过对JPanel增加鼠标事件监听器MouseAdapter,每次当用户点击鼠标时,先取得点击的坐标值,然后取整得到一个对应棋盘的最近的一个坐标值。判断该坐标是否在棋盘之外,在棋盘之外则不作任何处理,如果不是,记录下该坐标值以进行下一步操作。判断该位置是否已有棋子,没有的话用类GraphicPanel画出棋子,并记录下棋盘的状态。判断该颜色棋子的上下左右是否满足连续五个,是的话提醒相应玩家获胜,不是的话,更换玩家,监听事件处理结束。对于玩家的更换是程序自动的,每次用户点击鼠标后,都会变换玩家,从而画出对应黑方白方的棋子供玩家查看。
控制模块的判定:整个游戏设计最为关键的控制模块为判定执行玩家操作下棋子模块,它也是游戏的核心部分,它是通过准确的判断,几个棋子相连,再执行下一步操作。
其代码如下:
public boolean wasWin(){return wasWinAtV()||wasWinAtH()||wasWinAtLD()||wasWinAtRD();}
private boolean wasWinAtV(){char ch=isBlack?@:O;int i=boardX;
while(i=0 allChess[boardY][i]==ch){ i—;} int num=0; i++;
while(i=5; }
private boolean wasWinAtH(){char ch=isBlack?@:O;int i=boardY;
while(i=0 allChess[i][boardX]==ch){ i—;} int num=0;i++;
while(i=5;}
private boolean wasWinAtLD(){ char ch=isBlack?@:O;int i=boardY;int j=boardX;
while(i=0 j while(i=0 allChess[i][j]==ch){num++; i++; j—;} return num=5;} private boolean wasWinAtRD(){char ch=isBlack?@:O;int i=boardY;int j=boardX;
while(i=0 j=0 allChess[i][j]==ch){i—;j—;}int num=0;i++;j++;
while(i=5; }
2 给鼠标添加监听事件
在游戏过程中,我们利用鼠标所发出的信息了解玩家的意图,进而作出相对应的动作。在窗口的软件中,鼠标的应用是不可或缺的,但鼠标固然好用,如果程序设计不当,也可能造成使用者的不便。通常鼠标在软件的应用上经常使用MouseAdapter事件[2,3]来作为确定使用者的操作意图,判断鼠标是否点击在有效位置,点击的位置是否已经有棋子,通过判断再执行下一步操作,关键代码如下:
addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent e) {
int button=e.getButton();if(button!=MouseEvent.BUTTON1){return; }
int x=e.getX();int y=e.getY(); if(x LEFT_BORDER+(COL_NUM-1)*COL_GAP+RIGTH_BORDER/2|| yUP_BORDER+(ROW_NUM-1)*ROW_GAP+DOWN_BORDER/2){
ChessBoard.label.setText(无效!);
return;}
int boardX=Math.
原创力文档


文档评论(0)