Tải bản đầy đủ (.doc) (61 trang)

Xây dựng phần mềm chơi cờ Caro online

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (581.2 KB, 61 trang )

Cờ Caro Online GVHD: Th.s Bùi Phú Cường
LỜI NÓI ĐẦU
Để cũng cố kiến thức về mạng, ngôn ngữ lập trình và các kiến thức đã
học khác. Nhóm chúng em thực hiện đề tài: “Xây dựng phần mềm chơi cờ
Caro online” cho môn thực tập chuyên ngành.
Chúng em xin chân thành cảm ơn thầy Bùi Phú Cường đã giúp đỡ để
chúng em hoàn thành tốt phần mềm.
Quảng Ngãi, ngày 20 tháng 11 năm 2011
Thành viên nhóm:
1. Trương Công Nghĩa
2. Đỗ Tấn Trung
3. Nguyễn Văn Hành
Thực tập chuyên ngành Trang 1
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
NHẬN XÉT CỦA GIÁO VIÊN


















MỤC LỤC
TÀI LIỆU THAM KHẢO 61
Thực tập chuyên ngành Trang 2
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
1. Giới thiệu chung
Giới thiệu về phần mềm
Cờ Caro là một trò chơi dân gian, rất dễ chơi, ai cũng có thể chơi được.
Cờ Caro là một trò chơi trí tuệ, đòi hỏi người chơi phải nhanh trí trong khi
chơi…
Để xây dựng phần mềm, nhóm chúng em đã sử dụng công nghệ Web
Service và ngôn ngữ lập trình C# để thực hiện.
Giới thiệu về Web Service
Web Services là một cách chuẩn để tích hợp các ứng dụng trên nền web
(Web-based applications). Các ứng dụng có thể sử dụng các thành phần khác
nhau để tạo thành một dịch vụ, ví dụ như máy chủ chạy một trang web thương
mại điện tử kết nối với cổng thanh toán điện tử qua một API - Application
Programming Interface ( tạo tởi công nghệ .NET thì web services chính là nền
máy chủ (IIS - Internet Information Services), và các thành phần thanh toán,
các thành phần .NET được coi là component (các thành phầm bên ngoài). Các
thành phần này được gọi bởi phương thức SOAP (Khác phương thức POST,
GET) nên không bị gặp phải firewall khi truy xuất các thành phần bên ngoài
máy chủ. Và toàn bộ các thành phần đó gọi là một Web Services.
Các Web Services cho phép các tổ chức thực hiện truyền thông dữ liệu mà
không cần phải có kiến thức về hệ thống IT phía sau tường lửa. Một số Web
Services hiện nay có sẵn miễn phí và càng ngày càng hướng dần vào các
doanh nghiệp.
Thực tập chuyên ngành Trang 3
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
Một ví dụ về Web Service sẵn có là dịch vụ được cung cấp bởi PayPal cho

phép những người có tài khoản có thể thanh toán hoặc trả một phần hoặc thực
hiện các giao dịch tìm kiếm, và lấy lại các thông tin của từng giao dịch cụ thể.
2. Phân tích - thiết kế hệ thống thông tin
Pha phân tích
Biểu đồ các user case
Biểu đồ user case tổng quát
Hệ thống gồm có ba chức năng chính là đăng nhập hệ thống, hiển thị
thông tin, thi đâu. Khi người chơi đăng nhập hệ thống thành công sẽ đi đến
chức năng hiển thị các thông tin người cùng chơi, sau đó vào thi đấu khi đã
chọn đối thủ hay bàn chơi.
Thực tập chuyên ngành Trang 4
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
Phân rã biểu đồ user case
Biểu đồ user case đăng nhập
Biểu đồ user case hiển thị thông tin
Biểu đồ user case thống kê
Thực tập chuyên ngành Trang 5
Cờ Caro Online GVHD: Th.s Bùi Phú Cường

Biểu đồ trạng thái
Chức năng dăng nhập
Chức năng hiển thị thông tin
Chức năng thi đấu
Thực tập chuyên ngành Trang 6
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
2.2 Pha thiết kế
2.2.1 Biểu đồ tuần tự
2.2.1.1 Đăng nhập
2.2.1.2 Chức năng hiển thị
Thực tập chuyên ngành Trang 7

Cờ Caro Online GVHD: Th.s Bùi Phú Cường
2.2.1.3 Chức năng thi đấu
2.2.2 Biểu đồ cộng tác
2.2.2.1 Chức năng đăng nhập
Thực tập chuyên ngành Trang 8
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
2.2.2.2 Chức năng hiển thị
2.2.2.3 Chức năng thi đấu
Thực tập chuyên ngành Trang 9
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
2.2.3 Thiết kế chi tiết từng chức năng
2.2.3.1 Chức năng đăng nhập
2.2.3.2 Chức năng hiển thị thông tin
Thực tập chuyên ngành Trang 10
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
2.2.3.3 Chức năng thi đấu
2.2.4 Biểu đồ hoạt động
2.2.4.1 Chức năng đăng nhập
Thực tập chuyên ngành Trang 11
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
2.2.4.2 Chức năng hiển thị thông tin
Thực tập chuyên ngành Trang 12
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
2.2.4.3 Chức năng thi đấu
2.2.5 Biểu đồ triển khai
Thực tập chuyên ngành Trang 13
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
3. Xây dựng chương trình
3.1 Xây dựng WebService
//Tạo một class để lưu trử thông tin về bàn cờ

public class BanCo
{
public string nameleft = "";
public string nameright = "";
public string quanleft = "";
public string quanright = "";
public int capdoleft = 0;
public int capdoright = 0;
//hàm trả về tình trạng bàn cờ
public string Gettinhtrangban()
{
if (nameleft.Equals(""))
{
if (nameright.Equals(""))
{
return "empty";
}
else return "right";
}
else
{
if (nameright.Equals(""))
{
return "left";
}
else
return "full";
}
}
}

Thực tập chuyên ngành Trang 14
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
//
//hàm dùng để đang ký tài khoản (thêm một tài khoản
vào cơ sở dữ liệu)
//
[WebMethod(Description = "Add New
Account ")]
public int AddAccount(string user, string
matkhau, string mail, string leves)
{
string sql = "Insert into login values
(N'" + user + "','" + matkhau + "','','" + mail +
"','',N'" + leves + "')";
SqlConnection conn = getConnection();
SqlCommand commd = new SqlCommand(sql,
conn);
try
{
//Kiem tra trang thai cua connection
if (conn.State.ToString() ==
"Closed")
{
conn.Open();
}
if (commd.ExecuteNonQuery() == 0)
{
return 0;
}
}

catch (Exception ex)
{
return 0;
}
return 1;
}
//
//Hàm dùng để lưu thông tin của người chơi
tren bàn cờ
//
[WebMethod(Description = "Vào bàn ")]
public void VaoBan(int soban, string name,
string quan, int capdo, string left)
{
Thực tập chuyên ngành Trang 15
Cờ Caro Online GVHD: Th.s Bùi Phú Cường

if (left.Equals("l"))
{
dsbanco[soban].nameleft = name;
dsbanco[soban].quanleft = quan;
dsbanco[soban].capdoleft = capdo;
}
if (left.Equals("r"))
{
dsbanco[soban].nameright = name;
dsbanco[soban].quanright = quan;
dsbanco[soban].capdoright = capdo;
}
}

//
//Xóa thông tin người chơi tại bàn cờ
//
[WebMethod(Description = "Ra khỏi bàn ")]
public void RoiBan(int soban, string
leftright)
{
if (leftright.Equals("l"))
{
dsbanco[soban].nameleft = "";
dsbanco[soban].quanleft = "";
dsbanco[soban].capdoleft = 0;
}
if (leftright.Equals("r"))
{
dsbanco[soban].nameright = "";
dsbanco[soban].quanright = "";
dsbanco[soban].capdoright = 0;
}
}
//
//Hàm trả về tên đối thủ trong bàn mình tham
gia
//
[WebMethod]
public string GetTenDoiThu(int ban, string
gheta)
{
Thực tập chuyên ngành Trang 16
Cờ Caro Online GVHD: Th.s Bùi Phú Cường

if(gheta.Equals("l"))
return dsbanco[ban].nameright;
return dsbanco[ban].nameleft;
}
//
//Hàm trả về quan cờ đối thủ trong bàn mình
tham gia
//
[WebMethod]
public string GetQuanDoiThu(int ban, string
gheta)
{
if (gheta.Equals("l"))
return dsbanco[ban].quanright;
return dsbanco[ban].quanleft;
}
//
//trả về tình trạng của bàn cờ nào đó
//
[WebMethod]
public string GetTinhTrangBan(int ban)
{
return dsbanco[ban].Gettinhtrangban();
}
//
//Sửa cấp độ của người chơi
//
[WebMethod(Description = "Update
Lever ")]
public int UpdateLever(string user, string

leves)
{
string sql = "UPDATE login SET lever =
'"+ leves +"' WHERE tennguoidung = '"+ user +"'";
SqlConnection conn = getConnection();
SqlCommand commd = new SqlCommand(sql,
conn);
try
{
//Kiem tra trang thai cua connection
if (conn.State.ToString() ==
"Closed")
Thực tập chuyên ngành Trang 17
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
{
conn.Open();
}
if (commd.ExecuteNonQuery() == 0)
{
return 0;
}
}
catch (Exception ex)
{
return 0;
}
return 1;
}
//
//Hàm đổi mật khẩu

//
[WebMethod(Description = "Đổi mật
khẩu ")]
public int DoiMK(string user, string
matkhaumoi)
{
string sql = "UPDATE login SET matkhau =
'" + matkhaumoi + "' WHERE tennguoidung = '" + user
+ "'";
SqlConnection conn = getConnection();
SqlCommand commd = new SqlCommand(sql,
conn);
try
{
//Kiem tra trang thai cua connection
if (conn.State.ToString() ==
"Closed")
{
conn.Open();
}
if (commd.ExecuteNonQuery() == 0)
{
return 0;
}
}
catch (Exception ex)
Thực tập chuyên ngành Trang 18
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
{
return 0;

}
return 1;
}
//
//Hàm kiểm tra đăng nhập
//
[WebMethod(Description = "kiem tra ton tai
user ")]
public int ktAccount(string user, string
matkhau)
{
try
{
string sql = "select *from login
where tennguoidung = N'"+user+"' and matkhau =
'"+matkhau+"'";
SqlConnection conn =
getConnection();
SqlDataAdapter adapter = new
SqlDataAdapter(sql, conn);
DataTable dtb = new
DataTable("login");
adapter.Fill(dtb);
if (dtb.Rows.Count> 0)
{
return int.Parse(dtb.Rows[0]
[3].ToString());
}
else return -1;
}

catch (Exception ex)
{
return -1;
}

}
//
//Trả về cấp độ của người chơi
//
Thực tập chuyên ngành Trang 19
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
[WebMethod(Description = "kiem tra
leves ")]
public int GetCapDo(string user)
{
try
{
string sql = "select *from login
where tennguoidung = N'" + user + "'";
SqlConnection conn =
getConnection();
SqlDataAdapter adapter = new
SqlDataAdapter(sql, conn);
DataTable dtb = new
DataTable("login");
adapter.Fill(dtb);
if (dtb.Rows.Count > 0)
{
return (int.Parse(dtb.Rows[0]
[3].ToString()));

}
else return 0;
}
catch (Exception ex)
{
return 0;
}
}
//
//Lấy danh sách những người đang online
//
[WebMethod]
public string GetUsers()
{
string strUser = string.Empty;
for (int i = 0; i < arrUsers.Count; i++)
{
strUser = strUser +
arrUsers[i].ToString() + "|";
}
return strUser;
Thực tập chuyên ngành Trang 20
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
}
//
//Lấy thông tin về tất cả các bàn cờ
//
[WebMethod]
public string GetBanCo(int bandau, int
bancuoi)

{
string strBan = string.Empty;
for (int i = bandau; i <=bancuoi; i++)
{
if (!
dsbanco[i].Gettinhtrangban().Equals("empty"))
strBan = strBan + i.ToString()+
":" + dsbanco[i].Gettinhtrangban()+ ":" +
dsbanco[i].nameleft + ":" + dsbanco[i].nameright+
"|";
}
return strBan;
}
//
//Thêm user vào danh sách online
//
[WebMethod]
public int AddUser(string strUser)
{
try
{
bool bFlag = false;
for (int i = 0; i < arrUsers.Count;
i++)
{
if (arrUsers[i].ToString() ==
strUser)
bFlag = true;

}

if (bFlag == false)
arrUsers.Add(strUser);
return 1;
}
catch { return 0; }
Thực tập chuyên ngành Trang 21
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
}
//
//Xóa user vào danh sách online
//
[WebMethod]
public void RemoveUser(string strUser)
{
for (int i = 0; i < arrUsers.Count; i++)
{
if (arrUsers[i].ToString() ==
strUser)
arrUsers.RemoveAt(i);
}
for (int i = 0; i < arrMessage.Count; i+
+)
{
string[] strTo =
arrMessage[i].ToString().Split(':');
if (strTo[0].ToString() == strUser)
{
arrMessage.RemoveAt(i);
}
}

}
//
//Gửi tin nhắn cho đối phương
//
[WebMethod]
public void SendMessage(string strFromUser,
string strToUser, string strMess)
{
//kiểm tra xem còn online không
int dem = 0;
for (int i = 0; i < arrMessage.Count; i+
+)
{
string[] strTo =
arrMessage[i].ToString().Split(':');
if (strTo[0].ToString() ==
strToUser)
{
Thực tập chuyên ngành Trang 22
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
dem++;
}
}
if (dem >= 2)
{//không còn thì loại bỏ đối thủ ra khỏi
danh sách online
RemoveUser(strToUser);
for (int i = 1; i <= 32; i++)
{
if (!

dsbanco[i].Gettinhtrangban().Equals("empty"))
{
if
(dsbanco[i].nameleft.Equals(strToUser)) RoiBan(i,
"l");
if
(dsbanco[i].nameright.Equals(strToUser)) RoiBan(i,
"r");
}

}
}
else
//còn thì gửi tin
arrMessage.Add(strToUser + ":" +
strFromUser + ":" + strMess);
}
//
//Gửi nước đi cho đối thủ
//
[WebMethod(Description ="Gửi nước đi ")]
public void GuiNuocdi(string strFromUser,
string strToUser, string strMess)
{
arrdico.Add(strToUser + ":" +
strFromUser + ":" + strMess);
}
//
//Nhận tin nhắn từ đối phương
//

[WebMethod]
public string ReceiveMessage(string strUser)
Thực tập chuyên ngành Trang 23
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
{
string strMess = string.Empty;
for (int i = 0; i < arrMessage.Count; i+
+)
{
string[] strTo =
arrMessage[i].ToString().Split(':');
if (strTo[0].ToString() == strUser)
{
for (int j = 1; j <
strTo.Length; j++)
{
strMess = strMess + strTo[j]
+ ":";
}
arrMessage.RemoveAt(i);
break;
}
}
return strMess;
}
//
//Nhận nước đi từ đối phương
//
[WebMethod(Description="Nhận nước đi ")]
public string ReceiveNuocDi(string strUser)

{
string strMess = "";
for (int i = 0; i < arrdico.Count; i++)
{
string[] strTo =
arrdico[i].ToString().Split(':');
if (strTo[0].ToString() == strUser)
{
for (int j = 1; j <
strTo.Length; j++)
{
strMess = strMess + strTo[j]
+ ":";
}
arrdico.RemoveAt(i);
break;
Thực tập chuyên ngành Trang 24
Cờ Caro Online GVHD: Th.s Bùi Phú Cường
}
}
return strMess;
}
//
//Trả về địa chỉ mail của user
//
[WebMethod(Description = "Lấy mail ")]
public string GetMail(string user)
{
try
{

string sql = "select *from login
where tennguoidung = N'" + user + "'";
SqlConnection conn =
getConnection();
SqlDataAdapter adapter = new
SqlDataAdapter(sql, conn);
DataTable dtb = new
DataTable("login");
adapter.Fill(dtb);
if (dtb.Rows.Count > 0)
{
return dtb.Rows[0]
[2].ToString();
}
else return "";
}
catch (Exception ex)
{
return "";
}
}
//
//Trả về password của user
//
[WebMethod(Description = "Lấy pass ")]
public string GetPass(string user)
{
try
{
Thực tập chuyên ngành Trang 25

×