第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Silverlight+WCF 新手實(shí)例 象棋

標(biāo)簽:
Java

我们实现了“开始”游戏,并互相通知可以开始游戏了;可是我们并没有对棋子进行限制,双方都可以随时的下;

所以,接下来我们要实现对棋子的限制,A下B停,B下A停,同时,要传递棋步,对方收到棋步,要反转棋步坐标,还得自动移动棋子。

 

说了这么多,我们从哪里开始下手呢?其实我也想了很久......

让我们回到Chess象棋类,于是添加一个属性IsCanMove

复制代码5aceff850001405b00110016.jpg

//象棋类 by 路过秋天
public class Chess
{
        /// <summary>
        /// 是否可以移动棋子
        /// </summary>
        public bool IsCanMove
        {
            get;
            set;
        }

//...省略N多行...

}复制代码

 

OK,属性有了,我们通过这个属性来控制是不是能移动棋子,接着我们回到棋子类Chessman点击事件里,加上限制,不能移动就不让点:

复制代码5aceff850001405b00110016.jpg

 //新加的事件方法,棋子点击事件
void chessman_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
            if (!Parent.IsCanMove)
            {
                return;
            }

//...下面省略N行...
}复制代码

 

有了一个属性和一个限制,轻轻松松几行代码,就搞定了,接下来的事,就是要决定什么时候设置IsCanMove的true或false了.

OK,让我们回到[上一节]点击”开始“的事件里,找到收到”回复可以开始“的代码里,既然可以开始了,那这个属性就要设置为true了。

我们回到EventButton.xaml.cs代码里:

复制代码5aceff850001405b00110016.jpg

void client_NotifyStartGameReceived(object sender, GameService.NotifyStartGameReceivedEventArgs e)
        {
            //收到消息了应该咋办
            switch (e.player.AttachInfo)
            {
                //...省略N行代码...                    
                    case "11":
                    MessageBox.Show("对方同意开始游戏,请开始下棋", "游戏通知", MessageBoxButton.OK);
                    btnGameStart.IsEnabled = false;
                    //这里设置一下Chess.IsCanMove=true;
                    break;
            }
        }复制代码

 

看清楚罗,就在对方同意开始游戏后,我们要设置为true,这样就可以下棋了,可是我们的chess对象,在另外一个下棋区控件里,怎么传递消息?

我们在Silverlight+WCF 新手实例 象棋 主界面-控件消息传递(二十六)这节就讲过了,不懂的回去再看看......

 

不过呢,这次我们换另外一种方法来传递消息,毕竟这个属性或者说chess类是个比较重要的类,到处都可能用到,我们不能到处委托人的,一次两次的委托人家就算了,件件事都来委托人家就烦了,代码长了也烦。

 

那用什么方法?还记得我们的player和client对象没?它们到处都可以随时用的。所以了,回到App.xmal.cs里,加多一个全局变量了:

有没有发现,最近我变聪明了,经常性的省略以前的代码,来让重点的代码变的更直观一点。

复制代码5aceff850001405b00110016.jpg

public partial class App : Application
{
        Grid root = new Grid();
        public static GameService.ServiceClient client;//回调的客户端
        public static GameService.Player player;//当前玩家
        public static ChessNewInstance.Chess chess;//象棋类,新增加的
        public App()
        {
            //...省略...
        }
}复制代码

 

此时广州的天空在不停的闪雷...

 

OK,全局也有了,那在哪里为这个全局赋值,总不能拿一个Null对象到到调吧。

所以,我们回到Chess.xaml.cs里,在实例化Chess的地方,为这个全局赋一下值:

代码较短,就全部Copy进来:

复制代码5aceff850001405b00110016.jpg

public partial class Chess : UserControl
    {
       ChessNewInstance.Chess chess;//这里我们同时把它提到全局对象
        public Chess()
        {
            InitializeComponent();
            chess = new ChessNewInstance.Chess(canvasRoot);
            chess.InitBoard();
            chess.InitChessman();
            canvasRoot.Width = chess.Board.Width;
            canvasRoot.Height = chess.Board.Height;
            App.chess = chess;//为全局对象赋值
        }
    }复制代码

 

一切就绪,现在可以到处用App.chess对象了,于是我们峰回路转到EventButton.xaml.cs里,只为了加一行代码:

复制代码5aceff850001405b00110016.jpg

void client_NotifyStartGameReceived(object sender, GameService.NotifyStartGameReceivedEventArgs e)
        {
            //收到消息了应该咋办
            switch (e.player.AttachInfo)
            {
                //...照样省略N行...

                case "11":
                    MessageBox.Show("对方同意开始游戏,请开始下棋", "游戏通知", MessageBoxButton.OK);
                    btnGameStart.IsEnabled = false;
                    App.chess.IsCanMove=true;//这里设置一下,就加这一行
                    break;
            }
        }复制代码

 

 

OK,到这里,我们可以F5一下看一下效果,又要开始截图了:

我们仔细看一下图,看一下对话哦:

棋子区的图就不别截了,细看一下对话区,由于我们只实现了一部分,A可以下,B停。所以目前永远是这个状态,A可以一直下,B一直信停。

这个状态我们要留到下节来处理情况,如果细看,还会发现,双方头顶上都是黑色棋子,也就是说双方用的都是红色棋???

这个嘛,我们也另开小节来讲解罗。

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消