当前位置: 首页 > news >正文

有声阅读网站如何建设网络推广营销培训机构

有声阅读网站如何建设,网络推广营销培训机构,网站建设 试题,bugku中网站被黑怎么做简介 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端…

简介

五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。

在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。

点此免费下载源码+论文:https://download.csdn.net/download/inchat/87554834

在这里插入图片描述

程序结构说明

通过 Java Application,要实现网络对战,故采用C/S模式编写,程序包含7个独立的类文件-ChessWZQ.java、Group.java、Message.java、Player.java、ServerOneClient.java、Server.java、BoardPanel.java。

其中BoardPanel.java主要负责棋盘的初始化,鼠标事件的处理,以及判断胜负条件。ChessWZQ.java定义了面板上的其他元素,包括玩家列表,标题栏等。也包括了事件处理和人工智能。ServerOneClient.java则负责网络对战的处理。其他的类都是又这3个主类延伸出去的。在具体实现的时候再介绍其作用。见图。

在这里插入图片描述

棋盘及棋子的类

棋盘具体代码如下:

String line = "a b c d e f g h i j k l m n o";
char [] rowNum1 = {'1','2','3','4','5','6','7','8','9'};
char [] rowNum2={'1','0','1','1','1','2','1','3','1','4','1','5'};

这部分为棋盘的边界标识符,是必须要有的。用字符数组存储,最后确定位置放上去即可。

棋盘的绘制:

private static int xp;           // 棋子 X坐标private static int yp;           // 棋子Y坐标public void paint(Graphics gc){super.paint(gc);//this.setBackground(Color.gray);//this.invalidate();gc.setColor(Color.blue);//gc.setColor(new Color(255, 255, 240));//画横向标识符gc.drawString(line,25,15);// 画竖向标识符for(int i=0;i<9;i++){gc.drawChars(rowNum1,i,1,10,35+i*30);}for(int i=9,j=0;i<15;i++,j+=2){gc.drawChars(rowNum2,j,2,10,35+i*30);}// 画棋盘for (int i = 0; i < 15; i++) {gc.drawLine(30, 30 + i * 30, 450, 30 + i * 30); //行gc.drawLine(30 + i * 30, 30, 30 + i * 30, 450); //列}gc.drawLine(25, 25, 455, 25);gc.drawLine(25, 25, 25, 455);gc.drawLine(25, 455, 455, 455);gc.drawLine(455, 25, 455, 455);//面板初始化for(int i=0;i<15;i++){for (int j = 0; j < 15; j++) {xp=16+i*30;yp=16+j*30;if (board[i][j] == 1){gc.setColor(Color.black);gc.fillOval(xp,yp,28,28);//gc.drawImage(black, 16 + i * 30, 16 + j * 30, this);}if (board[i][j] == 2){gc.setColor(Color.white);gc.fillOval(xp,yp,28,28);//gc.drawImage(white, 16 + i * 30, 16 + j * 30, this);}}}}

确定下子的坐标(xp,yp)画特定大小的椭圆,这里的坐标指棋子相对棋盘的绝对坐标。

private static int xp;           // 棋子 X坐标
private static int yp;           // 棋子Y坐标if(col==1) g.setColor(Color.black);else g.setColor(Color.white);g.fillOval(xp,yp,10,28,28);

胜负判断条件

要判断四个方向,横向、竖向、以及2个斜向。思想还是比较简单,相同颜色连成五子即胜利,网上有些网友评论说完整的判断胜负条件包括连五和活四,我觉得完全没必要,活四还要检查两边的棋子,虽然运算量不大,但五子棋的标准就是连五即胜,一步之差,我们既要遵守规则,也要简化代码实现尽完整的功能。

我们要事先建立一个盘面数组board[ ][ ],即棋型表,数组的每一个元素对应棋盘上的一个交叉点,用‘0’表示空位,‘1’表示黑棋,‘2’表示白棋。由于代码太多,下面给出了一般状况的判断胜负函数,及以坐标(x,y)为中心的9X9矩形,只能在棋盘的内部,如果超过棋盘,就要另外考虑。下面的代码就是一般情况,整个矩形在棋盘内部的时候的判断胜负条件,如图。

在这里插入图片描述

胜负判断条件以下为X方向的代码:

protected boolean judge(int x,int y,int clr){int i=0,j=0,count=0;// x方向for(i=0,count=0;x-i>=0&&i<5;i++){if (clr==board[x-i][y]){count++;}else{break;}// System.out.println("( "+x+" , "+y+" )"+"count = "+count);if(count==5)return true;}for(i=1;x+i<15&&i<5;i++){if(clr==board[x+i][y]){count++;}else{break;}if(count==5)return true;}return false;
}

为保证公平,先下子的就有禁手。但是我们一般没有这个规则限制,都是轮流先下子。理论上是这样的。但很多专家表明,先下子有很大的几率获胜,即使有禁手,先下子的一方还是有很大的优势,我觉得对于我们一般玩家而言,这些规定可以不考虑。

判断胜负的不管是单机还是玩家相互游戏,都必须开服务端,因为判断胜负是放在里面的。如果有一方获胜,弹出提示框,如果确认则清空棋盘继续新游戏。

public void getVictory(Message msg){JOptionPane.showMessageDialog(null,"You  Win  The  Game","Congratulations",JOptionPane.INFORMATION_MESSAGE);//继续新游戏label3.setText("Player2");newGame();}

需要注意的一点是落下的棋子如果离任何一方的边界小于4,则以边界为限制判断是否有一方获胜,这样的话也要考虑多种方向,但原理还是和基本情况是一样的。

点此免费下载源码+论文:https://download.csdn.net/download/inchat/87554834

http://www.ds6.com.cn/news/38381.html

相关文章:

  • 国内自建站爱站权重
  • app开发制作平台网站建设如何自己搭建一个网站
  • 河南网站建设找哪家百度爱采购客服电话
  • 做视频网站的服务器长沙网络推广营销
  • 南水北调建设委员会网站百度收录排名
  • 官方网站minecraft网站自然排名优化
  • 驻马店网站建设新闻 今天
  • 做网站推广多少钱游戏推广员如何推广引流
  • 哪些香港网站不能访问手机百度提交入口
  • 建设移动门户网站西安seo外包优化
  • wordpress盈利模式大连seo外包平台
  • 产品展示网站系统东营优化公司
  • 阿瓦提网站建设竞价推广托管
  • 某商贸网站建设方案推广app赚钱
  • 薛城网站建设可口可乐营销策划方案
  • 沈阳餐饮网站建设草根seo视频大全网站
  • 廊坊网站建设维护推广普通话的意义50字
  • 动态网站开发实训目的网络推广都需要做什么
  • 网络设计概念北京seo外包公司要靠谱的
  • 网站作业代做青岛seo优化
  • 镇江网站开发公司锦州网站seo
  • 专做定制网站建设江苏网站推广公司
  • 一个网站开发的意义企业网络营销推广方法
  • 山西网站备案多久老鬼seo
  • 新建的网站 找不到了爆款引流推广软件
  • 株洲关键词seo优化服务商优化方法
  • 做公众号首图的网站上海网上推广
  • 网站代码查询google搜索引擎下载
  • 门户网站开发框架百度关键词优化技巧
  • 做网站经验十大门户网站