Silverlight+WCF 實戰-網絡象棋最終篇之非線程阻塞倒計時窗口-應用篇(七)

 

在上一節:Silverlight+WCF 實戰-網絡象棋最終篇之非線程阻塞倒計 時窗口(四) 中,我們通過ChildWindow實現了倒計時的窗口,來避免由於由於不點擊確定而造成線程阻塞導致的請求超時問題,而本節將具體實現修改的細節代碼,並附帶最新源碼下載。

 

另外中間提前插了兩節「對戰視頻」的,歡迎感興趣多多支持,點點推薦:

1:Silverlight+WCF 實戰-網絡象棋最終篇之對戰視頻-上篇[客戶端開啓視頻/註冊編號/接收視頻](五)

2:Silverlight+WCF 實戰-網絡象棋最終篇之對戰視頻-下篇[客戶端發送與服務端中轉](六)

 

下面進入正文:

說明:

本節我們要處理的,就是出找出所有應用到MessageBox.Show的方法,將之換成自定義的MsgBox.Show方法即可。

 

爲了調用方便與節流開源,我們將MsgBox提升到全局變量中,即放到App.xaml中。

public   static MsgBox box =   new MsgBox(); // 全局定義

 

全局看了一下,還好,修改的地方不多,只有兩個頁面,以下爲修改點:

1:Login.xaml 登陸提示修改:

 
 
// MessageBox.Show("請輸入暱稱!");
   App.box.Show( " 請輸入暱稱! " , " 系統提示 " );

 
// MessageBox.Show("暱稱不能包含非法字符!");
  App.box.Show( " 暱稱不能包含非法字符! " , " 系統提示 " );

說明:

一共有兩行提示的:註釋的是原來的代碼。改點非常少

看一下改造完後的消息提示:

 

 

2:EventButton.xaml 事件提示區,這裏相對多一點改動

這裏分兩步修改:

第一步是修改只提示,沒有邏輯判斷分支的語句如下:

05233802_6bLB.gif
  // MessageBox.Show("請求已發送,請等待對方迴應!", "系統消 息",MessageBoxButton.OK);
App.box.Show( " 請求已發送,請等待對方迴應! " , " 系統消息 " );
 
// MessageBox.Show("對方同意開始遊戲,請開始下棋", "遊戲通 知", MessageBoxButton.OK);
App.box.Show( " 對方同意開始遊戲,請開始下棋! " , " 遊戲通知 " );
 
// MessageBox.Show("對方拒絕開始遊戲", "遊戲通知", MessageBoxButton.OK);
App.box.Show( " 對方拒絕開始遊戲! " , " 遊戲通知 " );
// MessageBox.Show("你的請求已發送,請等待迴應", "遊戲通知", MessageBoxButton.OK);
App.box.Show( " 你的請求已發送,請等待迴應! " , " 遊戲通知 " );
// MessageBox.Show("對方拒絕平局", "遊戲通知", MessageBoxButton.OK);
App.box.Show( " 對方拒絕平局! " , " 遊戲通知 " );
 
// MessageBox.Show("雙方平局", "遊戲結果通知", MessageBoxButton.OK);
App.box.Show( " 雙方平局! " , " 遊戲結果通知 " );
// MessageBox.Show(e.player.NickName+" 認輸了!", "遊戲結果通 知", MessageBoxButton.OK);
App.box.Show(e.player.NickName +   " 認輸了! " , " 遊戲結果通知 " );
 
// MessageBox.Show(e.player.NickName+" 贏了!", "遊戲結果通 知", MessageBoxButton.OK);
App.box.Show(e.player.NickName + " 贏了! " , " 遊戲 結果通知 " );
 
// MessageBox.Show(e.player.NickName + " 已進房間,請按開始按鈕開始遊 戲", "遊戲通知", MessageBoxButton.OK);
App.box.Show(e.player.NickName +   " 已進房間,請按開始按鈕開始遊戲 " , " 遊戲通知 " );

第二步是修改帶邏輯分支的代碼,如下:

A:平手請求原代碼:

05233802_6bLB.gif
  case   " 22 " : // 平手 請求
   MessageBoxResult result = MessageBox.Show( " 對方請求平手,是否同意! " , " 遊戲請求 " , MessageBoxButton.OKCancel);
  
if (result == MessageBoxResult.OK) // 同意
    {
       App.player.AttachInfo
=   " 21 " ; // 同意請求標識位設爲21                
   }
  
else // 拒絕
    {
       App.player.AttachInfo
=   " 20 " ; // 拒絕請求標識位設爲20
                       
    }
     App.client.EndGameAsync(App.player);
    
break ;

 

改造成:

05233802_6bLB.gif
  case   " 22 " : // 平手 請求
     App.box.Show( " 對方玩家請求和局,是否同 意? " , " 遊戲結束 " , 10 , AgreeGameDeuce); 
    
break ;
 
// 方法AgreeGameDeuce
  void AgreeGameDeuce( bool result)
  {
     App.player.AttachInfo
=   " 2 "   + (result ?   "" : " 0 " );
     App.client.EndGameAsync(App.player);
  }

B:請求開始遊戲原代碼

05233802_6bLB.gif
                 case   " 1 " : // 請求開始遊戲
                    MessageBoxResult result = MessageBox.Show(e.player.NickName +   " 請求開始遊戲,是否同意開始 " , " 遊戲開始 " , MessageBoxButton.OKCancel);
                    App.player.AttachInfo
= (result == MessageBoxResult.OK)  ?   " 11 " : " 10 " ;
                    App.client.StartGameAsync(App.player);
                   
if (result == MessageBoxResult.OK) // 同意開始遊戲
                    {
                        btnGameDeuce.IsEnabled
=   true ;
                        btnGameLose.IsEnabled
=   true ;
                        App.chess.IsGaming
=   true ;
                    }
                    break ;

改造成:

05233802_6bLB.gif
  case   " 1 " : // 請求 開始遊戲
  App.box.Show(e.player.NickName +   " 請求開始遊戲,是否同意開始 " , " 遊戲開始 " , 6 , ConfirmStartGame);
 
break ;
// 方法:ConfirmStartGame
        void ConfirmStartGame( bool result)
        {
           
if (result)
            {
                App.chess.IsGaming
=   true ;
                btnGameDeuce.IsEnabled
=   true ;
                btnGameLose.IsEnabled
=   true ;
                App.player.AttachInfo
=   " 11 " ;
            }
           
else
            {
                App.player.AttachInfo
=   " 10 " ;
            }
            App.client.StartGameAsync(App.player);
// 應答
        }

 

至此,我們終於將所有的消息彈出框改造完了。

 

看一下改造完後的消息提示:

 

 

接着是大家期待已久的源碼下載:--第十階段源碼:點擊下載[別忘了 留下言推薦下哦^-^]

 

最後:謝謝大家對本系列的喜歡,謝謝支持~

PS:傳說點一下推薦會有10個園豆,喜歡麻煩點一下「推薦」,thank you very much!!

轉載於:https://my.oschina.net/secyaher/blog/274363