Báo cáo mẫu dành cho các bạn đang học môn công nghệ phần mềm, với nội dung về trò chơi cờ caro đơn giản thiết thực.Đầy đủ sườn chi tiết, cách trình bày cũng như phương hướng của bài báo cáo. Đề tài “Game Cờ Caro” hiện đang được xây dựng bằng những kiến thức cơ bản cần được hoàn thiện hơn ở nhiều phần cũng như bổ sung thêm nhiều tính năng:Có thể thêm SQL vào với mục đích lưu tài khoản mật khẩu giúp đăng nhập vào chơi.Kết hợp với lập trình web đề đưa lên web.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP.HCM
- -ĐỒ ÁN MÔN HỌC CÔNG NGHỆ PHẦN MỀM PHẦN MỀM GAME CỜ CARO
Ngành: Công nghệ thông tin
Giảng viên hướng dẫn : Tạ Thu Thủy
Lớp : 17DTHD2
Nguyễn Quang Vĩnh Điền 1711062259
Trang 2
TP Hồ Chí Minh, 2019 DANH SÁCH THÀNH VIÊN STT HỌ VÀ TÊN Số điện thoại CÔNG VIỆC % HOÀN THÀNH 1 Võ Tâm Anh Thuyết trình, tìm code tham khảo, làm word báo cáo 2 Nguyễn Văn Bảo 0386291775 Word báo cáo, thêm CodeLàm pp thuyết trình, caro 3 Nguyễn Quang VĩnhĐiền 0837627520 Tìm nội dung pp thuyết trình, Làm pp báo cáo, thuyết trình 4 Lê Nguyên Khang(Nhóm trưởng) 0765340127 Trả lời câu hỏi, tìm nội dung PP thuyết trình, làm word báo cáo, làm pp báo cáo 5 Nguyễn Trung Liêm trình, tìm hiểu nội dungViết code caro, thuyết pp thuyết trình Lời Nhận Xét của giảng viên: ………
………
………
………
………
………
………
Trang 3………
………
………
………
MỤC LỤC Lời mở đầu 1
Chương 1 Tổng quan 1
1.1 Tổng quan về vấn dề được nghiên cứu 1
1.2 Nhiệm vụ của đồ án 1
1.2.1 Mục tiêu 1
1.2.2 Đối tượng 2
1.2.3 Thông tin tổng quát 2
1.2.3.1 Phát biểu vấn đề 3
1.2.3.2 Mục tiêu đề ra 3
1.2.3.3 Mô tả 3
1.2.3.4 Lợi ích mang lại 3
1.2.3.5 Các bước thực hiện để hoàn thành dự án 3
1.2.3.6 Ràng buộc tổng quan hệ thống 4
1.3 Cấu trúc đồ án 4
Chương 2: Cơ sở lý thuyết 5
2.1 Giới thiệu về Winform 5
2.2 Ngôn ngữ C# 5
2.2.1 Mô hình 3 lớp 6
2.2.2 Chi tiết 7
2.2.3 Lập trình 3 lớp 7
2.3 Khái niệm cơ sở dữ liệu SQL Server 8
Trang 4Chương 3: Kết quả thực nghiệm 9
3.1 Các thành phần chức năng của hệ thống 9
3.1.1 Menu 9
3.1.2 Các sơ đồ 9
3.1.2.1: Sơ đồ usecase 9
3.1.2.2: Sơ đồ class diagram 9
3.1.2.3: sơ đồ sequence diagram 10
3.1.3 Thực nghiệm trong trò chơi 11
3.1.3.1 Chế độ đánh với máy 11
3.1.3.2 Chế độ 2 người cùng đánh với nhau 12
3.1.3.3 Chức năng xử lý thắng thua 13
3.1.3.4 Chức năng EXIT 13
3.1.3.5 FILE menu cũng có chức năng cho phép chọn chơi cùng máy hay cùng người khác 14
3.1.3.6 EDIT 15
Chương 4: Kết luận 16
4.1 Kết quả đạt được 16
4.2 Đánh giá phần mềm 16
4.3 Hướng phát triển để mở rộng đề tài 17
Chương 5:Tài liệu tham khảo 17
Trang 6
Tài liệu này giúp ta có một cái nhìn tổng quát về việc áp dụng thuật toánMiniMax và cắt cụt alpha-beta vào game cờ Caro
Do thời gian có hạn nên chúng em chưa thể tối ưu được các thuật toán sử dụngtrong game, nhưng chúng em sẽ cố gắng hoàn thiện trong thời gian sớm nhất Nhómthực hiện đề tài này với mục đích xây dựng game Caro có tính nhân tạo cao
Tuy nhiên trong quá trình thực hiện không thể tránh khỏi có những sai sót,chúng em rất mong nhận được những góp ý và đánh giá của cô
Chúng em xin chân thành cám ơn!
Trang 7Chương 1 Tổng quan
1.1 Tổng quan về vấn đề được nghiên cứu:
1.1.1 Khảo sát thực trạng hiện nay:
Theo tình trạng chơi game có 73% người đang chơi, 22% chưa từng chơi và 5%từng chơi nhưng hiện không còn chơi nữa Tỷ lệ người chơi game tập trung chủ yếuvào nhóm 16-20 tuổi (42,1%), 10-15 tuổi (26,3%), 21-25 tuổi (22%) Tỷ lệ người chơigame online còn đang đi học chiếm 71,7% so với game thủ làm ngành nghề khác Vềgiới tính, nam giới chơi game online nhiều hơn nữ giới với 54,5% Tỷ lệ người chơi cótrình độ Đại học, Cao đăng chiếm tỷ lệ cao nhất với 30,1%
1.1.2 Phân tích yêu cầu:
1.Yêu cầu chơi:
Game Caro đã phổ biến với rất nhiều người, với nhiều phiên bản game được đưa ra ởđây nhóm xây dựng game Caro này phù hợp với nhiều đối tượng Người chơi
Người chơi có thể chọn 1 trong 2 chế độ chơi:
Hai Người chơi
Chơi với máy
Ở chế độ “Hai Người chơi”, hai bên lần lượt đi từng nước cờ
Ở chế độ “Chơi với máy”,Người chơi và máy lần lượt đi từng nước cờ
Máy có thể tự động thực hiện những chức năng ở dưới:
Tấn công
Phòng thủ
Tấn công , phòng thủ
Tạo ván chơi mới: trong lúc đang chơi mà không muốn tiếp tục ván chơi
đó có thể tạo ván chơi mới khởi động lại từ đầu
Quay lại nước đi trước: khi đi sai bạn có thể nhấn quay lại để hoàn lạinước đi sai lúc trước
2.Giao diện:
1) Thuận tiện: Các nút chức năng phải đễ nhìn ,dễ sử dụng
2) Hình ảnh: Ảnh nền,ảnh bàn cờ ,ảnh quân cờ,ảnh nút,….đơn giản, dễ nhìn
Trang 83) Giao diện:
a) Giao diện chính:
Hiện bàn cờ: bàn cờ gồm 255 ô chia làm 25 hàng dọc và 25 hàngngang( mỗi hàng gồm 25 ô vuông liên tiếp nhau, thẳng hàng 1 ô vuông =
Người chơi có thể tương tác nhanh với chương trình bằng chuột
Chuột dùng để điều khiển chương trình
Chuột dùng để đi nước cờ
1.2 Nhiệm vụ của đồ án:
1.2.1 Mục tiê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ảithiện và nâng cao nên nhu cầu vui chơi, giải trí….ngày càng lớn Ở châu Á phongtrà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Ô“
1.2.2 Đối tượng:
Chủ yếu là những học sinh sinh viên và một số người trẻ khác những người có
sở thích và đam mê cờ CaRo
1.2.3 Thông tin tổng quản:
Trang 9Cho đến nay vẫn chưa ai biết chính xác lai lịch của cờ caro, có lời đồn cho rằng,
cờ caro xuất hiện cách đây khoảng hơn 2000 năm TCN tại Trung Quốc Tuy nhiên,một số nhà khoa học đã tìm ra bằng chứng rằng cờ caro đã xuất hiện ở Hy Lạp cổ đại
và châu Mĩ trước thời Colombus
Cờ caro bắt đầu với cái tên Wutzu bên Trung Quốc và biến danh thành Gomoku
ở Nhật Bản Tuy nhiên, ở đất nước của xứ sở hoa anh đào, nó còn được gọi dưới nhiềucái tên khác nhau ở mỗi địa phương Kakugo, gomoku-narabe, Itsutsu-ishi, …
Khi mới xuất hiện, loại cờ này được chơi bằng các con cờ vây (viên cờ màutrắng và đen) trên một bàn cờ vây (19×19) Quân đen đi trước và người chơi lần lượtđặt một viên đá của họ trên đường chéo còn trống Người thắng là người đầu tiên cóđược một chuỗi liên tục gồm 5 quân hàng ngang, dọc hoặc chéo Tuy nhiên, vì một khi
đã đặt xuống, các quân cờ không thể di chuyển hoặc bỏ ra khỏi bàn, do đó loại cờ này
có thể chơi bằng giấy bút
Ở Việt Nam, cờ này thường chơi trên giấy tập học sinh (đã có sẵng các ô ca-rô), dùngbút đánh dấu hình tròn (O) và chữ thập (X) để đại diện cho 2 quân cờ, bên nào cóđường 5 quân liền nhau trên một hàng, một cột hoặc một đường chéo là thắng
Trong cờ carô, bên đi trước luôn có lợi thế rất lớn, thậm chí L.Victor Allis còn chứngminh được rằng trong cờ carô tự do, bên đi trước luôn luôn thắng Để hạn chế nhượcđiểm này người ta đưa ra một số luật bổ sung để hạn chế lợi thế của người đi trước(quân đen) và tăng cường khả năng phòng thủ của người đi sau
1.2.3.1 Phát biểu vấn đề:
Xã hội ngày càng phát triển thì nhu cầu về mọi thứ cũng sẽ tăng theo trong đó
có cả nhu cầu về giải trí sau như giờ học và làm việc căng thẳng Vì vậy khi nắm bắtđược yếu tố đó trò chơi game CaRo được nhóm chúng tôi lựa chọn phát triển để giúpmọi người có thể giải trí và thư giản sau những giờ làm việc áp lực và mệt mỏi
1.2.3.2 Mục tiêu đề ra:
Vấn đề được đặt ra là:
- Thiết kế được một phần mềm đơn giản
- Giao diện thân thiện dễ sử dụng
Trang 10- Có tất cả tính năng của một game CaRo như đánh với máy, đánh với người,
xử lý thắng thua v.v
1.2.3.3 Mô tả
Trò chơi có các tính năng sau:
- Người với máy
- Người với người
- Exit (Thoát nhanh trò chơi)
- Xử lý thắng thua
- Undo (Cho phép đi lại)
- Tạo mới trò chơi (cho phép tạo ván mới)
1.2.3.4 Lợi ích mang lại:
Giúp mọi người giải trí, thư giản sau những giờ học và giờ làm việc căng thẳng.Rèn luyện tư duy cũng như thử sức với nhau qua chức năng đánh với người
1.2.3.5 Các bước thực hiện để hoàn thành dự án:
Lên kế hoạch và phát thảo ý tưởng
Thực hiện các ý tưởng:
- Tạo giao diện thân thiện với người chơi
- Tạo bàn cớ trong game
- Tạo chức năng đổi người chơi
- Tạo chức năng xử lý thắng thua
- Tạo Menu và Hotkey
- Tạo chức năng đi lại (UNDO)
- Tạo chức năng tạo lại ván mới
1.2.3.6 Ràng buộc tổng quan hệ thống:
- Không ảnh hưởng đến hoạt động bình thường của hệ thống
- Khi phát triển dự án phải đáp ứng được nhu cầu của người dùng
- Nếu có kết hợp dữ liệu thì phải thường xuyên được cập nhật
Trang 11Chương 2: Cơ sở lý thuyết
− Giới thiệu về Winform
− Giới thiệu về ngôn ngữ C#
− Giới thiệu về cơ sở dữ liệu SQL Server
Chương 3: Kết quả thực nghiệm
− Hướng phát triển đề tài
Tài liệu tham khảo
Trang 12Chương 2: Cơ sở lý thuyết
2.1 Giới thiệu về Winforms:
Winforms là một công nghệ của Microsoft, cho phép lập trình các ứng dụngWindows Nhờ tính tiện ích, dễ code, giao diện design kéo thả đơn giản… Winforms
đã được sử dụng để phát triển rất nhiều ứng dụng Đa phần lập trình viên C# NET nàocũng từng học và sử dụng Winform
Vì Winform xử lý trực quan, chỉ cần kéo thả, lại có nhiều components có sẵng,Winform rất phù hợp để làm các phần mềm quản lý, tính tiền, thống kê, … Đây cũng
là loại ứng dụng mà các công ty hay doanh nghiệp vừa và nhỏ cần Ngoài ra, chỉ cần
sử dụng component như TelerikUI hoặc DevExpress, Winform có thể tạo ra các giaodiện hiện đại, đẹp như mơ, long lanh hoa mỹ
2.2 Ngôn ngữ C#
C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft,đây là một ngôn ngữ chuyên dụng để lập trình web server và ứng dụng trên nền tảngWindows Microsoft phát triển C# dựa trên C++ và Java, C# được miêu tả là ngôn ngữ
có được sự cân bằng giữa C++, Visual Basic, Delphi và Java
Ngôn ngữ lập trình C# được coi là ngôn ngữ lập trình đơn giản, hiện đại, hướngđến nhiều mục đích sử dụng, và là một ngôn ngữ lập trình hướng đối tượng
C# có thể đáp ứng các nguyên tắt của ngành kỹ thuật phần mềm như kiểm trachặt chẽ kiểu dữ liệu, kiểm tra giới hạn mảng, phát hiện các trường hợp sử dụng cácbiến chưa có dữ liệu, và tự động thu gom dữ liệu không cần thiết Mang trong mình sự
Trang 13Ngôn ngữ lập trình C# với sự kế thừa những ưu điểm của C, C++, Java nên khinhìn vào code C# chúng ta sẽ thấy rất thân thuộc về cấu trúc, cú pháp từ đó việc họctập sẽ trở nên dễ dàng hơn Bên cạnh đó C# được thiết kế để phù hợp với việc viết racác ứng dụng cho cả hệ thống Server và hệ thống nhúng chuyên dụng trên nền tảngWindows.
Tuy rằng mang trong mình những ưu điểm của C, C++, Java, khả năng quản lý
bộ nhớ tốt, khả năng xử lý mạnh mẽ, trực quan dễ học và dễ sử dụng, đó là những ưuđiểm nổi bật của C#, nhưng nếu xét ngược lại thì tốc độ xử lý là một nhược điểm lớnnhất của ngôn ngữ này vì phải gồng gánh một lượng lớn dữ liệu từ các thư viện nêntốc độ xử lý sẽ thua thiệt hơn so với C, Assembly Nói như vậy không có nghĩa rằngC# không phải là sự lựa chọn lý tưởng, trong lập trình có những trường hợp ta có thểtận dụng tốt khả năng của C# như thiết kế phần mềm trên môi trường Windows, trong
đồ án môn học này là một ví dụ thực tiễn nhất trong việc tận dụng ưu điểm của C# vì
nó có thể thiết kế nhanh, xử lý sự kiện đơn giản, nhiều tiện ích mở rộng hỗ trợ tốttrong quá trình làm đồ án
2.2.1 Mô hình 3 lớp:
- Khi mới tiếp xúc với Windows Form và ADO.NET, việc lập trình bắt đầu trởnên phức tạp khi dự án lớn dần Bởi vậy để dễ quản lý các thành phần của hệ thống,cũng như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần cócùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm dể công việckhông bị chồng chéo và ảnh hưởng lẫn nhau Một trong những mô hình lập trình nhưvây gọi là Mô hình 3 lớp (Three Layers)
Trang 14Hình 2.1: Thể hiện sơ đồ 3 lớp.
- Việc phân chia thành từng lớp giúp cho code được tường minh hơn Nhờ vào việc chia ra từng lớp đảm nhận các chức năng khác nhau và riêng biệt như giao diện, xử lý, truy vấn thay vì để tất cả lại một chỗ Nhằm giảm sự kết dính
- Dễ bảo trì khi được phân chia, thì một thành phần của hệ thống sẽ dễ thay đổi Việc thay đổi này có thể được cô lập trong 1 lớp, hoặc ảnh hưởng đến lớp gần nhất mà không ảnh hưởng đến cả chương trình
- Dễ phát triển, tái sử dụng: khi chúng ta muốn thêm một chức năng nào thì việc lập trình theo một mô hình sẽ dễ dàng hơn vì chúng ta đã có chuẩn để tuân theo Và việc sử dụng lại khi có sự thay đổi giữa hai môi trường
(Winform sang Webform) thì chỉ việc thay đổi lại lớp GUI
- Dễ bàn giao Nếu mọi người đều theo một quy chuẩn đã được định sẵn, thì công việc bàn giao, tương tác với nhau sẽ dễ dàng hơn và tiết kiệm được nhiều thời gian
- Dễ phân phối khối lượng công việc Mỗi một nhóm, một bộ phận sẽ nhận một nhiệm vụ trong mô hình 3 lớp Việc phân chia rõ ràng sẽ giúp các lập trình viên kiểm soát được khối lượng công việc của mình
2.2.2 Chi tiết:
Trang 15− GUI Layer: Lớp này là lớp hiển thị giao diện và các chức năng để người dùng cuối sử dụng.
− Business (BUS) Layer: Đây là lớp nhận các yêu cầu từ lớp GUI và truy xuất lên lớp Data để lấy thông tin và trả về GUI
− Data Access Layer: Lớp này là lớp để truy xuất với CSDL, chỉ duy nhất lớp này được làm việc với Database
2.2.3 Lập trình 3 lớp:
Presentation Layer (GUI):
− UI Components: gồm các thành phần tạo nên giao diện của ứng dụng (GUI) Chúng chịu trách nhiệm thu nhận và hiển thị dữ liệu cho người dùng…
− Ví dụ: textbox, button, combobox, …
Data Layer (DAL)
− Data Access Logic Components: chịu trách nhiệm chính lưu trữ và truy xuất dữ liệu từ các nguồn dữ liệu (Data Sources) như XML, File System,
… Hơn nữa còn tạo thuận lợi cho việc dễ cấu hình và bảo trì
− Service Agents: giúp bạn gọi và tương tác với các dịch vụ từ bên ngoài một cách dễ dàng và đơn giản
Trang 16Chương 3: Kết quả thực nghiệm
3.1 Các thành phần chức năng của hệ thống:
3.1.1 Menu:
Bảng Menu gồm:
File:
New (Bắt đầu trò chơi mới)
o 1 player (Đánh với máy)
o 2 player (Đánh với người)
Exit (Kết thúc nhanh)
Edit:(Chức năng)
Undo (Chức năng đi lại)
Redo (Chức năng qua lại bước cũ)
3.1.2 Các sơ đồ:
3.1.2.1: Sơ đồ usecase:
Trang 17Hình 3.1: Sơ đồ usecase.
3.1.2.2: sơ đồ class:
Hình 3.2: Sơ đồ class diagram
3.1.2.3: sơ đồ sequence diagram:
Trang 18Hình 3.3.1: Sơ đồ sequence diagram của người chơi với máy
Trang 19Hình 3.3.2: Sơ đồ sequence diagram của người chơi với người
3.1.3 Thực nghiệm trong trò chơi:
3.1.3.1 Chế độ đánh với máy.
Hình 3.1.4.1: Tạo ván chơi với máy
3.1.3.2 Chế độ 2 người cùng đánh với nhau.
Trang 20Hình 3.1.4.2: Tạo ván chơi với bạn của bạn
3.1.3.3 Chức năng xử lý thắng thua.
Trang 21Hình 3.1.5: Thông báo người chơi dành chiến thắng
3.1.3.4 Chức năng EXIT.
Trang 22Hình 3.1.6: Hình hiển thị thông báo có muốn thoát game không
3.1.3.5 FILE menu cũng có chức năng cho phép chọn chơi cùng máy hay cùng người khác.
Trang 233.1.3.6 EDIT
3.1.3.6.1 Undo cho phép người chơi đi lại nước đi khác
Hình 3.1.8: Hình thông báo người dung có muốn đi lại không
3.1.3.6.2 Redo cho phép người chơi quay lại nước đi trước khi dung undo.-Trước khi redo
Trang 24Hình 3.1.8: Hình thể hiện sau khi undo
-Sau khi redo
Hình 3.1.9: Thông báo bạn có muốn qua lại bước củ sau khi undo không
Trang 25Chương 4: Kết luận 4.1 Kết quả đạt được:
Xây dựng thành công trò chơi Caro trên PC
Học tập và rút ra được một số kinh nghiệm về xây dựng Game
Củng cố thêm kiến thức về kĩ thuật lập trình, một số thuật toán để xây dựngcác trò chơi có tính đối kháng : BFS và DFS, thủ tục cắt tỉa alpha beta, min– max
Nắm rõ hơn về lập trình hướng đối tượng, phân tích và thiết kế hệ thống
Game Caro này được xây dựng trên môi trường Visual Studio 2005, em đãtìm hiểu và học hỏi được thêm về công cụ xây dựng:Ngôn ngữ lập trình C#
Dễ sử dụng: trò chơi rất đơn giản, chỉ cần tuân theo qui luật là có thể thànhcông
Tính tiện dụng: vì trò chơi rất nhỏ gọn có thể download dễ dàng, cài đặtnhanh chóng người chơi chỉ mất tâm 1 đến 2 phút là có thể cài xong tròchơi
Vì game có dung lượng nhỏ và giao diện đơn giản nên thích hợp với nhiềuloại máy thông dụng
Game có nhiều cấp độ và kiểu chơi nên phù hơp với nhiều người sử dụng
- Chưa kết hợp sql để lưu giữ các dữ liệu
- Chưa thể chơi online được
4.3 Hướng phát triển để mở rộng đề tài:
Đề tài “Game Cờ Caro” hiện đang được xây dựng bằng những kiến thức cơ bảncần được hoàn thiện hơn ở nhiều phần cũng như bổ sung thêm nhiều tính năng: