C#のソースコードのバックギャモン、オンラインプレイ---復刻版 - 学ぶべき

バックギャモンC#のソースコード、ネットワーク戦争バージョン

VS2010コンパイラ環境を実行し、C#ソースコードのダウンロードバックギャモンオンラインプレイをサポートしています、あなたは仕事のために、IPアドレスではなく、スタンドアローンバージョンを入力する必要があります。次のようにコードの一部が要約されている:カスタムコレクションMessClassに//受信したメッセージ
   MessClass新しい新しいClassSerializers MSG =()DeSerializeBinary((新新System.IO.MemoryStream(データ)))AS MessClass ;.
   スイッチ(msg.sendKind)//伝送のタイプを取得
   {
   ケースSendKind.SendConnを://接続
   {
   IF(msg.ChessStyle)//作品の現在のタイプを決定
   ChessStyleを=真; //ブラック
   他
   ChessStyleはfalseに=; //ホワイト
   CGrow = ChessStyle; //現在のピースのレコードタイプ
   CKind = -1; //勝利チェッカーの種類記録
   temMsg.sendKind = SendKind.SendConnHitを; //メッセージ・タイプが正常に接続されている設定
   temMsg.ChessStyle = ChessStyle; //送信片に現在のメッセージを設定しますタイプは
   //リモートコンピュータにメッセージを送信します
   udpSocket1.Send(IPAddress.Parse(FrmClass.ServerIP)、Convert.ToInt32(FrmClass.ClientPort)、新しい新しいClassSerializers()SerializeBinary(temMsg).toArray());
   BREAK;
   }
   ケースSendKind.SendConnHit://接続成功
   {
   MessageBox.Show( "接続成功"); //接続ディスプレイ
   button1.Tag = 1; //セット識別子
   button1.Text = "再起動";
   IF(msg.ChessStyle)ブラック//もし
   {
   ChessStyle真=まで; //ローカル型片ブラック設定
   ローカル第//; DownChess =真を
   label2.Text =「黒」、ローカルブラックとして表示//
   }
   他
   {
   falseにChessStyle =を、ローカル型片の組//ホワイトはある
   DownChess =偽; //ローカル後
   label2.Text =「白」; //ローカルのホワイトとして表示しました
   }
   CGrow = ChessStyle; //は、ローカル型の片記録
   panel2.Visibleを= FALSE; // Laziマーキング隠された最後の
   ブレーク;
   }
   ケースSendKind.SendAfresh://再チェス
   {
   //クリアボード位置毎
   (INT用0 = I; I <15; I ++)
   のための(INT J = 0; J <15; J ++)
   注[I、J] = -1;
   グラフィックpanel1.CreateGraphics G =(); //作成健常対照グラフィックパネル1クラス
   g.DrawImage(Properties.Resourcesボード、0、0、panel1.Width、panel1.Height 。); // クリアボード
   IF(msg.ChessStyle)//ブラック場合
   {
   ChessStyle = trueには、ローカルに設定//ブラックピース型
   真DownChess =; //ローカル型片ブラック設定
   label2.Text =「黒」; //ローカル黒として表示
   }
   他
   {
   ChessStyle =偽; //設定されているローカル型のピースホワイト
   DownChess =偽; //ローカルポスト
   label2.Text =「白」; //ローカルのホワイトとして表示
   }
   CGrow = ChessStyle; //は、ローカルの作品を記録タイプ
   CKind = -1; //勝利片の種類を記録
   panel2.Visible =偽; //最後の隠された証印ZI
   BREAK;
   }
   ケースSendKind.SendChessman://が送信枚受け取る
   {
   int型tem_CS = -1;
   画像tem_Image。画像//インスタンス化クラス
   であれば黒場合(msg.Grow)//
   {
   tem_CS = 1;個のタイプ黒記録//。
   CGrow =真; //現在のレコードブラック
   tem_Image = Properties.Resources黒色石。 ; //ストア画像ブラック
   }
   他
   {
   tem_CS = 0; //レコードタイプ片ホワイト
   CGrow = FALSE; //ブラックとして電流を記録
   。tem_Image = Properties.Resources白石; //ストア画像ホワイト
   }
   注[msg.ChessX、msg.ChessY] = tem_CS; //配列内ピースの現在の位置を記録する
   グラフィックpanel1.CreateGraphics G =();
   G .DrawImage(tem_Image、msg.ChessX * 35 + 7、msg.ChessY * 35 + 7、35、35); // 表示Aチェスボード上の他の部分で
   panel2.Visible = TRUE; //は、最後に表示印ZI
   panel2 .Location =新しいSystem.Drawing.Point(msg.ChessX * 35 + 20、msg.ChessY * 35 + 20); // マーカーは、作品に表示
   //相手記録があるかどうか、完成チェス; DownChess = msg.Walk
   CGrow != msg.Grow; //レコードのローカルポーンタイプ
   算術(tem_CS、msg.ChessX、msg.ChessY) ; // 相手が勝つためにかどうかを計算
   DownChessを=真; //人はチェスで完了しました
   BREAK;
   }
   場合SendKind.SendCut ://切断
   {
   temMsg.sendKind = SendKind.SendCutHit; //設定送信の種類が切断される
   //リモートコンピュータに切断メッセージを送信
   udpSocket1.Send(IPAddress.Parse(FrmClass.ServerIP)、Convert.ToInt32 (FrmClass.ClientPort)、新しいです。ClassSerializers()SerializeBinary(temMsg).toArray());
   Button1.Text = "接続"; //これは有意に再接続することができ
   button1.Tag = 0; //設定された接続識別子
   BREAK;
   }
   ケースSendKind.SendCutHit://切断成功
   {
   udpSocket1.Active = falseに、UDPの//近い接続
   Application.Exit(); //近い現在のプロジェクト
   BREAK;
   }
  FrmClass.ServerIP = textBox1.Text; //リモートコンピュータのIPアドレスを記録
   udpSocket1.Active = falseは、UDPの//近い接続
   udpSocket1.LocalPort = 11001; //設定したポート番号
   udpSocket1.Active =真; // UDP接続を開きます
   temMsg.sendKind = SendKind.SendConn; //伝送タイプを設定するコネクタ
   temMsg.ChessStyle = ChessStyle ;! //ピースの他のタイプを設定します

おすすめ

転載: www.cnblogs.com/bedfly/p/12128491.html