Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 67 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
67
Dung lượng
2,07 MB
Nội dung
MỤC LỤC LỜI MỞ ĐẦU .2 CHƯƠNG I : GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C#, GIAO THỨC TRUYỀN TIN TCP/IP VÀ LẬP TRÌNH SOCKET 1.1 Tổng quan ngôn ngữ lập trình C# 1.1.1 Giới thiệu C# 1.1.2 Tại lại sử dụng ngôn ngữ C# 1.1.3 C# ngôn ngữ khác .8 1.2 Giao thức truyền tin TCP/IP 1.2.1 Giới thiệu .9 1.2.2 Định nghĩa 10 1.2.3 Một số ưu điểm TCP/IP .10 1.2.4 Kiến trúc giao thức TCP/IP .11 1.2.5 Vai trò TCP 14 1.3 Lập trình Socket .16 1.3.1 Port (Cổng giao tiếp ) 16 1.3.2 Socket .17 CHƯƠNG : PHÂN TÍCH BÀI TOÁN CHƠI CỜ TƯỚNG TRÊN MẠNG INTERNET .32 2.1 Giới thiệu toán chơi cờ tướng mạng Internet 32 2.2 Mô hình Client/Server 33 2.2.1 Khái niệm mô hình Client/Server .33 2.2.2 Mô hình Client/Server Internet 33 2.3 Phân tích toán chơi cờ tướng mạng Internet .34 2.3.1 Xác định tác nhân .34 2.3.2 Xác định UC hệ thống (các ca sử dụng) 34 2.3.3 Phân tích chi tiết toán 36 CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH CHƠI CỜ TƯỚNG TRÊN MẠNG INTERNET 49 3.1 Giới thiệu môn cờ tướng 49 3.1.1 Lịch sử hình thành 49 3.1.2 Luật chơi cờ tướng .51 3.2 Bài toán chơi cờ tướng mạng Internet 58 3.2.1 Giới thiệu toán chơi cờ tướng mạng Internet 58 3.2.2 Giải vấn đề truyền liệu mạng Internet 59 3.2.3 Giải vấn đề đồ họa thiết kế giao diện 62 3.2.4 Giải vấn đề di chuyển quân cờ 62 3.2.5 Một số giao diện thường dùng 63 KẾT LUẬN .66 TÀI LIỆU THAM KHẢO 67 LỜI MỞ ĐẦU Hiện nay, công nghệ thông tin phát triển cách sâu rộng toàn diện tới tất lĩnh vực đời sống xã hội, sống người cải thiện nhanh chóng ngày phát triển Nhờ việc áp dụng tin học vào nhiều lĩnh vực khác ‘Công nghệ phần mềm’ phát triển mạnh mẽ toàn giới Nhờ giúp người nâng cao hiệu quản lý, tiết kiệm thời gian tiền Chính lợi ích to lớn mà người ngày phát triển mở rộng ứng dụng công nghệ thông tin nói chung công nghệ phần mềm nói riêng vào công việc hàng ngày đời sống xã hội Ở nước ta Công nghệ phần mềm phát triển cách nhanh chóng, đặc biêt công nghệ hướng đối tượng kèm với công nghệ, ngôn ngữ lập trình hướng đối tượng C++, Java, denphi, C#, sử dụng rộng rãi mang lại nhiều thành to lớn Tính ưu việt thể chỗ thích hợp với việc phát triển hệ thống lớn phức tạp, sản phẩm tạo dễ dàng nâng cấp bảo trì có tính sử dụng cao Với ý tưởng sử dụng công nghệ hướng đối tượng kết hợp với ngôn ngữ lập trình C# vào phát triển phần mềm, đồ án tốt nghiệp trình bày trình tìm hiểu xây dựng chương trình chơi cờ tướng mạng Internet giúp thư giãn, giải trí sau làm việc căng thẳng, giúp người làm việc hiệu sau phút giây thư giãn giúp người gần hơn, hiểu Mặc dù cố gắng vận dụng kiến thức tổng hợp để xây dựng chương trình, với thời gian kinh nghiệm thiếu, nên đồ án tránh khỏi thiếu xót Em mong giúp đỡ thầy cô giáo bạn để em hoàn thành tốt đồ án Em xin chân thành cảm ơn! CHƯƠNG I : GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C#, GIAO THỨC TRUYỀN TIN TCP/IP VÀ LẬP TRÌNH SOCKET 1.1 Tổng quan ngôn ngữ lập trình C# 1.1.1 Giới thiệu C# Ngôn ngữ C# đơn giản, khoảng 80 từ khóa mười kiểu liệu xây dựng sẵn Tuy nhiên, ngôn ngữ C# có ý nghĩa cao thực thi khái niệm lập trình đại C# bao gồm tất hỗ trợ cho cấu trúc, thành phần component, lập trình hướng đối tượng Những tính chất diện ngôn ngữ lập trình đại Và ngôn ngữ C# hội đủ điều kiện vậy, xây dựng tảng hai ngôn ngữ mạnh C++ Java Ngôn ngữ C# phát triển đội ngũ kỹ sư Microsoft, người dẫn đầu Anders Hejlsberg Scott Wiltamuth Cả hai người điều người tiếng, Anders Hejlsberg biết đến tác giả Turbo Pascal, ngôn ngữ lập trình PC phổ biến Và ông đứng đầu nhóm thiết kế Borland Delphi, thành công việc xây dựng môi trường phát triển tích hợp (IDE) cho lập trình client/server Phần cốt lõi hay gọi trái tim ngôn ngữ lập trình hướng đối tượng hỗ trợ cho việc định nghĩa làm việc với lớp Những lớp định nghĩa kiểu liệu mới, cho phép người phát triển mở rộng ngôn ngữ để tạo mô hình tốt để giải vấn đề Ngôn ngữ C# chứa từ khóa cho việc khai báo kiểu lớp đối tượng phương thức hay thuộc tính lớp, cho việc thực thi đóng gói, kế thừa, đa hình, ba thuộc tính ngôn ngữ lập trình hướng đối tượng Trong ngôn ngữ C# thứ liên quan đến khai báo lớp điều tìm thấy phần khai báo Định nghĩa lớp ngôn ngữ C# không đòi hỏi phải chia tập tin header tập tin nguồn giống ngôn ngữ C++ Hơn nữa, ngôn ngữ C# hỗ trợ kiểu XML, cho phép chèn tag XML để phát sinh tự động document cho lớp C# hỗ trợ giao diện interface, xem cam kết với lớp cho dịch vụ mà giao diện quy định Trong ngôn ngữ C#, lớp kế thừa từ lớp cha, tức không cho đa kế thừa ngôn ngữ C++, nhiên lớp thực thi nhiều giao diện Khi lớp thực thi giao diện cung cấp chức thực thi giao diện Trong ngôn ngữ C#, cấu trúc hỗ trợ, khái niệm ngữ nghĩa thay đổi khác với C++ Trong C#, cấu trúc giới hạn, kiểu liệu nhỏ gọn, tạo thể yêu cầu hệ điều hành nhớ so với lớp Một cấu trúc kế thừa từ lớp hay kế thừa cấu trúc thực thi giao diện Ngôn ngữ C# cung cấp đặc tính hướng thành phần (componentoriented), thuộc tính, kiện Lập trình hướng thành phần hỗ trợ CLR cho phép lưu trữ metadata với mã nguồn cho lớp Metadata mô tả cho lớp, bao gồm phương thức thuộc tính nó, bảo mật cần thiết thuộc tính khác Mã nguồn chứa đựng logic cần thiết để thực chức Do vậy, lớp biên dịch khối self-contained, nên môi trường hosting biết cách đọc metadata lớp mã nguồn cần thiết mà không cần thông tin khác để sử dụng Một lưu ý cuối ngôn ngữ C# ngôn ngữ hỗ trợ việc truy cập nhớ trực tiếp sử dụng kiểu trỏ C++ từ khóa cho dấu ngoặc [] toán tử Các mã nguồn không an toàn (unsafe) Và giải phóng nhớ tự động CLR không thực việc giải phóng đối tượng tham chiếu sử dụng trỏ chúng giải phóng 1.1.2 Tại lại sử dụng ngôn ngữ C# Nhiều người tin không cần thiết có ngôn ngữ lập trình Java, C++, Perl, Microsoft Visual Basic, ngôn ngữ khác nghĩ cung cấp tất chức cần thiết Ngôn ngữ C# ngôn ngữ dẫn xuất từ C C++, tạo từ tảng phát triển Microsoft bắt đầu với công việc C C++ thêm vào đặc tính để làm cho ngôn ngữ dễ sử dụng Nhiều số đặc tính giống với đặc tính có ngôn ngữ Java Không dừng lại đó, Microsoft đưa số mục đích xây dựng ngôn ngữ Những mục đích được tóm tắt sau: C# ngôn ngữ đơn giản C# ngôn ngữ đại C# ngôn ngữ hướng đối tượng C# ngôn ngữ mạnh mẽ mềm dẻo C# ngôn ngữ có từ khóa C# ngôn ngữ hướng module C# trở nên phổ biến 1.1.2.1 C# ngôn ngữ đơn giản C# loại bỏ vài phức tạp rối rắm ngôn ngữ Java C++, bao gồm việc loại bỏ macro, template, đa kế thừa, lớp sở ảo (virtual base class) Chúng nguyên nhân gây nhầm lẫn hay dẫn đến vấn đề cho người phát triển C++ Nếu người học ngôn ngữ chắn ta không trải qua thời gian để học nó! Nhưng ta hiệu ngôn ngữ C# loại bỏ vấn đề Ngôn ngữ C# đơn giản dựa tảng C C++ Nếu thân thiện với C C++ chí Java, thấy C# giống diện mạo, cú pháp, biểu thức, toán tử chức khác lấy trực tiếp từ ngôn ngữ C C++, cải tiến để làm cho ngôn ngữ đơn giản Một vài cải tiến loại bỏ dư thừa, thêm vào cú pháp thay đổi Ví dụ như, C++ có ba toán tử làm việc với thành viên ::, •, -> Để biết dùng ba toán tử phức tạp dễ nhầm lẫn Trong C#, chúng thay với toán tử gọi • (dot) Đối với người học điều việc cải tiến khác làm bớt nhầm lẫn đơn giản Ghi chú: Nếu sử dụng Java tin đơn giản, tìm thấy C# đơn giản Hầu hết người không tin Java ngôn ngữ đơn giản Tuy nhiên, C# dễ Java C++ 1.1.2.2 C# ngôn ngữ đại Điều làm cho ngôn ngữ lập trình gọi ngôn ngữ đại? Những đặc tính xử lý ngoại lệ, thu gom nhớ tự động, kiểu liệu mở rộng, bảo mật mã nguồn đặc tính mong đợi ngôn ngữ đại C# chứa tất đặc tính Nếu người học lập trình cảm thấy đặc tính phức tạp khó hiểu Ghi chú: Con trỏ tích hợp vào ngôn ngữ C++ Chúng nguyên nhân gây rắc rối ngôn ngữ C# loại bỏ phức tạp rắc rối phát sinh trỏ Trong C#, thu gom nhớ tự động kiểu liệu an toàn tích hợp vào ngôn ngữ, loại bỏ vấn đề rắc rối C++ 1.1.2.3 C# ngôn ngữ hướng đối tượng Những đặc điểm ngôn ngữ hướng đối tượng (Object-oriented language) đóng gói (encapsulation), kế thừa (inheritance), đa hình (polymorphism) Ngôn Ngữ C# hỗ trợ tất đặc tính 1.1.2.4 C# ngôn ngữ mạnh mẽ mềm dẻo Như đề cập trước, với ngôn ngữ C# bị giới hạn thân trí tưởng tượng Ngôn ngữ không đặt ràng buộc lên việc làm C# sử dụng cho nhiều dự án khác tạo ứng dụng xử lý văn bản, ứng dụng đồ họa, tính, hay chí trình biên dịch cho ngôn ngữ khác 1.1.2.5 C# ngôn ngữ từ khóa C# ngôn ngữ sử dụng giới hạn từ khóa Phần lớn từ khóa sử dụng để mô tả thông tin Chúng ta nghĩ ngôn ngữ có nhiều từ khóa mạnh Điều thật, trường hợp ngôn ngữ C#, tìm thấy ngôn ngữ sử dụng để làm nhiệm vụ 1.1.2.6 C# ngôn ngữ hướng module Mã nguồn C# viết phần gọi lớp, lớp chứa phương thức thành viên Những lớp phương thức sử dụng lại ứng dụng hay chương trình khác Bằng cách truyền mẫu thông tin đến lớp hay phương thức tạo mã nguồn dùng lại có hiệu 1.1.2.7 C# ngôn ngữ phổ biến C# ngôn ngữ lập trình nhất, chưa biết ngôn ngữ phổ biến Nhưng ngôn ngữ có số lý để trở thành ngôn ngữ phổ biến Một lý Microsoft cam kết NET Microsoft muốn ngôn ngữ C# trở nên phổ biến Mặc dù công ty làm sản phẩm trở nên phổ biến, hỗ trợ Cách không lâu, Microsoft gặp thất bại hệ điều hành Microsoft Bob Mặc dù Microsoft muốn Bob trở nên phổ biến thất bại C# thay tốt để đem đến thành công so với Bob Thật người công ty Microsoft sử dụng Bob công việc ngày họ Tuy nhiên, với C# khác, sử dụng Microsoft Nhiều sản phẩm công ty chuyển đổi viết lại C# Bằng cách sử dụng ngôn ngữ Microsoft xác nhận khả C# cần thiết cho người lập trình Micorosoft NET lý khác để đem đến thành công ngôn ngữ lập trình C#.Và NET thay đổi cách tạo thực thi ứng dụng Ngoài hai lý ngôn ngữ C# trở nên phổ biến đặc tính ngôn ngữ đề cập mục trước như: đơn giản, hướng đối tượng, mạnh mẽ, mềm dẻo… 1.1.3 C# ngôn ngữ khác Chúng ta nghe đến ngôn ngữ khác Visual Basic, C++ Java Có lẽ tự hỏi khác ngôn ngữ C# ngôn ngữ Và tự hỏi lại chọn ngôn ngữ để học mà không chọn ngôn ngữ Có nhiều lý xem số so sánh ngôn ngữ C# với ngôn ngữ khác giúp phần trả lời thắc mắc Microsoft nói C# mang đến sức mạnh ngôn ngữ C++ với dễ dàng ngôn ngữ Visual Basic Có thể không dễ Visual Basic, với phiên Visual Basic.NET (Version 7) ngang Bởi chúng viết lại từ tảng Chúng ta viết nhiều chương trình với mã nguồn dùng C# Mặc dù C# loại bỏ vài đặc tính C++, bù lại tránh lỗi mà thường gặp ngôn ngữ C++ Điều tiết kiệm hàng hay chí hàng ngày việc hoàn tất chương trình Một điều quan trọng khác với C++ mã nguồn C# không đòi hỏi phải có tập tin header Tất mã nguồn viết khai báo lớp Như nói bên .NET runtime C# thực việc thu gom nhớ tự động Do điều nên việc sử dụng trỏ C# quan trọng C++ Những trỏ sử dụng C#, đoạn mã nguồn đánh dấu không an toàn (unsafe code) C# từ bỏ ý tưởng đa kế thừa C++ Và khác khác C# đưa thêm thuộc tính vào lớp giống Visual Basic Và thành viên lớp gọi toán tử “•” khác với C++ có nhiều cách gọi tình khác Một ngôn ngữ khác mạnh phổ biến Java, giống C++ C# phát triển dựa C Nếu định học Java sau này, tìm nhiều mà học từ C# áp dụng Điểm giống C# Java hai biên dịch mã trung gian: C# biên dịch MSIL Java biên dịch bytecode Sau chúng thực cách thông dịch biên dịch just-in-time máy ảo tương ứng Tuy nhiên, ngôn ngữ C# nhiều hỗ trợ đưa để biên dịch mã ngôn ngữ trung gian sang mã máy C# chứa nhiều kiểu liệu Java cho phép nhiều mở rộng với kiểu liệu giá trị Ví dụ, ngôn ngữ C# hỗ trợ kiểu liệt kệ (enumerator), kiểu giới hạn đến tập định nghĩa trước, kiểu liệu cấu trúc kiểu liệu giá trị người dùng định nghĩa Tương tự Java, C# bỏ tính đa kế thừa lớp, nhiên mô hình kế thừa đơn mở rộng tính đa kế thừa nhiều giao diện 1.2 Giao thức truyền tin TCP/IP 1.2.1 Giới thiệu Vào cuối năm 1960 đầu 1970, Trung tâm nghiên cứu cấp cao (Advanced Research Projects Agency - ARPA) thuộc quốc phòng Mĩ (Department of Defense - DoD) giao trách nhiệm phát triển mạng ARPANET Mạng ARPANET bao gồm mạng tổ chức quân đội, trường đại học tổ chức nghiên cứu dùng để hỗ trợ cho dự án nghiên cứu khoa học quân đội (Ngày nay, ARPA gọi DARPA) Năm 1984, DoD chia ARPANET thành phần: ARPANET sử dụng cho nghiên cứu khoa học MILNET sử dụng cho quân đội Đầu năm 1980, giao thức đưa làm giao thức chuẩn cho mạng ARPANET mạng DoD mang tên DARPA Internet protocol suit, thường gọi giao thức TCP/IP hay gọi tắt TCP/IP Năm 1987 tổ chức nghiên cứu quốc gia Hoa Kỳ (National Science Foundation - NSF) tài trợ cho việc kết nối trung tâm siêu tính toàn liên bang lại với thành mạng với tên gọi NSFNET Về mặt vật lý, mạng kết nối 13 điểm làm việc đường điện thoại cao tốc gọi NSFNET backbone Khoảng đường backbone xây dựng NSFNET mở rộng với hàng chục mạng địa phương kết nối vào kết nối vào mạng Internet DARPA Cả NSFNET mạng sử dụng giao thức TCP/IP 1.2.2 Định nghĩa TCP (Transmission Control Protocol) giao thức hướng kết nối, cung cấp đường truyền liệu tin cậy hai máy tính Tính tin cậy thể việc đảm bảo liệu gửi đến đích theo thứ tự gửi Đặc biệt, TCP/IP cho phép người lập trình thiết lập truyền thông hai chương trình ứng dụng chuyền liệu qua lại.TCP/IP cung cấp kết nối bình đẳng ứng dụng kể ứng dụng chạy máy Như nhiều giao thức khác, giao thức TCP/IP coi tập hợp tầng, tầng giải tập vấn đề có liên quan đến việc truyền liệu, cung cấp cho giao thức tầng cấp dịch vụ định nghĩa rõ ràng dựa việc sử dụng dịch vụ tầng thấp Về mặt lôgic, tầng gần với người dùng làm việc với liệu trừu tượng hơn, chúng dựa vào giao thức tầng cấp để biến đổi liệu thành dạng mà cuối truyền cách vật lý 1.2.3 Một số ưu điểm TCP/IP 1-TCP/IP giao thức chuẩn phát triển độc lập với phần cứng hệ điều hành, giao thức lý tưởng cho việc hợp phần cứng phần mềm, truyền thông Internet Sự độc lập rành mạch với phần cứng vật lý mạng cho phép TCP/IP hợp mạng khác TCP/IP chạy mạng Ethernet, mạng Token ring, mạng quay số (Dial-up line), mạng X.25, mạng ảo loại môi trường vật lý truyền thông 2- Một sơ đồ địa dùng chung cho phép thiết bị TCP/IP có địa mạng mạng toàn cầu Internet 3- Tiêu chuẩn hoá mức cao giao thức phù hợp với lợi ích dịch vụ người dùng DARPA hỗ trợ việc nghiên cứu kết nối nhiều loại mạng khác lại thành mạng toàn cầu Internet Ngoài việc sử dụng cho tất máy Internet, TCP/IP sử dụng mạng nội số tổ chức phủ thương mại, mạng gọi Intranet TCP/IP vừa kết nối số 10 Hinh 3.2 : Quân cờ Giá trị hoạt động Tướng Soái, Binh Tốt nhau, ký tự khác Tượng, Sĩ, … (hình 3.2) Quy định quân cờ Tướng có hai màu Trắng Đen Các văn ghi chép thống dùng hai màu Các loại quân cờ chơi có nhiều màu Nếu màu Đỏ Xanh Đỏ coi Trắng, Xanh Đen Còn với màu khác quy ước màu nhạt Trắng, màu sẫm Đen Trên sách báo, quân chữ đen trắng gọi quân Trắng, quân có chữ trắng đen gọi quân Đen Đấu thủ cầm quân Trắng trước Điều 3: XẾP QUÂN KHI BẮT ĐẦU VÁN ĐẤU Khi bắt đầu ván đấu, bên phải xếp quân theo quy định giao điểm hình 3.3 53 Hình 3.3 : Vị trí xếp quân ban đầu bàn cờ Điều 4: ĐI QUÂN 4.1 Quân cờ xếp giao điểm di chuyển từ giao điểm sang giao điểm khác theo quy định cho loại quân 4.2 Nước ván cờ thuộc bên Trắng, sau đến bên Đen luân phiên thứ tự kết thúc ván cờ 4.2.1 Mỗi nước đi, bên di chuyển quân theo quy định 4.2.2 Nếu đấu trực tiếp ván phải bốc thăm chọn người trước Nếu đấu hai nhiều ván bốc thăm định người trước ván đầu, sau thay phiên cầm quân Trắng, Đen Thi đấu theo hệ vòng tròn, ván vào số (còn lại mã số, ấn định cho đấu thủ trước bắt thăm) đấu thủ bảng để xác định người trước Thi đấu theo hệ Thụy Sĩ vòng đấu phải xếp lại theo nhóm điểm, màu quân bốc thăm theo quy định 4.3 Cách loại quân quy định sau : a) Tướng (hay Soái): nước bước ngang dọc tùy ý cung Tướng Hai Tướng (Soái) không đối mặt trực tiếp 54 đường thẳng Nếu đối mặt, bắt buộc phải có quân bên đứng che mặt b) Sĩ: Mỗi nước bước theo đường chéo cung Tướng c) Tượng: Mỗi nước chéo hai bước trận địa bên mình, không qua sông Nếu đường chéo có quân khác đứng quân Tượng bị cản, không (xem hình 3.4) Hình 3.4 : Minh họa nước cản tượng: Tượng đen bị pháo trắng cản nên không tới điểm mà tới vị trí 1,2,3 d) Xe: Mỗi nước dọc ngang, không hạn chế số bước quân khác đứng cản đường e) Mã: Đi theo đường chéo hình chữ nhật hai ô vuông liền Nếu giao điểm liền kề bước thẳng, dọc, ngang có quân khác đứng Mã bị cản, không (xem hình 3.5) 55 Hình 3.5 : Minh họa nước cản Mã : Mã trắng bị Pháo đen cản nên tới vị trí 1, 2, 3, 6, 7, tới vị trí g) Pháo: Khi không bắt quân, nước ngang, dọc giống Xe; bắt quân đối phương đường Pháo quân bị bắt buộc phải có quân khác đứng làm “ngòi” Pháo ngòi hay có hai ngòi trở lên không quyền bắt quân đối phương h) Tốt (Binh): Mỗi nước bước Khi chưa qua sông Tốt tiến Khi Tốt qua sông quyền tiến ngang, không phép lùi Điều 5: BẮT QUÂN 5.1 Khi quân tới giao điểm khác có quân đối phương đứng quyền bắt quân đó, đồng thời chiếm giữ vị trí quân bị bắt 5.2 Không bắt quân bên Được phép cho đối phương bắt quân hay chủ động hiến quân cho đối phương, trừ Tướng (Soái) 5.3 Quân bị bắt phải bị loại bị nhấc khỏi bàn cờ Điều 6: CHIẾU TƯỚNG 6.1 Quân bên nước uy hiếp để nước quân quân khác bắt Tướng (Soái) đối phương gọi nước chiếu tướng Bên bị chiếu Tướng phải tìm cách chống đỡ ứng phó, tránh nước chiếu Tướng Nếu không bị thua ván cờ Khi nước chiếu Tướng, bên hô 56 “chiếu Tướng!” hay không cần hô Tướng bị chiếu từ bốn hướng (bị chiếu từ phía sau) 6.2 Ứng phó với nước chiếu Tướng Để không thua cờ, bên bị chiếu Tướng phải ứng phó theo cách sau: a) Di chuyển Tướng sang vị trí khác để tránh nước chiếu b) Bắt quân chiếu c) Dùng quân khác cản quân chiếu, quân che đỡ cho Tướng Điều 7: THẮNG CỜ, HÒA CỜ VÀ THUA CỜ 7.1 Thắng cờ: Trong ván cờ, đấu thủ thắng cờ nếu: a) Chiếu bí Tướng đối phương b) Khi Tướng (hay Soái) đối phương bị vây chặt quân khác đối phương di chuyển chưa bị chiếu hết, đối phương bị tuyên bố thua cờ c) Chiếu Tướng đối phương mà đối phương không chống đỡ cho Tướng d) Đối phương không đủ số nước quy định thời gian quy định e) Đối phương tới chậm thời gian quy định để bắt đầu ván đấu g) Bất kể tình nào, đối phương dùng quân chiếu dùng nhiều quân thay chiếu mãi, phải thay đổi nước di, không bị xử thua h) Đối phương phạm luật cấm, bên không phạm luật, bên phạm luật không chịu thay đổi nước i) Khi mở niêm phong tiếp tục ván hoãn, bên niêm phong ghi sai nước mà không giải thích bị xử thua Nếu đấu thủ có lượt ghi sai nước niêm phong đối phương bỏ hai bị xử thua k) Đối phương tự tuyên bố xin thua l) Đối phương vi phạm luật bị xử thua m) Đối phương không ghi lần biên lần gồm nước liên tục n) Đối phương mắc lỗi kỹ thuật lần, mắc lỗi tác phong lần o) Đối phương vi phạm trường hợp bị xử thua cụ thể cờ 7.2 Hòa cờ gặp tình sau đây: 57 a) Trọng tài xét thấy ván cờ mà hai bên bên thắng, tức hai bên không quân công đối phương để chiếu bí Tướng đối phương b) Hai bên không phạm luật cấm không chịu thay đổi nước c) Hai bên lúc phạm điều luật cấm (như đuổi bắt quân nhau…) d) Một bên đề nghị hòa, bên đối phương đồng ý ván cờ công nhận hòa e) Một bên đề nghị hòa, sau trọng tài kiểm tra bên đủ 60 nước mà nước bắt quân ván cờ xử hòa f) Khi bên vào bị chiếu hết, bị vây chặt không nước không phép đề nghị hòa g) Các trường hợp cụ thể hòa cờ, thể thức hòa cờ cờ hòa xem Điều 24 chương V luật 3.2 Bài toán chơi cờ tướng mạng Internet 3.2.1 Giới thiệu toán chơi cờ tướng mạng Internet Trong thời đại ngày nay, thông tin liên lạc vấn đề vô quan trọng, hệ thống thông tin đời đáp ứng phần nhu cầu Đặc biệt giao tiếp qua mạng máy tính trở thành xu thời đại không nội dung, hình thức, kinh tế mà tốc độ tính thuận tiện Theo dòng phát triển đó, lĩnh vực giải trí lĩnh vực đạt thành tựu to lớn Chơi cờ tướng mạng trò chơi nhiều người ưa chuộng Những chương trình chơi cờ tướng mạng Internet cần xây dựng hai lớp đối tượng phía máy Client phía máy Server Mỗi đối tượng có chức riêng thực vấn đề toán chơi cờ tướng mạng Internet Với Server, phải quản lý chung thao tác mà Client đưa tới Để làm điều Server phải mở cổng lắng nghe Khi nhận thông tin từ phía Client qua cổng phải kiểm tra đăng nhập định 58 cần thiết, đồng thời theo dõi tiến trình máy Client trình vào ghi lại nhật ký, gửi thông điệp tới Client khác, đưa thông tin đối thủ tới máy khách, Phía Client tham gia mạng phải kết nối tới Server, thành công bắt đầu tiến trình trao đổi thông điệp Server quản lý, đồng thời có quyền thiết lập số thuộc tính giao diện Khi Client ngắt kết nối, Server đưa thông báo tới tất máy Client khác mạng mà kết nối, máy có thông báo máy rời khỏi mạng 3.2.2 Giải vấn đề truyền liệu mạng Internet Đây vấn đề phổ biến, có nhiều phương pháp để truyền liệu, xong việc sử dụng giao thức TCP/IP coi đơn giản - Máy trạm nghe ngóng, chờ đợ yêu cầu máy chủ : while (true) { MyListener = new TcpListener(PortNumber); MyListener.Start(); MyClient = MyListener.AcceptTcpClient(); MyNetStream = MyClient.GetStream(); MyClient.NoDelay = true; try { byte[] bytes = new byte[MyClient.ReceiveBufferSize]; MyNetStream.Read(bytes,0,(int)MyClient.ReceiveBufferSize); MessageBox.Show(Encoding.ASCII.GetString(bytes),"May2"); string returndata = "da nhan dc"; Byte[] SendTheseBytes =Encoding.ASCII.GetBytes(returndata); MyNetStream.Write(SendTheseBytes, 0, SendTheseBytes.Length); } 59 catch (IOException) { } MyListener.Stop(); } - Máy chủ gửi yêu cầu cho máy trạm nhận kết trả public byte[] Request(string ip,int port, string request) { byte[] bytes = new byte[1200000]; try { TcpClient client; NetworkStream networkStream; //ket noi client = new TcpClient(ip, port); client.ReceiveBufferSize = 1200000; networkStream = client.GetStream(); try { //yeu cau try { Byte[] SendTheseBytes = Encoding.ASCII.GetBytes(request); networkStream.Write(SendTheseBytes, 0, SendTheseBytes.Length); networkStream.Flush(); } catch (IOException) { 60 MessageBox.Show("Lỗi truyền liệu tới địa " + ip + " Sự cố khắc phục sau vài giây! Hãy thử lại!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); } //nhan dap tra try { networkStream.Read(bytes, 0, (int)client.ReceiveBufferSize); networkStream.Flush(); } catch (IOException) { MessageBox.Show("Lỗi đọc liệu từ địa " + ip + " Sự cố khắc phục sau vài giây! Hãy thử lại!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (ObjectDisposedException od) { MessageBox.Show("Đường truyền gián đoạn từ địa " + ip + ".Lỗi: " + od.Message, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); } networkStream.Close(); client.Close(); } catch (SocketException) { bytes = Encoding.ASCII.GetBytes("Error"); } 61 return bytes; } 3.2.3 Giải vấn đề đồ họa thiết kế giao diện Khi thiết kế chương chình phải lựa chọn giao diện thân thiện, trực quan dễ sử dụng, hầu hết người thiết kế chọn giao diện đồ họa Giao diện đồ họa kết hợp hài hòa hình ảnh, biểu tượng nút Khi xây dựng chương trình chơi cờ tướng qua mạng Internet, quân cờ bàn cờ phải xây dựng trực quan cho người chơi có cảm giác chơi cờ bên giới thực Chúng ta phải quản lý việc kích chuột người chơi ta thiết kế ma trận điểm ảnh tạo cho việc quản lý việc nhấn chuột người chơi trở lên dễ dàng nhiều Chúng ta phải xử lý việc vẽ quân cờ cho xác, phải tính sai số điểm ảnh mà người chơi nhấn quân cờ bàn cờ để di chuyển quân cờ đặt quân cờ cho xác 3.2.4 Giải vấn đề di chuyển quân cờ Khi người chơi nhấn chuột trái lên quân cờ cạnh quân cờ sai số 25 điểm ảnh chương trình gọi hàm tính vị trí quân cờ tính nước cho quân cờ đó, sau chương trình vẽ bàn cờ vị trí mà quân cờ tới Nếu người chơi nhấn chuột lên đểm sai số so với điểm 25 điểm ảnh quân cớ di chuyển tới vị trí 62 3.2.5 Một số giao diện thường dùng 1- Bàn cờ khởi tạo Chương trình chưa kết nối với máy chủ, form ta nhập địa IP máy chủ vào ô nhập địa IP máy chủ sau nhấn nút ket noi để kết nối máy chủ – Giao diện bàn cờ chương trình kết nối máy chủ Sau nhấn connect để kết nối máy chủ groupBox1.Enabled = true; groupBox1.Visible = true; pictureBox1.Enabled = true; groupBox2.Enabled = false; Các groupBox1, groupBox1, pictureBox1 gán true load cho phép chơi cờ, đồng thời groupBox2 gán false để ngăn không cho người chơi truy cập, tác động đến server 63 – Giao diện chương trình chat Chúng ta chat với người chơi danh sách người chơi cách chọn người chơi nhấn nút moichat 64 4- Giao diện đăng ký thành viên người chơi Để có quyền sử dung chức chương trình bạn cần đăng ký làm thành viên để nhận dạng với Server 65 KẾT LUẬN Sau trình tìm hiểu, khảo sát nhu cầu giải trí, đặc biệt nhu cầu chơi cờ tướng mạng Internet nghiên cứu ứng dụng công nghệ dotnet, ngôn ngữ lập trình visual C#.net hỗ trợ lập trình Microsoft Visual Studio 2005 vào công việc cụ thể xây dựng chương trình chơi cờ tướng mạng Internet, giúp em nắm bắt kiến thức lập trình hướng đối tượng, lập trình ứng dụng mạng Internet hoàn thành đề tài 1/ Những ưu điểm sản phẩm Chương trình đáp ứng yêu cầu chương trình chơi cờ tướng mạng Internet + Xử lý yêu cầu truyền liệu mạng Internet + Hai người giao tiếp chơi cờ với qua hệ thống mạng + Trong chơi, hai người chat với + Giao diện chương trình thiết kế đơn giản, thân thiện, dễ sử dụng, đặc biệt người sử dụng máy tính 2/ Những nhược điểm cần khắc phục: Các chức chương trình chưa phong phú + Cách trình bày giao diện chưa đẹp mắt, chưa chuyên nhiệp + Việc truyền liệu mạng Internet chưa thực tối ưu + Chưa kết hợp tốt giải thuật nhanh để hỗ trợ dự đoán khả thắng/thua bên 3/ Hướng phát triển đề tài: + Phát triển chương trình đầy đủ chức trình bày, thiết kế giao diện phù hợp, chuyên nghiệp bắt mắt + Giải vấn đề truyền liệu mạng ngày nhanh + Khắc phục hoàn thiện khả bắt nước hết cờ hoàn thiện Em mong nhận giúp đỡ thầy giáo, thầy cô giáo bạn sinh viên Khoa để ý tưởng sớm trở thành thực 66 TÀI LIỆU THAM KHẢO [1] Phương Lan, Lập trình Windows với C#.net, Nhà xuất lao động xã hội, 2002 [2] Đoàn Văn Ban, Phân tích, thiết kế lập trình hướng đối tượng, Nhà xuất thống kê, 1997 [3] Nguyễn Thiên Bằng, Phạm Ngọc Thạch, Từng bước học lập trình Visual C#.net, Nhà xuất Lao động – Xã hội, 2002 [4] Phạm Hữu Khang, Kỹ thuật lập trình ứng dụng C# toàn tập, Nhà xuất Lao động – Xã hội, 2002 [5] Website : http://www.codeproject.com [6] Website : http://www.codeforge.com [7] Website : http://dot.net.vn [8] Website : http://manguon.com 67