Silverlight+WCF 实战-网络象棋最终篇之解决重复的消息提示-状态重置(九)

Silverlight+WCF 实战-网络象棋最终篇之解决重复的消息提示-状态重置(九),第1张

概述上节留下的问题: 在上一节:Silverlight+WCF 网络象棋 终极篇 解决重复的消息提示(八) 中,我们解决了重复登陆时产生的多次消息的重复提示。 不过由此优化产生的另一个问题:全局只有一个实例,在来回的切换房间或进出时,需要重置状态,我们这节来解决这个问题。     在上节的,我留下了几行这样的注释代码: // loginObj.Reset(); // roomObj.Reset(); 上节留下的问题:

在上一节:Silverlight+WCF 网络象棋 终极篇 解决重复的消息提示(八) 中,我们解决了重复登陆时产生的多次消息的重复提示。

不过由此优化产生的另一个问题:全局只有一个实例,在来回的切换房间或进出时,需要重置状态,我们这节来解决这个问题。

 

 

在上节的,我留下了几行这样的注释代码:

// loginobj.reset();
// roomObj.reset();
// indexObj.reset();

 

本节就顺路把这三个注册的方法给实现了:

1:loginobje.reset()方法的实现,进入Login.xaml.cs中:

public voID reset()
{
btnLogin.IsEnabled
= true ;
}

 

就一行,把不可用的按钮重置为可用。

2:roomObj.reset()方法的实现,进入Room.xaml.cs中:

public voID reset()
{
game.reset();
App.clIEnt.GetRoomListAsync();
}

 

代码很简洁,第一行,把游戏房间的状态重置为初始状态,然后重新获取房间的状态。

代码分解:game.reset()方法,我们进入到Game.cs中添加reset方法实现如下:

public voID reset()
{
if (GameRoomList == null )
{
CreateGameRoom(
20 );
}
foreach (GameRoom item in GameRoomList)
{
if (item.BlackPlayer != null || item.Redplayer != null )
{
item.BlackPlayer
= null ;
item.Redplayer
= null ;
item.IsGaming
= false ;
item.ReDraw();
}
}
}

 

把每一个房间重新重置为初始状态了。

3:indexObj.reset()方法的实现,进入Index.xaml.cs中:

public voID reset()
{
chessControl.reset();
onlineUserControl.reset();
chessManualControl.reset();
eventbuttonControl.reset();
chatControl.reset();
}

这里代码是比较简单,不过接下来要做的事就多了,每个控件都要去实现一下,当体力活了。

下面为每一个控件实现状态重置方法:

A:棋盘及棋子的重置:chessControl.reset();

public voID reset()
{
chess.reset();//这个已经实现了的。
}

因此内部就调用象棋类的重置,分解为:

B:房间在线用户的重置:onlineUserControl.reset();

public voID reset()
{
App.clIEnt.GetPlayerListAsync(App.player.RoomID);
}

重新获取一次用户即可。

C:棋谱的重置:chessManualControl.reset();

public voID reset()
{
timer.Stop();
moveStepIndex = 0;
tempIsCanMove = false;
App.chessManualPlaying = false;
App.stepList.Clear();
lbChessManual.Items.Clear();
}

D:在线聊天的重置: chatControl.reset();

public voID reset()
{
lbMsg.Items.Clear();
}

4:回去把那三行注释掉的代码给开启了。

OK,一切就绪,最后运行看下效果,随便点点,运行情况良好,截几张图:

a:登陆

b:进到房间中

c:接着退出系统

d:换个名称重新登陆

e:重新登陆后进房间的界面

OK,本节就介绍到这里了。

总结

以上是内存溢出为你收集整理的Silverlight+WCF 实战-网络象棋最终篇之解决重复的消息提示-状态重置(九)全部内容,希望文章能够帮你解决Silverlight+WCF 实战-网络象棋最终篇之解决重复的消息提示-状态重置(九)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1009081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存