using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using System.Net.Sockets;
using System.Net;
namespace Legend_of_mir2
{
public partial class Main : Form
{
//服務器名稱數組
string[] ServerName = new string[25];
//服務器IP地址數組
string[] ServerIP = new string[25];
//服務器端口數組
string[] ServerPort = new string[25];
//服務器名稱用於寫入配置文件
string StartGameName = null;
//服務器IP地址用於寫入配置文件
string StartGameNameIP = null;
//服務器端口用於寫入配置文件
int StartGameNamePort = 7000;
public Main()
{
InitializeComponent();
}
/// <summary>
/// 程序加載
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Main_Load(object sender, EventArgs e)
{
//判斷是否在傳奇目錄
if (File.Exists(Environment.CurrentDirectory + "//map//0.map"))
{
}
else
{
MessageBox.Show("請在傳奇目錄運行!","提示");
//關閉程序
Application.Exit();
}
}
/// <summary>
/// 點擊進入遊戲按鈕觸發事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
//獲取應用程序路徑
string path = Environment.CurrentDirectory;
//檢測並創建配置文件
FileStream FsFtp = new FileStream(path + "//ftp.ini", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
FileStream FsMir = new FileStream(path + "//mir.ini", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
FileStream FsMst = new FileStream(path + "//mirsetup.ini", FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite);
//關閉流
FsFtp.Close();
FsMir.Close();
FsMst.Close();
//寫入配置文件
//配置文件ftp.ini
StreamWriter SwFtp = new StreamWriter(path + "//ftp.ini");
SwFtp.WriteLine("[Server]");
SwFtp.WriteLine("ServerCount=1");
SwFtp.WriteLine("Server1caption=" + StartGameName);
SwFtp.WriteLine("Server1name=" + StartGameName.ToString().Trim());
//配置文件mir.ini
StreamWriter MrFtp = new StreamWriter(path + "//mir.ini");
MrFtp.WriteLine("[setup]");
MrFtp.WriteLine("ServerAddr=" + StartGameNameIP);
MrFtp.WriteLine("FontName=Fixedsys");
//配置文件mirsetup.ini
StreamWriter MsFtp = new StreamWriter(path + "//mirsetup.ini");
MsFtp.WriteLine("[setup]");
MsFtp.WriteLine("ServerAddr=" + StartGameNameIP);
MsFtp.WriteLine("FontName=Fixedsys");
//關閉流
MsFtp.Close();
MrFtp.Close();
SwFtp.Close();
try
{
//設置啓動進程信息
ProcessStartInfo info = new ProcessStartInfo();
//啓動文件
info.FileName = path + "//Mir.Client.dat";
//禁止使用系統程序外殼程序啓動進程
info.UseShellExecute = false;
//啓動進程
Process.Start(info);
}
catch (Exception ex)
{
//異常
MessageBox.Show("意外錯誤!!!"+ex.Message); ;
}
}
/// <summary>
/// 添加新服務器
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void AddGames_Click(object sender, EventArgs e)
{
//統計服務器數量
int Num = ListBox.Items.Count;
#region 服務器名稱
if (tbName.Text != "" || tbName.Text != null)
{
//添加服務器名稱進列表
ListBox.Items.Add(tbName.Text.Trim());
//添加服務器名稱進入數組
ServerName[Num] = this.tbName.Text.Trim();
}
else
{
//服務器名稱爲填寫
MessageBox.Show("請填寫服務器名稱!");
}
#endregion
#region IP地址判斷
//獲取用戶輸入IP地址
string ip = this.tbIP.Text.Trim();
//正則表達式判斷IP地址合法性
if (System.Text.RegularExpressions.Regex.IsMatch(ip, "[0-9]{1,3}//.[0-9]{1,3}//.[0-9]{1,3}//.[0-9]{1,3}"))
{
string[] ips = ip.Split('.');
if(ips.Length == 4 || ips.Length == 6)
{
if (System.Int32.Parse(ips[0]) < 256 && System.Int32.Parse(ips[1]) < 256 & System.Int32.Parse(ips[2]) < 256 & System.Int32.Parse(ips[3]) < 256)
{
//添加IP地址進入數組
ServerIP[Num] = ip;
}
else
{
//清除列表中 當前用戶輸入的錯誤信息
ListBox.Items.Remove(tbName.Text.Trim());
MessageBox.Show("IP地址錯誤!請從新輸入!");
}
}
else
{
//清除列表中 當前用戶輸入的錯誤信息
ListBox.Items.Remove(tbName.Text.Trim());
MessageBox.Show("IP地址錯誤!請從新輸入!");
}
}
else
{
//清除列表中 當前用戶輸入的錯誤信息
ListBox.Items.Remove(tbName.Text.Trim());
MessageBox.Show("IP地址錯誤!請從新輸入!");
}
#endregion
#region 端口號判斷
try
{
//獲取用戶輸入端口號
int Port = int.Parse(this.textBox2.Text.Trim());
//判斷端口號是否爲整數
int TextNum = Convert.ToInt32(Port);
//添加端口號進入數組
ServerPort[Num] = Port.ToString();
}
catch
{
//清除列表中 當前用戶輸入的錯誤信息
ListBox.Items.Remove(tbName.Text.Trim());
MessageBox.Show("對不起,端口號不正確!請重新輸入");
}
#endregion
}
/// <summary>
/// 選擇服務器時觸發事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ListBox_MouseDown(object sender, MouseEventArgs e)
{
//獲取用戶在列表中 選擇的項
int Num = ListBox.SelectedIndex;
//如果列表爲空
if (Num == -1)
{
MessageBox.Show("還未添加服務器,/r/r/n請添加服務器!","友情提示");
return;
}
//獲得用戶選擇的服務器IP地址
string Serverip = ServerIP[Num];
//獲得用戶現在的服務器端口
string Serverport = ServerPort[Num];
//狀態顯示
State.Text = "正在測試.....";
try
{
//測試服務器端口是否開放
TcpClient tp = new TcpClient(Serverip, int.Parse(Serverport));
//結束連接
tp.Close();
//狀態顯示
State.Text = "該服務器正常運行!";
//設置進程啓動參數----IP name port
StartGameName = ServerName[Num].ToString();
StartGameNameIP = ServerIP[Num].Trim();
StartGameNamePort = int.Parse(ServerPort[Num]);
}
catch (Exception)
{
State.Text = "該服務器維護中!";
}
}
/// <summary>
/// 鼠標移動到listBox觸發事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ListBox_MouseEnter(object sender, EventArgs e)
{
//如果listbox還沒選擇項
if (ListBox.SelectedIndex == -1)
{
//如果列表框項數量>0
if (ListBox.Items.Count > 0)
{
//默認選擇第一項
ListBox.SelectedIndex = 0;
}
else
{
//設置爲未選擇狀態
ListBox.SelectedIndex = -1;
}
}
}
}
}
//解決部分的代碼
/// <summary>
/// 點擊進入遊戲按鈕觸發事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
try
{
//獲取應用程序路徑
string path = Environment.CurrentDirectory;
//檢測並創建配置文件
FileStream FsFtp = new FileStream(path + "//ftp.ini", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
FileStream FsMir = new FileStream(path + "//mir.ini", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
FileStream FsMst = new FileStream(path + "//mirsetup.ini", FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite);
//寫入配置文件
//配置文件ftp.ini
StreamWriter SwFtp = new StreamWriter(FsFtp, Encoding.Unicode);
SwFtp.WriteLine("[Server]");
SwFtp.WriteLine("ServerCount=1");
SwFtp.WriteLine("Server1caption=" + StartGameName);
SwFtp.WriteLine("Server1name=" + StartGameName.ToString().Trim());
//配置文件mir.ini
StreamWriter MrFtp = new StreamWriter(FsMir, Encoding.Unicode);
MrFtp.WriteLine("[setup]");
MrFtp.WriteLine("ServerAddr=" + StartGameNameIP);
MrFtp.WriteLine("FontName=宋體");
//配置文件mirsetup.ini
StreamWriter MsFtp = new StreamWriter(FsMst, Encoding.Unicode);
MsFtp.WriteLine("[setup]");
MsFtp.WriteLine("ServerAddr=" + StartGameNameIP);
MsFtp.WriteLine("FontName=宋體");
//關閉流
MsFtp.Close();
MrFtp.Close();
SwFtp.Close();
//關閉流
FsFtp.Close();
FsMir.Close();
FsMst.Close();
//設置啓動進程信息
ProcessStartInfo info = new ProcessStartInfo();
//啓動文件
info.FileName = path + "//Mir.Client.dat";
//禁止使用系統程序外殼程序啓動進程
info.UseShellExecute = false;
//啓動進程
Process.Start(info);
}
catch (Exception ex)
{
//異常
MessageBox.Show("意外錯誤!!!"+ex.Message); ;
}
}