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

简介:

上节留下的问题:

在上一节: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,本节就介绍到这里了。

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2011/01/13/1933693.html

相关文章
|
11天前
|
SQL 安全 算法
网络安全的盾牌与剑:漏洞防御与加密技术的实战应用
【9月更文挑战第30天】在数字时代的浪潮中,网络安全成为守护信息资产的关键防线。本文深入浅出地探讨了网络安全中的两大核心议题——安全漏洞与加密技术,并辅以实例和代码演示,旨在提升公众的安全意识和技术防护能力。
|
21天前
|
网络协议 Python
告别网络编程迷雾!Python Socket编程基础与实战,让你秒变网络达人!
在网络编程的世界里,Socket编程是连接数据与服务的关键桥梁。对于初学者,这往往是最棘手的部分。本文将用Python带你轻松入门Socket编程,从创建TCP服务器与客户端的基础搭建,到处理并发连接的实战技巧,逐步揭开网络编程的神秘面纱。通过具体的代码示例,我们将掌握Socket的基本概念与操作,让你成为网络编程的高手。无论是简单的数据传输还是复杂的并发处理,Python都能助你一臂之力。希望这篇文章成为你网络编程旅程的良好开端。
39 3
|
22天前
|
机器学习/深度学习 JSON API
HTTP协议实战演练场:Python requests库助你成为网络数据抓取大师
在数据驱动的时代,网络数据抓取对于数据分析、机器学习等至关重要。HTTP协议作为互联网通信的基石,其重要性不言而喻。Python的`requests`库凭借简洁的API和强大的功能,成为网络数据抓取的利器。本文将通过实战演练展示如何使用`requests`库进行数据抓取,包括发送GET/POST请求、处理JSON响应及添加自定义请求头等。首先,请确保已安装`requests`库,可通过`pip install requests`进行安装。接下来,我们将逐一介绍如何利用`requests`库探索网络世界,助你成为数据抓取大师。在实践过程中,务必遵守相关法律法规和网站使用条款,做到技术与道德并重。
32 2
|
29天前
|
数据采集 网络协议 API
HTTP协议大揭秘!Python requests库实战,让网络请求变得简单高效
【9月更文挑战第13天】在数字化时代,互联网成为信息传输的核心平台,HTTP协议作为基石,定义了客户端与服务器间的数据传输规则。直接处理HTTP请求复杂繁琐,但Python的`requests`库提供了一个简洁强大的接口,简化了这一过程。HTTP协议采用请求与响应模式,无状态且结构化设计,使其能灵活处理各种数据交换。
54 8
|
24天前
|
数据采集 API 开发者
🚀告别网络爬虫小白!urllib与requests联手,Python网络请求实战全攻略
在网络的广阔世界里,Python凭借其简洁的语法和强大的库支持,成为开发网络爬虫的首选语言。本文将通过实战案例,带你探索urllib和requests两大神器的魅力。urllib作为Python内置库,虽API稍显繁琐,但有助于理解HTTP请求本质;requests则简化了请求流程,使开发者更专注于业务逻辑。从基本的网页内容抓取到处理Cookies与Session,我们将逐一剖析,助你从爬虫新手成长为高手。
48 1
|
23天前
|
Python
HTTP协议不再是迷!Python网络请求实战,带你走进网络世界的奥秘
本文介绍了HTTP协议,它是互联网信息传递的核心。作为客户端与服务器通信的基础,HTTP请求包括请求行、头和体三部分。通过Python的`requests`库,我们可以轻松实现HTTP请求。本文将指导你安装`requests`库,并通过实战示例演示如何发送GET和POST请求。无论你是想获取网页内容还是提交表单数据,都能通过简单的代码实现。希望本文能帮助你在Python网络请求的道路上迈出坚实的一步。
36 0
|
1月前
|
SQL 安全 网络安全
网络安全之盾:漏洞防御与加密技术的实战应用
【9月更文挑战第2天】在数字时代的浪潮中,网络安全成为保护个人隐私和企业资产的坚固盾牌。本文深入探讨了网络安全的两个核心要素:防御漏洞和加密技术。我们将从基础概念入手,逐步剖析常见的网络攻击手段,并分享如何通过实践加强安全意识。同时,提供代码示例以增强理解,旨在为读者构建一道坚不可摧的网络安全防线。

热门文章

最新文章