バックギャモン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 ;! //ピースの他のタイプを設定します
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 ;! //ピースの他のタイプを設定します