Chương trình đánh cờ carô qua mạng

61 4K 26
Chương trình đánh cờ carô qua mạng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯờNG ĐạI HọC VINH KHOA CÔNG NGHệ THÔNG TIN --------------------- Trịnh Đức Trung chơng trình đánh cờ carô qua mạng Đồ áN TốT NGHIệP đại học Vinh 5-2009 Đồ án tốt nghiệp Đánh cờ Carô qua mạng MỤC LỤC  Mục lục .Trang Phần mở đầu 1 Chương I. Tổng quan về ngôn ngữ Java . 2 1.1. Gới thiệu về ngôn ngữ Java .2 1.2. Vài nét về ngôn ngữ Java 5 1.2.1. Ngôn ngữ lập trình Java 6 1.2.2. Máy ảo Java (Java Virtual Machine) 7 1.2.3. Tính dễ chuyển mang và tính năng của phần mềm 8 1.2.4. Java với việc quản lý bộ nhớ 9 1.2.5. Java và WWW (World Wide Web) 10 1.3. Một số đặc điểm nổi bật của ngôn ngữ lập trình Java .11 1.3.1. Máy ảo Java (JVM - Java Virtual Machine) .11 1.3.2. Thông dịch 12 1.3.3. Độc lập nền .12 1.3.4. Hướng đối tượng: .12 1.3.5. Đa nhiệm - đa luồng (MultiTasking - Multithreading) .13 1.3.6. Khả chuyển (portable) 13 1.3.7. Hỗ trợ mạnh cho việc phát triển ứng dụng .13 CHƯƠNG II. Xây dựng chương trình đánh cờ carô qua mạng .14 2.1. Mục đích của chương trình: 14 2.2. Thiết kế giải thuật cho chương trình Client/Server .14 2.2.1. Giao tiếp Socket 14 2.2.2. Thiết kế giải thuật cho chương trình client .17 2.2.3. Thiết kế giải thuật cho chương trình server 17 2.3. Thiết kế giải thuật cho trò chơi Carô .17 2.4. Cấu trúc của chương trình .18 2.4.1. Các lớp phía Client .18 2.4.1.1. Lớp ServerConnection 18 2.4.1.2. Lớp FrameCaro . 20 Trang 2 Đồ án tốt nghiệp Đánh cờ Carô qua mạng 2.4.1.3. Lớp CaroClient 22 2.4.1.4. Lớp Board 36 2.4.1.5. Lớp Cell 39 2.4.1.6. Lớp IntroCanvas 42 2.4.2. Các lớp phía Server 44 2.4.2.1. Lớp ClientConnection . 44 2.4.2.2. Lớp Server 44 2.4.2.3. Lớp Gomoku 48 Chương III. Hướng Dẫn Sử Dụng và Đánh Giá Chương Trình “Đánh Cờ Carô Qua Mạng " .53 3.1. Hướng dẫn sử dụng chương trình 53 3.1.1. Các yêu cầu để chạy được chương trình 53 3.1.2. Thiết lập kết nối sở dữ liệu cho chương trình .53 3.1.3. Chạy chương trình .53 3.1.3.1. Chạy máy chủ Carô .53 3.1.3.2. Chạy chương trình đánh cờ Carô 54 3.2. Kết quả xử lý .57 Tài liệu tham khảo 58 Lời cảm ơn Đồ án tốt nghiệp đại học là công trình khoa học đầu tiên và rất quan trọng của sinh viên. Tuy nhiên khi bắt tay vào nghiên cứu đề tài, viết báo cáo và thuyết trình trước hội đồng thì còn nhiều bỡ ngỡ không tránh khỏi sai sót, mong thầy và các bạn thông cảm và những góp ý quý báu nhằm hoàn thiện hơn cho sản phẩm Em xin chân thành cảm ơn: _ Ban giám hiệu nhà trường đã quan tâm, tạo điều kiện thuận lợi để chúng em học tập và rèn luyện tốt. _ Các thầy trong khoa công nghệ thông tin đã tận tâm giảng dạy, truyền đạt những kiến thức quý báu giúp em hoàn thành được luận văn tốt nghiệp và phục vụ cho công việc của em sau nay. _ Thầy giáo PGS-TS Mai Văn Trinh đã hướng dẫn, chỉ bảo tận tình giúp em hoàn thành luận văn tốt nghiệp này. Trang 3 Đồ án tốt nghiệp Đánh cờ Carô qua mạng _ Các anh chị, bạn bè sinh viên lớp 45k CNTT đã giúp đỡ trong quá trình học tập. _ Anh Lê Văn Đông đã giúp em trong quá trình tìm hiểu và nghiên cứu luận văn tốt nghiệp này. _ Gia đình cùng toàn thể bạn bè đã động viên giúp đỡ trong thời gian học tập và làm luận văn. Phần mở đầu Ngày nay, xã hội phát triển mạnh mẽ, cuộc sống xã hội ngày càng được cải thiện và nâng cao nên nhu cầu vui chơi, giải trí….ngày càng lớn. Ở châu Á phong trào chơi games phát triển mạnh mẽ với yêu cầu ngày càng cao. Những games chơi độc lập trên một máy tính ngày càng không đáp ứng được yêu cầu mà thay vào đó là những games với nhiều máy tính kết nối với nhau. Xuất phát từ nhu cầu đó em đã thực hiện đề tài “ĐÁNH CỜ CARÔ QUA MẠNG“. Trước đây lập trình mạng dễ gặp lỗi, khó khăn và phức tạp. Lập trình viên phải biết rõ về mạng và thậm chí là cả phần cứng. Tuy nhiên các khái niệm về việc nối mạng cũng không quá khó. Bạn muốn lấy dữ liệu từ một máy ở đằng kia đến một máy ở đây, hoặc ngược lại. Nó hoàn toàn giống như việc đọc và ghi file, ngoại trừ một điều là file tồn tại trên một máy ở xa và máy này thể quyết định chính xác điều nó muốn làm về thông tin mà bạn yêu cầu hay gởi đến. Trang 4 Đồ án tốt nghiệp Đánh cờ Carô qua mạng Một trong những sức mạnh của Java là làm cho lập trình mạng dễ dàng hơn. Các chi tiết về hạ tầng mạng được trừu tượng hóa càng nhiều càng tốt và được Java Virtual Machine(JVM) và máy cục bộ cài Java quản lý. Mô hình lập trình bạn sử dụng giống như lập trình file vậy, thực sự, bạn chỉ việc “bọc” kết nối mạng (một socket) bằng một đối tượng luồng (stream). Chương trình “Đánh cờ Carô qua mạng” được xây dựng dưới đây áp dụng kỹ thuật lập trình mạng bằng ngôn ngữ Java, do SunMicroSystem đưa ra vào năm 1991 với những ưu điểm: _ Mã chương trình rõ ràng,dễ đọc , dễ hiểu và đọng. _ Chương trình được tổ chức thành những Class lắp ghép lại với nhau thành một khối thống nhất. _ Mỗi Class gồm nhiều Method đảm nhận các vai trò khác nhau trong chương trinh. _ Chương trình tính mềm dẻo cao. _ khả năng tái sử dụng tài nguyên . Chương I TỔNG QUAN VỀ NGÔN NGỮ JAVA 1.1. Giới thiệu về ngôn ngữ Java Java trở lại vào năm 1991, khi nhóm kĩ sư của Sun đứng đầu Patrick Naughton, Sun Fellow và James Gosling, muốn thiết kế 1 ngôn ngữ máy tính nhỏ, ngôn ngữ mà thể được sử dụng cho các thiết bị như cáp điều khiển của TV. Bởi vì thiết bị này không nhiều năng lượng hay bộ nhớ, ngôn ngữ phải cực nhỏ và code phải chặt chẽ. Bởi sự khác nhau giữa các nhà sản xuất thể chọn CPU khác nhau, nó rất quan trong và ngôn ngữ không phải lúc nào cũng thích hợp với các kiến trúc. Dự án tên "Green". Các yêu cầu: nhỏ, chặt chẽ, code nền tảng trung lập vì thế đội quay về mô hình mà Pascel đã cố gắng bổ sung trong những ngày đầu của PC. Niklaus Wirth, Trang 5 Đồ án tốt nghiệp Đánh cờ Carô qua mạng người phát minh Pascal đã mở đường cho việc thiết kế ngôn ngữ portable (có thể di chuyển được hay đa nền) là ngôn ngữ code trung gian dành cho máy giả lập. (Nó thường được gọi là máy ảo, Java virtual machine JVM). Code trung gian này thể được sử dụng trên bất cứ máy nào interpreter. Các kĩ sư của nhóm Green sử dụng máy ảo tốt để giải quyết vấn đề này. Tuy nhiên, những người của Sun đến từ nền tảng Unix vì thế họ dựa trên ngôn ngữ của họ là C++ thay vì Pascal. Họ tạo nên ngôn ngữ hướng đối tượng thay vì hướng thủ tục. Nhưng, như Gosling nói trong bài phỏng vấn, "Tất cả các ngôn ngữ là công cụ, không phải là kết thúc". Gosling quyết định gọi ngôn ngữ của ông là "Oak" (bởi vì ông thích nhìn cây sồi ở bên ngoài cửa sổ tay phải ở Sun). Những người ở Sun về sau nhận ra rằng Oak là tên của 1 ngôn ngữ máy tính đã tồn tại vì thế họ chuyển tên thành Java. Đây là sự lựa chọn cũng rất thú vị. Java là tên gọi của một hòn đảo ở Indonexia, Đây là nơi nhóm nghiên cứu phát triển đã chọn để đặt tên cho ngôn ngữ lập trình Java trong một chuyến đi tham quan và làm việc trên hòn đảo này. Hòn đảo Java này là nơi rất nổi tiếng với nhiều khu vườn trồng cafe, đó chính là lý do chúng ta thường thấy biểu tượng ly café trong nhiều sản phẩm phần mềm, công cụ lập trình Java của Sun cũng như một số hãng phần mềm khác đưa ra. Vào năm 1992, dự án Green đã phát hành sản phẩm đầu tiên, được gọi là "*7.". Nó là một thiết bị từ xa cực kì thông minh. (Nó sức mạnh của bộ điều khiển vô tuyến trong 1 hộp 6 inches, 4 inches, 4 inches). Không may thay, ko người nào thích sản phẩm này của Sun, nhóm Green phải tìm cách để market công nghệ của họ. Tuy nhiên, không một công ty chuẩn về điện tử thích cả. Sau đó nhóm đặt giá project để thiết kế lại hộp cáp TV là cái thể làm thay đổi với các dịch vụ cáp mới như video dựa trên yêu cầu. Họ không hợp đồng. (Công ty được dẫn đầu bởi Jim Clarck - là người bắt đầu Netscape - 1 công ty đã làm nên thành công của Java). Dự án Green (với cái tên mới "First Person, Inc.") được sử dụng trong năm 1993 và nửa năm 1994, tìm kiếm người mua công nghệ đó - không người nào được tìm. (Patrich Naughton, người mà trong nhóm hầu hết làm công việc marketing, đã đi 300.000 dặm để bán công nghệ). First Person bị giải thể vào năm 1994. Trong khi tất cả điều này đang xảy ra với Sun thì thế giới Web trên Internet đang trưởng thành và lớn dần. Chìa khoá của Web là browser (trình duyệt) là cái để Trang 6 Đồ án tốt nghiệp Đánh cờ Carô qua mạng dịch các trang siêu văn bản lên màn hình. Vào năm 1994, hầu hết mọi người đều sử dụng Mosaic, trình duyệt web ko thương mại đã vượt ra ngoài trung tâm siêu máy tính ở trường Đại học Illinois năm 1993. (Mosaic được viết bởi Marc Andreessen với 6.85$ 1 giờ như 1 sinh viên chưa tốt nghiệp làm việc trong dự án vừa làm vừa học. Sau đó anh ta đã trở nên nổi tiếng và giàu như 1 người thủ lĩnh ở Netscape). Trong phỏng vấn của SunWorld, Gosling nói vào giữa năm 1994, các nhà lập trình ngôn ngữ nhận ra rằng "Chúng ta thể xây dựng 1 trình duyệt tốt. Nó là 1 trong vài thứ của luồng chính client/ server là luồng mà đã số phận, chúng ta đã làm: kiến trúc trung lập, thời gian thực, tin cậy, bảo mật - phát hành thì không thực sự quan trong trong thế giới workstation (các trạm). Vì thế chúng ta xây dựng 1 browser". Browser đã được xây dựng bởi Patrick Naughton và Jonathan Payne và đã hình thành browser HotJava. Browser HotJava được viết bởi Java để thể hiện sức mạnh của Java. Nhưng những nhà xây dựng cũng chú ý đến sức mạnh mà được gọi là applets, vì thế họ đã tạo browser khả năng chạy code bên trong trang web. Điều này "chứng minh công nghệ" được trình diễn ở SunWorld vào năm 95, chính xác là vào ngày 23/5/1995 và tạo nên sự hấp dẫn của Java tiếp tục. Vì Java xuất phát từ một dự án nghiên cứu chứ không phải là một sản phẩm nhằm mục đích sinh lời, công ty Sun đã đồng ý đưa Java Development Kit (bộ công cụ phát triển Java, bao gồm chương trình dịch và hệ thống đáp ứng chạy chương trình) lên Internet miễn phí vào khoảng giữa năm 1995. Trong vòng 6 tháng kể từ khi công bố miễn phí, Java đã được hơn một trăm ngàn người lập trình sử dụng. Hai năm sau, đã tới hơn bốn trăm ngàn nhà phát triển phần mềm Java. Vì Java chạy khắp mọi nơi, tổng thị phần tiềm tàng cho toàn bộ các nhà lập trình này là trên 250 triệu hệ thống máy tính trên thế giới. thể nói rằng không một ngôn ngữ nào trong quá khứ gặt hái được nhiều thành tích trong một thời gian ngắn như vậy. Tuy nhiên, do tốc độ chấp nhận Java quá nhanh, đôi khi bạn cũng thể thấy những ý kiến cho rằng sự "khuyếch trương quá đáng" về Java. Cũng dễ hiểu là đôi khi một phát triển mới thường gây sự chú ý vì nó thực sự tốt hơn những cái khác trong quá khứ. Sun cho ra đời phiên bản đầu tiên của Java vào đầu năm 1996. Mọi người nhanh chóng nhận ra rằng Java 1.0 sẽ không dành cho việc lập trình ứng dụng quan trong. Chắc chắn, bạn thể sử dụng Java 1.0 để tạo 1 đoạn text applet về thần kinh Trang 7 Đồ án tốt nghiệp Đánh cờ Carô qua mạng để di chuyển text một cách ngẫu nhiên quanh canvas. Nhưng bạn không thể in trong Java 1.0. Nói 1 cách thẳng thắn, Java 1.0 không sẵn sàng cho thời kì sơ khai. Sự thành công của phiên bản 1.1 đã lấp đầy những khoảng trống lỗi, cải thiện khả năng phản xạ và thêm vào các mô hình sự kiện mới cho lập trình GUI (Graphics User Interface). Tuy nhiên nó vẫn bị giới hạn. Tin tức lớn của JavaOne vào năm 1998 đó là Java update lên phiên bản 1.2 thay thế cho những đồ chơi GUI và các công cụ đồ hoạ với phiên bản phức tạp và tinh vi đến rất gần hơn với lời hứa "Viết 1 lần, chạy mọi nơi" ("Write Once, Run Anywhere") so với người tiền nhiệm. 3 ngày sau phiên bản của nó vào tháng 12 năm 1998, bộ phận Marketing đã đổi tên của nó thành Java 2 Standard Edition Software Development Kit version 1.2 (Java 2 chuẩn công cụ phát triển phần mềm Phiên bản 1.2). Bên cạnh bộ "Standard Edition" còn hai edition khác được giới thiệu: "Micro Edition dành cho thiết bị nhúng như cell phones và "Enterprise Edition" dành cho việc xử lý phía server. Quyển sách này đề cập về Standard Edition. Phiên bản 1.3 và 1.4 của Standard Edition là bước cải tiến vượt qua phiên bản đầu Java 2 với sự phát triển của thư viện chuẩn, tăng tính khả thì và tất nhiên cả việc fix các lỗi. Trong thời gian này nhiều thổi phồng về Java applet và ứng dụng phía client nhưng Java trở thành platform - sự lựa chọn cho các ứng dụng phía server. Phiên bản 5.0 là phiên bản đầu từ khi phiên bản 1.1 được update thực sự ý nghĩa. (Phiên bản này là khởi đầu của số 1.5, nhưng phiên bản số được nhảy thành 5.0 vào 2004). Sau nhiều năm tìm kiếm, các kiểu chung (nhưng cái tương thích với template của C++) được thêm vào - thách thức là thêm đặc trưng này mà ko làm thay đổi trong máy ảo. Vài điểm đặc trưng ích của ngôn ngữ trở nên hấp dẫn bởi C#: vòng lặp "for each", autoboxing và metadata. Ngôn ngữ thay đổi nguồn, nhưng vài ngôn ngữ trong số những ngôn ngữ mới sức thu hút và chúng tôi nghĩ những nhà lập trình sẽ sử dụng chúng một cách hăm hở. Java các phiên bản sau: J2EE TM (Java 2 Platform, Enterprise Edition): phiên bản dành cho máy chủ lớn với sức mạnh xử lý và dung lượng bộ nhớ lớn. J2SE TM (Java 2 Platform, Standard Edition): phiên bản chuẩn chạy trên các máy PC Trang 8 Đồ án tốt nghiệp Đánh cờ Carô qua mạng và laptop với một số MB bộ nhớ. Các máy tính này mặc dù không mạnh bằng các máy chủ nhưng vẫn mạnh hơn nhiều so với các thiết bị di động. J2ME TM (Java 2 Platform, Micro Edition): là một phiên bản rút gọn của Java cho các thiết bị di động giới hạn về bộ nhớ và bộ xử lý. 1.2. Vài nét về ngôn ngữ Java - Hệ thống Java bao gồm một số cấu phần như sau: + Ngôn ngữ lập trình Java. + Java Virtual Machine (Máy o Java, bộ thông dịch). + Các thư viện phần mềm đi kèm hệ thống . + Chương trình duyệt web HotJava hoặc chương trình duyệt web khác thích ứng với Java. - Bạn cũng nên lưu ý rằng một số phần mềm bao hàm tên Java nhưng chỉ liên quan ngoài lề với Java. Chẳng hạn như javascript. Đây là ngôn ngữ chỉ lệnh (script language) do Netscape Communications Corporation xây dựng. javascript được dùng trong chương trình duyệt Netscape để nhắc người sử dụng nhập, đọc thông tin, mở và đóng các cửa sổ phụ trợ v.v. javascript hỗ trợ khả năng lập trình bản của chương trình duyệt nhưng không phải là một ngôn ngữ ứng dụng vạn năng như Java. Với việc xây dựng hỗ trợ Java trong Netscape Navigator 2.0, Netscape đã giúp cho việc phổ biến rộng rãi Java. Đổi lại, Netscape được Sun cho phép dùng tên Java cho ngôn ngữ chỉ lệnh của họ. javascript chẳng liên quan gì tới Java, vì vậy để trở thành người lập trình Java bạn không cần phải học javascript. Dĩ nhiên nếu bạn đã biết javascript rồi thì cũng không sao. 1.2.1. Ngôn ngữ lập trình Java - Thực ra Java không đưa ra nhiều ý tưởng hoàn toàn mới mà sự đổi mới ở đây là việc gom lại các ý tưởng hay nhất của các hệ thống đi trước. Java là một ngôn ngữ lập trình hướng đối tượng trong cùng một họ như C++, Pascal hay Algol-60. Các chương trình Java các mô tả dữ liệu và các câu lệnh nhóm lại trong các hàm (do Java là một ngôn ngữ lập trình hướng đối tượng, các hàm của nó thường được gọi là các "phương pháp" (method). Các phương pháp thể gọi tới các phương pháp khác. Sự thực hiện chương trình sẽ được bắt đầu với một phương pháp tên đặc biệt là main(). Trang 9 Đồ án tốt nghiệp Đánh cờ Carô qua mạng - Java nhanh chóng được nhiều nhà lập trình công nhận. Các câu lệnh và các biểu diễn tương tự như trong nhiều ngôn ngữ và trong nhiều trường hợp là đồng nhất như trong C hoặc C++. Mặc dù Java đã bổ sung một số điểm mới, nét phân biệt nhất của Java lại là những đặc điểm mà nó bỏ qua. Chẳng hạn, so sánh với C, Java không có: + Số học địa chỉ bộ nhớ (con trỏ). + Bộ tiền xử lý. + Câu lệnh goto. + Chuyển đổi kiểu tự động. + Các biến và hàm tổng thể. + Các định danh xác định kiểu. Còn so với C++ thì Java không có: + Các mẫu (template - tuy nhiên người ta đang tính đến việc bổ sung đặc điểm này cho Java). + Quá tải toán tử (operator overloading). + Đa thừa kế. + Đa ABI (Application Binary Interface, giao diện nhị phân ứng dụng). - Nếu bạn không phải là người lập trình C++ và bạn không biết một số những khái niệm trên thì cũng không hề gì. Ngay cả một người lập trình C++ cũng không nhất thiết đã thành thạo tất cả những khía cạnh này. Với Java bạn không cần phải biết tới chúng. - Tới đây, lẽ bạn cũng muốn biết liệu Java thay thế C++ hay không. Trên thực tế thể nói rằng Java đang "cạnh tranh" với C++ trên phương diện ngôn ngữ đầu tiên được xem xét đến để phát triển các ứng dụng mới. Tuy nhiên, các ngôn ngữ lập trình mức cao không bao giờ thực sự mất đi cả. C++ sẽ vẫn còn trong một thời gian nữa đối với các ứng dụng riêng. 3 lý do về việc người ta sẽ tiếp tục lập trình với C++ là: + Tính tương thích với mã hiện tại. + Không cần đào tạo lại cán bộ liên quan. + sẵn nhiều công cụ tốt hơn (nhanh hơn). - Trong các lý do nêu trên, lý do đầu tiên sát với thực tế về việc bảo trì mã chương trình bằng C++, nhưng lẽ cũng chỉ xác đáng cho một thời gian ngắn nữa. Trang 10 . tốt nghiệp Đánh cờ Carô qua mạng CHƯƠNG II XÂY DỰNG CHƯƠNG TRÌNH ĐÁNH CỜ CARÔ QUA MẠNG 2.1. Mục đích của chương trình: Vận dụng các kỹ thuật lập trình của. --------------------- Trịnh Đức Trung chơng trình đánh cờ carô qua mạng Đồ áN TốT NGHIệP đại học Vinh 5-2009 Đồ án tốt nghiệp Đánh cờ Carô qua mạng MỤC LỤC  Mục lục .Trang

Ngày đăng: 18/12/2013, 12:32

Hình ảnh liên quan

keys: Danh sỏch cỏc từ khúa, một bảng băm lưu ỏnh xạ giữa chuỗi ký tự trong mảng keystrings và vị trớ của chỳng trong mảng - Chương trình đánh cờ carô qua mạng

keys.

Danh sỏch cỏc từ khúa, một bảng băm lưu ỏnh xạ giữa chuỗi ký tự trong mảng keystrings và vị trớ của chỳng trong mảng Xem tại trang 21 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan