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 NHẬN XÉT CỦA GIÁO VIÊN MỤC LỤC 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 (Webbased 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. 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. Phân rã biểu đồ user case
Trang 1LỜ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
Trang 2NHẬN XÉT CỦA GIÁO VIÊN
MỤC LỤC TÀI LIỆU THAM KHẢO 61
Trang 31 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
Trang 4Mộ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
Trang 5Phâ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ê
Trang 6
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
Trang 72.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ị
Trang 82.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
Trang 92.2.2.2 Chức năng hiển thị
2.2.2.3 Chức năng thi đấu
Trang 102.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
Trang 112.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
Trang 122.2.4.2 Chức năng hiển thị thông tin
Trang 132.2.4.3 Chức năng thi đấu
2.2.5 Biểu đồ triển khai
Trang 143 Xây dựng chương trình
//Tạo một class để lưu trử thông tin về bàn cờ
{
public string nameleft = "";
public string nameright = "";
public string quanleft = "";
public string quanright = "";
public int capdoleft = 0;
public int capdoright = 0;
Trang 15(N'" + user + "','" + matkhau + "','','" + mail +
"','',N'" + leves + "')";
public void VaoBan(int soban, string name, string quan, int capdo, string left)
{
Trang 16}
//
//Xóa thông tin người chơi tại bàn cờ
//
public void RoiBan(int soban, string
Trang 17'"+ leves +"' WHERE tennguoidung = '"+ user +"'";
Trang 18{
conn.Open();
}
if (commd.ExecuteNonQuery() == 0) {
'" + matkhaumoi + "' WHERE tennguoidung = '" + user + "'";
Trang 19where tennguoidung = N'"+user+"' and matkhau =
Trang 20[WebMethod(Description = "kiem tra
where tennguoidung = N'" + user + "'";
string strUser = string.Empty;
for (int i = 0; i < arrUsers.Count; i++) {
strUser = strUser +
arrUsers[i].ToString() + "|";
}
return strUser;
Trang 21string strBan = string.Empty;
for (int i = bandau; i <=bancuoi; i++) {
bool bFlag = false;
for (int i = 0; i < arrUsers.Count; i++)
{
if (arrUsers[i].ToString() == strUser)
Trang 23public void GuiNuocdi(string strFromUser, string strToUser, string strMess)
Trang 24{
string strMess = string.Empty;
for (int i = 0; i < arrMessage.Count; i++)
{
string[] strTo =
if (strTo[0].ToString() == strUser) {
public string ReceiveNuocDi(string strUser) {
Trang 25public string GetMail(string user)
{
try
{
where tennguoidung = N'" + user + "'";
public string GetPass(string user)
{
try
{
Trang 26string sql = "select *from login where tennguoidung = N'" + user + "'";
Trang 27Giới thiệu code:
hoặc mật khẩu không đúng!");
Server không thành công Vui lòng kiểm tra lại ",
"Thông báo", MessageBoxButtons.OK,
}
Trang 29if ((int.Parse(str[1])!=ban)||!ghe.Equals(str[2]))
Trang 30{
AddItem(listUser, strUsers[i]);
bt,string name);
name)
{
Trang 35CapNhatBanCo.IsBackground = true; CapNhatBanCo.Start();
Trang 36}
private void btpHiepSi_Click(object sender,
Trang 37}
Trang 383.2.3 Form thi đấu
Giới thiệu code:
public partial class frmThiDau : Form
public static string quancota;
public frmThiDau()
{
InitializeComponent();
Trang 39}
hình để chứa hình X or O
public static int cot;
public static int dong;
#region tạo bàn cờ
cul, int s1, int s2);
public void banco(int row, int cul, int s1, int s2)
//khai báo số phần tử cho khung ảnh
Trang 40lac = new Label[row + 1];
#region tạo đường caro từ các lable for (int i = 0; i <= cul; i++)
this.lar[i].TabIndex = ind; ind++;
Trang 41this.lac[i].TabIndex = ind; ind++;
panelbanco.Controls.Add(lac[i]); }
this.pic[i, j].MinimumSize = new System.Drawing.Size(33, 33);
+ i.ToString() + ":" + j.ToString();
this.pic[i, j].Size = new
this.pic[i, j].TabIndex = ind; ind++;
this.pic[i, j].TabStop = false;
Trang 43nhan_tin_chat.Start();
}
//sự kiên click chuột vào khung hình
private void pic_Click(object sender,
{
(sender))).Name;//lấy tên khung hình tại vị trí
click chuột >> vidu: pic1_2
vitri = vitri.Substring(3);//lấy phần số phía sau > vidu 1:2
int vtrirow = int.Parse(str[0]);
int vtricul = int.Parse(str[1]);
Trang 44
int vtrirowdi, int vtriculdi);
private bool dico(string quanco, int
vtrirowdi, int vtriculdi)
{
if (pic[vtrirowdi,
vtriculdi].InvokeRequired)
{
quanco, vtrirowdi, vtriculdi);
Trang 46panelbanco.Enabled = true;
if (kiemtracheophai(vtrirowdi,
vtriculdi, quanco) || kiemtracheotrai(vtrirowdi, vtriculdi, quanco) || kiemtrathangdoc(vtrirowdi, vtriculdi, quanco) || kiemtrathangngang(vtrirowdi, vtriculdi, quanco))
{
timer1.Enabled = true;
Trang 47private void Addchat(string str)
Trang 48int vtricul =
int.Parse(strTemp1[2].Trim());
if (dico(quancodoithu,
vtrirow, vtricul))
{
chungcuoc = false; if (main.capdo > 0) {
server.UpdateLever(userta, (main.capdo - 1).ToString()); }
}
}
}
catch (Exception ex) {
nhan_tin.Abort(); nhan_tin = new Thread(new ThreadStart(RecvNuocDi)); nhan_tin.IsBackground = true; nhan_tin.Start(); }
}
}
private delegate void dgnhandoithu(string name, string quan); private void nhandoithu(string name, string quan) {
if (lblUserNamedt.InvokeRequired) {
this.Invoke(new dgnhandoithu(nhandoithu), name, quan); }
else {
lblUserNamedt.Text = name; }
}
Trang 49btbatdau.Enabled = true; txtchat.Enabled = true; btsend.Enabled = true; }
}
else if
(strTemp1[1].Equals("$#$"))
{
Trang 50panelbanco.Dispose(); banco(10, 15, 100, 200); panelbanco.Enabled = false;
panelbanco.Dispose(); banco(10, 15, 100, 200); timer1.Enabled = false; panelbanco.Enabled = false;
Trang 51banco(10, 15, 100, 200); choilai();
menuStrip1.Enabled = true;
btbatdau.Enabled =
false;
btsend.Enabled = false; txtchat.Enabled = false;
nhan_tin_chat.Start();
}
}
}
#region thuật thoán thắng thua
public bool kiemtrathangngang(int vtrirow, int vtricul, string quanco)
Trang 53pi[i] = pic[vtrirow, vtricul];
Trang 56public void chienthang()
Trang 60}
private void choilai()
nếu bạn thoát bạn sẽ thua! Bạn có muốn thoát?",
"Thông Báo", MessageBoxButtons.YesNo) ==
Trang 61TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] Bài Giảng Môn Lập Trình Website ASP.Net của Dương Thành Phết
[2] soap-wsdl-asp-net-webservice/
http://yinyangit.wordpress.com/2011/07/08/web-service-basic-concepts-Tiếng Anh
[3] Ethan Cerami (2002), Web Services Essentials, O’reilly Media
[4] James Snell, Doug Tidwell & Pavel Kulchenko, Programming Web Services With
SOAP, O’reilly, 2001.