有没有能联机的五子棋怎么玩法介绍

您好, []|
QQ五子棋S60v5版上线:可联网在线对战
[导读]前言:进入智能手机时代,游戏就赋予了手机全新的定义。在公交车上,在马路旁,在卧室,在书房...随时随地的享受游戏的乐趣,在手机具备高速网络(3G/WLAN)后更是走入了千家万户。
腾讯科技讯 6月29日消息,除了震撼的游戏影音体验,手机玩家也十分期待一款具备简约清新界面,上手容易并且能够与朋友一同分享快乐的游戏。今天体验的,则是与之前过的QQ连连看、QQ象棋同系列的全新联网游戏—symbian V5 QQ五子棋,直接手机或电脑登录mg.qq.comQQ游戏大厅就可以体验了。五子棋谁没有玩过?规则简单要求较少,但是玩出创新,则是“QQ五子棋”的亮眼之处。传统手机五子棋大都为单机版本,无法逃脱程序的控制,即便可以实现联网,在线用户以及沟通交流都不甚理想。 “QQ五子棋”延续了双人对战以及基本的五子棋规则,并且可以按照无禁手、至少两盘、有禁手、三手交互和五手两打在内的多种模式分区,充分满足不同用户的游戏需求。观棋不语真君子,但是在与朋友相对博弈,则可以边下棋边聊天,多了一份嘘寒问暖,多了一份轻易沟通,“QQ五子棋”的聊天功能不会影响游戏流畅度,并且能够带来全新的对弈方式。由于不同的手机采用了不同的显示屏幕,所以对于屏幕较小手机,用户在下棋过程中就很容易出现误操作的情况,“QQ五子棋”S60v5版特别增加了“放大-确认”的下棋方式,充分体现人性化特色。配合清新的游戏界面以及舒缓的音乐,能够为下棋者营造出“安逸”的博弈环境,谁说世俗嘈杂,会让下棋变得不再清雅? 简简单单的五子棋,增加了网络对战,多区域选择,配合人性化的游戏模式,“QQ五子棋”S60 v5版带来了全新的游戏体验,让快乐更加容易获得,还在等什么,与朋友共同回味这份五子棋带来的快乐吧!
推荐微博:
[责任编辑:shulaiyang]
(请登录发言,并遵守)
如果你对科技频道有任何意见或建议,请到交流平台反馈。【】
新闻排行财经科普数码科技
Copyright & 1998 - 2018 Tencent. All Rights Reserved有没有厉害的对战平台【五子棋吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:39,716贴子:
有没有厉害的对战平台
腾讯的没对手了。两天就九段了,就输了一把
九段?来我们PK
五林大会啊
没了。LZ你上天吧。
你运气不错。。
和我下保证你胜率掉回50%
去五林大会。
贴吧热议榜
使用签名档&&
保存至快速回贴有啊!联众就有!注册就行!
其他答案(共5个回答)
里有禁一高手也很多的
失败?是什么意思?
首先,你要安装QQ游戏大厅
然后,安装QQ五子棋游戏
安装完成以后,打开大厅,五子棋
进入一个房间
初学者可以去普通房间
然后可以找个空位子...
脚本错误”形成的原因是因为访问者所使用的浏览器不能完全支持页面里的脚本,而且出现频率并不低。遇到“脚本错误”时一般会弹出一个脚本运行错误警告窗口,而事实上,脚本...
我估计你不是打不开网页,而是打不开上游的游戏大厅,一般防火墙软件中有个设置禁止或允许应用程序访问网络的选项,你看看是不是游戏大厅软件被禁止访问网络了,如果是的话...
复制就可以了
你可以重新下载再安装。
答: 阴虚火旺型
你最明显的是容易出汗,这是虚症最明显的,在饮食方面受不得太补也受不得太凉的。一定要注意。就是因为虚症,所以大便排出困难,再加上有湿症,自然觉得无精神...
答: 您好!下载完1.19版本的客户端后建议您手动更新到1.20-1.21版本的补丁包,感谢您的支持!
答: 新区后面有写新自己看.
餐饮业厨房产生的油烟,顾名思义,废气中主要污染物为油烟,一般采用静电除油。
液化气属较清洁能源,废气污染程度不高,主要含二氧化碳一氧化碳吧。
柴油属石油类,废气含二氧化硫和氮氧化物,二氧化硫碱液喷淋即可去除,氮氧化物主要以一氧化氮为主,要催化氧化成二氧化氮才能被碱吸收,造价成本非常高,一般的柴油发电机尾气难以治理,除非大型发电厂。
煤炭废气含二氧化硫多,一般常用的脱硫工艺即可。
如何洗衣服?也许有人会说,衣服谁不会洗啊?放到水里,加点洗衣粉洗就成了呗。是啊,说是这样说,可是洗衣服还有不少学问呢。我就说说我的“洗衣经”吧。
说起洗衣服,想想真有不少要说的呢。
首先要分开洗。内衣外衣、深色浅色要分开。个人和个人的衣物也尽量分开洗涤,这样可以防止不同人体间细菌和病菌的相互交叉感染,尤其是宿舍或者朋友的衣服尽量不要放置在一起洗。即使是自己的衣服,内衣和外衣也要分开洗。因为外衣接触外界的污染和尘土较多,而内衣将直接接触皮肤,为避免外界尘螨等对皮肤的不良入侵,内外分开洗涤是有科学道理的。不同颜色的衣物要分开洗涤,可将颜色相近的一同洗涤,浅色的一起洗涤,容易掉色的单独洗涤,避免衣物因脱色而损坏。另外,袜子和其他衣物不要一起洗涤。
其次,使用洗衣粉宜提浸泡一会。洗衣粉功效的发挥不同于肥皂,只有衣物适时浸泡才能发挥最大的洗涤效果。浸泡时间也不宜太长,一般20分钟左右。时间太长,洗涤效果也不好,而且衣物易褶皱。有人洗衣服时把洗衣粉直接撒在衣物上便开始搓揉洗涤,那样不能发挥最好的洗涤效果,对洗衣粉是一种浪费,当然,免浸泡洗衣粉出外。另外,冬季一般宜使用温水浸泡衣物。水温过低,不能有效发挥洗衣粉的洗涤效果,水温太高,会破坏洗衣粉中的活性成分,也不利于洗涤。
再次,衣物及时更换,及时洗涤。衣服要及时更换,相信道理大家应该都很清楚。可是,衣物换下后应该及时清洗,有人却做的不好。好多家庭喜欢将换的衣服积攒起来,每周洗一次,这样很不科学,容易使衣物上积聚的细菌大量繁殖,容易诱发皮疹或皮肤瘙痒症状。为了个人和家人的身体健康,还是勤快一点,把及时换下的衣物及时洗涤,这样,其实也费不了多少时间,也不至于最后要花费半天甚至更长 的时间专门来洗涤大量的衣物要节约的多。另外衣服穿的太久就比较脏,要花很大的力气洗涤才能洗干净,也容易将衣物搓揉变形,而影响美观和穿着效果。
洗衣服是个简单的小家务,也是生活中不可缺少的一件事,学问却很多,也许您的“洗衣心得”比这还要科学,还要多样,欢迎您 的指正~~
要有经营场所,办理工商登记(办理卫生许可),如果觉得有必要还要到税务局买定额发票,不过奶茶店一般人家消费是不会要发票的巴,要买设备,要联系供应商备一些原料,就好啦,没啥难的,不过要赚钱的话就得选好开店地段。
办理手续的程序(申领个体执照):
1、前往工商所申请办理
2、根据工商所通知(申请办理当场就会给你个小纸条)前往办理名称预核
3、拿到名称预核通知书,办理卫生许可证(前往所在地卫生监督所办理)
4、拿着名称预核通知书和卫生许可证前往工商所核发营业执照。
规模以上工业企业是指全部国有企业(在工商局的登记注册类型为"110"的企业)和当年产品销售收入500万元以上(含)的非国有工业企业。
考虑是由于天气比较干燥和身体上火导致的,建议不要吃香辣和煎炸的食物,多喝水,多吃点水果,不能吃牛肉和海鱼。可以服用(穿心莲片,维生素b2和b6)。也可以服用一些中药,如清热解毒的。
确实没有偿还能力的,应当与贷款机构进行协商,宽展还款期间或者分期归还; 如果贷款机构起诉到法院胜诉之后,在履行期未履行法院判决,会申请法院强制执行; 法院在受理强制执行时,会依法查询贷款人名下的房产、车辆、证券和存款;贷款人名下没有可供执行的财产而又拒绝履行法院的生效判决,则有逾期还款等负面信息记录在个人的信用报告中并被限制高消费及出入境,甚至有可能会被司法拘留。
第一步:教育引导
不同年龄阶段的孩子“吮指癖”的原因不尽相同,但于力认为,如果没有什么异常的症状,应该以教育引导为首要方式,并注意经常帮孩子洗手,以防细菌入侵引起胃肠道感染。
第二步:转移注意力
比起严厉指责、打骂,转移注意力是一种明智的做法。比如,多让孩子进行动手游戏,让他双手都不得闲,或者用其他的玩具吸引他,还可以多带孩子出去游玩,让他在五彩缤纷的世界里获得知识,增长见识,逐渐忘记原来的坏习惯。对于小婴儿,还可以做个小布手套,或者用纱布缠住手指,直接防止他吃手。但是,不主张给孩子手指上“涂味”,比如黄连水、辣椒水等,以免影响孩子的胃口,黄连有清热解毒的功效,吃多了还可导致腹泻、呕吐。
合肥政务区网络广告推广网络推广哪家公司比较好 一套能在互联网上跑业务的系统,被网络营销专家赞为目前最 有效的网络推广方式!
1、搜索引擎营销:分两种SEO和PPC,即搜索引擎优化,是通过对网站结构、高质量的网站主题内容、丰富而有价值的相关性外部链接进行优化而使网站为用户及搜索引擎更加友好,以获得在搜索引擎上的优势排名为网站引入流量。
良工拥有十多位资深制冷维修工程师,十二年生产与制造经验,技术力量雄厚,配有先进的测试仪器,建有系列低温测试设备,备有充足的零部件,包括大量品牌的压缩机,冷凝器,蒸发器,水泵,膨胀阀等备品库,能为客户提供迅捷,优质的工业冷水机及模温机维修和保养。
楼主,龙德教育就挺好的,你可以去试试,我们家孩子一直在龙德教育补习的,我觉得还不错。
成人可以学爵士舞。不过对柔软度的拒绝比较大。  不论跳什么舞,如果要跳得美,身体的柔软度必须要好,否则无法充分发挥出理应的线条美感,爵士舞也不值得注意。在展开暖身的弯曲动作必须注意,不适合在身体肌肉未几乎和暖前用弹振形式来做弯曲,否则更容易弄巧反拙,骨折肌肉。用静态方式弯曲较安全,不过也较必须耐性。柔软度的锻炼动作之幅度更不该超过疼痛的地步,肌肉有向上的感觉即可,动作(角度)保持的时间可由10馀秒至30-40秒平均,时间愈长对肌肉及关节附近的联结的组织之负荷也愈高。
正在加载...
Copyright &
Corporation, All Rights Reserved
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:12345666666666websocket简单实现五子棋即时对战功能
websocket简单实现五子棋即时对战功能
几年前做的一个小demo,代码比较老,先上下html显示效果图
因为代码中注释比较详细,所以就直接上代码了
html代码,也就是上图展示的效果页面
DOCTYPE html&
几年前做的一个小demo,代码比较老,先上下html显示效果图
因为代码中注释比较详细,所以就直接上代码了
html代码,也就是上图展示的效果页面
&!DOCTYPE html&
&meta charset="UTF-8"&
&title&&/title&
&script type="text/javascript" src="../js/jquery-1.12.3.min.js" &&/script&
&script type="text/javascript" src="../js/json2.js" &&/script&
&script type="text/javascript" src="../js/rule.js" &&/script&
&style type="text/css"&
#background{
position: relative;
margin: 20px auto;
/*background: #EAC000;*/
.chessman{
border-radius: 15px;
width: 30px;
height: 30px;
margin: 0 auto;
background-color:white ;
background-color: black;
.grid,.b_grid{
float: left;
width: 320px;
height: 100px;
margin: 0 auto;
#messageContent{
width: 320px;
height: 80px;
&div id="background"&
&!--&div id="back_grid"&&/div&--&
&div id="chess"&&/div&
&div class="message"&
&textarea id="messageContent" disabled="disabled" readonly="readonly"&&/textarea&
&div&&input id="message"/& &button onclick="WuZiQi.sendMessage()"&发送&/button&&/div&
chess.html
接下来是页面rule.js功能代码
var bout = false;//是否允许落子
var color = "";//自己落子颜色
var websocket = null;
var row = 15;
var col = 15;
var widthAndHeight = 30;//格子宽度高度
var WuZiQi = {
isEnd:function(xy,chessmanColor){//判断是否结束游戏
var id = parseInt(xy);
//竖的计算
var num = 1;
num = WuZiQi.shujia(num,id,chessmanColor);
num = WuZiQi.shujian(num,id,chessmanColor);
if(num&=5){
if(chessmanColor==color){
confirm("游戏结束!你赢了!");
confirm("游戏结束!你输了!");
num = WuZiQi.hengjia(num,id,chessmanColor);
num = WuZiQi.hengjian(num,id,chessmanColor);
if(num&=5){
if(chessmanColor==color){
confirm("游戏结束!你赢了!");
confirm("游戏结束!你输了!");
num = WuZiQi.zuoxiejia(num,id,chessmanColor);
num = WuZiQi.zuoxiejian(num,id,chessmanColor);
if(num&=5){
if(chessmanColor==color){
confirm("游戏结束!你赢了!");
confirm("游戏结束!你输了!");
num = WuZiQi.youxiejia(num,id,chessmanColor);
num = WuZiQi.youxiejian(num,id,chessmanColor);
if(num&=5){
if(chessmanColor==color){
confirm("游戏结束!你赢了!");
confirm("游戏结束!你输了!");
},youxiejia:function(num,id,color){
var yu = id%
id = id+(row-1);
if(id&(row*col)&&(id%row)&yu){
var flag = WuZiQi.checkColor(id,color);
return WuZiQi.youxiejia(num,id,color);
},youxiejian:function(num,id,color){
var yu = id%
id = id-(row-1);
if(id&=0&&(id%row)&yu){
var flag = WuZiQi.checkColor(id,color);
return WuZiQi.youxiejian(num,id,color);
},zuoxiejia:function(num,id,color){
var yu = id%
id = id+(row+1);
if(id&(row*col)&&(id%row)&yu){
var flag = WuZiQi.checkColor(id,color);
return WuZiQi.zuoxiejia(num,id,color);
},zuoxiejian:function(num,id,color){
var yu = id%
id = id-(row+1);
if(id&=0&&(id%row)&yu){
var flag = WuZiQi.checkColor(id,color);
return WuZiQi.zuoxiejian(num,id,color);
hengjia:function(num,id,color){
var yu = id%
id = id+1;
if(id&(row*col)&&(id%row)&yu){
var flag = WuZiQi.checkColor(id,color);
return WuZiQi.hengjia(num,id,color);
hengjian:function(num,id,color){
var yu = id%
id = id-1;
if(id&=0&(id%row)&yu){
var flag = WuZiQi.checkColor(id,color);
return WuZiQi.hengjian(num,id,color);
shujia:function(num,id,color){
if(id&(row*col)){
var flag = WuZiQi.checkColor(id,color);
return WuZiQi.shujia(num,id,color);
shujian:function(num,id,color){
if(id&=0){
var flag = WuZiQi.checkColor(id,color);
return WuZiQi.shujian(num,id,color);
checkColor:function(xy,color){
if($("#"+xy).children("div").hasClass(color)){
return true;
return false;
playchess:function(e){
if(bout&&color!=""){
if($(e).children("div").length&0){
alert("这里已经有子了!请在其它地方落子!");
var result = {};
result.xy = $(e).attr("id");
result.color =
result.message = "系统:您已落子,请等待对手落子!";
result.bout = false;
if(websocket!=null){
websocket.send(JSON.stringify(result));
$("#messageContent").append("系统:已断开连接");
$("#messageContent").append("\n");
if(color==""){
$("#messageContent").append("系统:游戏还没有开始!");
$("#messageContent").append("\n");
$("#messageContent").scrollTop($("#messageContent")[0].scrollHeight - $("#messageContent").height());
$("#messageContent").append("系统:请等待你的对手落子!");
$("#messageContent").append("\n");
$("#messageContent").scrollTop($("#messageContent")[0].scrollHeight - $("#messageContent").height());
//发送消息
sendMessage:function(){
var message = $("#message").val();
if(message!=""){
var result = {};
result.message =
websocket.send(JSON.stringify(result));
$("#message").val("");
$("#messageContent").append("系统:请不要发送空信息!");
$("#messageContent").append("\n");
$("#messageContent").scrollTop($("#messageContent")[0].scrollHeight - $("#messageContent").height());
$(function(){
//根据棋盘格子数得到棋盘大小
$("#background").css({width:(row*widthAndHeight)+"px",height:(col*widthAndHeight)+"px"});
//用canvas画棋盘
var canvas = document.createElement("canvas");
$(canvas).attr({width:((row-1)*widthAndHeight)+"px",height:(col-1)*widthAndHeight+"px"});
$(canvas).css({"position":"relative","top":(widthAndHeight/2)+"px","left":(widthAndHeight/2)+"px","z-index":9999});
$(canvas).attr({width:(row*widthAndHeight)+"px",height:col*widthAndHeight+"px"});
$(canvas).css({position:"relative","z-index":9999});
var cot = canvas.getContext("2d");
cot.fillStyle = "#EAC000";
cot.fillRect(0,0,row*widthAndHeight,col*widthAndHeight);
cot.lineWidth = 1;
var offset = widthAndHeight/2;
for(var i=0;i&i++){//面板大小和棋盘一致,但格子线条比棋盘的行列少1
cot.moveTo((widthAndHeight*i)+offset,0+offset);
cot.lineTo((widthAndHeight*i)+offset,(col*widthAndHeight)-offset);
for(var j=0;j&j++){
cot.moveTo(0+offset,(widthAndHeight*j)+offset);
cot.lineTo((widthAndHeight*row)-offset,(j*widthAndHeight)+offset);
cot.stroke();
$("#background").prepend(canvas);
//生成格子横线
var b_str="";
for(var i=0;i&(row-1);i++){
for(var j=0;j&(col-1);j++){
b_str+="&div class='b_grid'&&/div&";
$("#back_grid").append(b_str);
$("#back_grid").css({width:((row-1)*widthAndHeight)+"px",height:(col-1)*widthAndHeight+"px",position: "absolute",top:(widthAndHeight/2)+"px",left:(widthAndHeight/2)+"px",border:"solid 1px black"});
//减去线的宽度
$(".b_grid").css({width:(widthAndHeight-2)+"px",height:(widthAndHeight-2)+"px",border:"solid 1px black"});
//生成落子格子
var str="";
var index = 0;
for(var i=0;i&i++){
for(var j=0;j&j++){
str+="&div class='grid' id=\""+index+"\"&&/div&";
$("#chess").empty();
$("#chess").append(str);
$("#chess").css({width:(row*widthAndHeight)+"px",height:(col*widthAndHeight)+"px",position: "absolute",top:"0px",left:"0px","z-index":99999});
$(".grid").on("click",function(){
WuZiQi.playchess(this);
$(".grid").css({width:widthAndHeight+"px",height:widthAndHeight+"px"});
//判断当前浏览器是否支持WebSocket
if('WebSocket' in window){
websocket = new WebSocket("ws://"+window.location.host+"/WuZiQi/wuziqisocket");
alert('Not support websocket');
//连接发生错误的回调方法
websocket.onerror = function(){
//连接成功建立的回调方法
websocket.onopen = function(event){
//接收到消息的回调方法(包含了聊天,落子,开始游戏)
websocket.onmessage = function(){
var result = JSON.parse(event.data);
if(result.message!=""){
$("#messageContent").append(result.message);
$("#messageContent").append("\n");
//将多行文本滚动总是在最下方
$("#messageContent").scrollTop($("#messageContent")[0].scrollHeight - $("#messageContent").height());
if(result.xy!=""&&result.color!=""){
$("#"+result.xy).html("&div class=\"chessman "+result.color+"\"&&/div&");
bout = result.//落子后才改状态
WuZiQi.isEnd(result.xy,result.color);
}else if(result.xy==""&&result.bout){//没有坐标且bout为true,则为对局首次开始落子
bout = result.
if(result.xy==""&&result.color!=""){//没有坐标,但有颜色,则为首次赋予棋子颜色
color = result.
//连接关闭的回调方法
websocket.onclose = function(){
//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
window.onbeforeunload = function(){
websocket.close();
//关闭连接
function closeWebSocket(){
websocket.close();
java封装用来传输信息的对象代码
package com.weguard.
* @author xuhan
public class Result {
* 落子坐标
* 发送消息
* 是否允许落子
private boolean
* 落子颜色
public String getXy() {
public void setXy(String xy) {
public String getMessage() {
public void setMessage(String message) {
this.message =
public boolean isBout() {
public void setBout(boolean bout) {
this.bout =
public String getColor() {
public void setColor(String color) {
this.color =
Result.java
最后是WebSocket的代码
package com.weguard.
import java.io.IOE
import java.util.HashM
import javax.websocket.OnC
import javax.websocket.OnE
import javax.websocket.OnM
import javax.websocket.OnO
import javax.websocket.S
import javax.websocket.server.ServerE
import net.sf.json.JSONO
//该注解用来指定一个URI,客户端可以通过这个URI来连接到WebSocket。类似Servlet的注解mapping。无需在web.xml中配置。
@ServerEndpoint(value="/wuziqisocket")
public class WebSocket {
//concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识
private static HashMap&String,WebSocket& webSocketMap = new HashMap&String,WebSocket&();
//与某个客户端的连接会话,需要通过它来给客户端发送数据
//连上来的页面序号,用来配对对战,1与2一组,3与4一组,依次类推,奇数为黑先走,偶数为白,后走
private static int index = 0;
//同上,用来从hashMap中获取websocket,(我也忘记当时为啥要另外用一个mykey了,而不是直接用index来获取)
private int mykey = 0;
* 连接建立成功调用的方法
* @param session
可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据
* @throws IOException
public void onOpen( Session session){
this.session =
Result result = new Result();
if(index%2==0){
WebSocket socket1 = webSocketMap.get((index-1)+"");
if(socket1!=null){
result.setBout(true);
result.setMessage("系统:游戏开始,请您先落子!");
result.setColor("black");
JSONObject json1 = JSONObject.fromObject(result);
socket1.sendMessage(json1.toString());
//对先落子的对象发送数据结束
result.setMessage("系统:游戏开始,请等待对手落子!");
result.setBout(false);
result.setColor("white");
this.sendMessage(JSONObject.fromObject(result).toString());
//对后出手的发送消息结束
}else{//偶数时没有查询到与之对应的对手,则其变为奇数,成为等待匹配的人
result.setMessage("系统:等待玩家匹配!");
this.sendMessage(JSONObject.fromObject(result).toString());
result.setMessage("系统:等待玩家匹配!");
this.sendMessage(JSONObject.fromObject(result).toString());
this.mykey =
webSocketMap.put(mykey+"", this);
//加入map中
System.out.println(webSocketMap.size());
} catch (Exception e) {
e.printStackTrace();
* 连接关闭调用的方法
* @throws IOException
public void onClose(){
webSocketMap.remove(mykey+"");
//从set中删除
WebSocket socket = null;
if(mykey%2==0){
socket = webSocketMap.get((mykey-1)+"");
socket = webSocketMap.get((mykey+1)+"");
if(socket!=null){
Result result = new Result();
result.setMessage("你的对手已离开!");
socket.sendMessage(JSONObject.fromObject(result).toString());
} catch (Exception e) {
e.printStackTrace();
* 收到客户端消息后调用的方法
* @param message 客户端发送过来的消息
* @param session 可选的参数
@OnMessage
public void onMessage(String message) {
System.out.println(message);
JSONObject json = JSONObject.fromObject(message);
Result result = (Result) JSONObject.toBean(json,Result.class);
WebSocket socket = null;
if(mykey%2==0){
socket = webSocketMap.get((mykey-1)+"");
socket = webSocketMap.get((mykey+1)+"");
if(socket!=null){
if(result.getXy()!=null&&!"".equals(result.getXy())){//有坐标表示为落子,反之则为发送信息
this.sendMessage(message);
result.setBout(true);//对手的bout改为true,表示接下来可以落子
result.setMessage("系统:对方已落子,正在等待您落子!");
socket.sendMessage(JSONObject.fromObject(result).toString());
}else{//没有坐标表示为单纯的聊天
Result newResult = new Result();
newResult.setMessage("自己:"+result.getMessage());
this.sendMessage(JSONObject.fromObject(newResult).toString());
newResult.setMessage("对方:"+result.getMessage());
socket.sendMessage(JSONObject.fromObject(newResult).toString());
} catch (Exception e) {
e.printStackTrace();
* 发生错误时调用
* @param session
* @param error
public void onError(Session session, Throwable error){
System.out.println("连接断开");
error.printStackTrace();
* 这个方法与上面几个方法不一样。没有用注解,是根据自己需要添加的方法。
* @param message
* @throws IOException
public void sendMessage(String message) throws IOException{
this.session.getBasicRemote().sendText(message);
//this.session.getAsyncRemote().sendText(message);
WebSocket.java
只需要上面的4个代码,当然jquery,json2这些依然还是需要的,同学们新建一个
用云栖社区APP,舒服~
【云栖快讯】Apache旗下顶级开源盛会 HBasecon Asia 2018将于8月17日在京举行,现场仅600席,免费赠票领取入口&&
智能客服平台,帮助企业平均提高客服工作效率70%以上。
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效...
阿里云总监课正式启航}

我要回帖

更多关于 五子棋7步必胜开局 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信