Xây dựng hệ thống phần mềm soạn thảo câu đố chữ và trò chơi ô chữ
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÀI TẬP LỚN
MÔN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Đề tài : Xây dựng hệ thống phần mềm soạn thảo câu đố chữ và trò chơi ô chữ.
Sinh viên thực hiện :
Page 0
Trang 2MỤC LỤC
Phần I Tổng quan về các vấn đề liên quan, mô tả yêu cầu bài toán 3Phần II Phân tích thiết kế mức kiến trúc
Phần III Thiết kế chi tiết
Phần IV Kết luận và đánh giá
4.2 Kết quả chương trình minh họa
4.2.1 Kết quả chính đạt được trong chương trình 20
Trang 3LỜI NÓI ĐẦU
Trong xu hướng lập trình ngày nay, xu hướng lập trình hướng đối tượng đã
và đang có một vị thế rất lớn Thông qua nền tảng lý thuyết chặt chẽ cùng những ứng dụng từ việc áp dụng hướng đối tượng vào phân tích thiết kế và xây dựng sản phẩm phần mềm đã cho thấy tính linh hoạt và hiệu quả của hương pháp này
Hiện nay, Kỹ thuật lập trình hướng đối tượng đã trở thành một môn học chính thức không thể thiếu đối với các trường ĐH Công nghệ thông tin nói chung
và Viện CNTT- ĐHBKHN nói riêng Việc đưa nó thành một môn học bắt buộc đốivới sinh viên CNTT ngay từ đầu giúp cho sinh viên có điều kiện nắm bắt và tìm hiểu sớm, có những cái nhìn tích cực đầu tiên đối với xu hướng lập trình này
Để kiểm tra sự tiếp thu của bản thân về kiến thức lập trình hướng đối tượng thông qua các bài giảng trên lớp bởi sự truyền đạt của các thầy cô, qua việc tìm hiểu các tài liệu liên quan, cũng là để tăng kỹ năng lập trình hướng đối tượng trên
một ngôn ngữ hỗ trợ , chúng em đã chọn đề tài : “Xây dựng hệ thống phần mềm
soạn thảo câu đố chữ và trò chơi ô chữ” làm đề tài bài tập lớn cho môn học.
Bài tập lớn hoàn thiện được nhờ sự giúp đỡ nhiệt tình về mặt kiến thức cũng như kinh nghiệm từ phía thầy Cao Tuấn Dũng, người trực tiếp giảng dạy môn học, cùng với đó là sự chia sẻ của rất nhiều thành viên khác trong lớp và sự nỗ lực của các thành viên trong nhóm Nhưng còn nhiều thiếu sót vẫn là điều không thể tránh khỏi đối với kết quả BTL này Rất mong nhận được thêm nhiều sự góp ý của cô giáo cùng các bạn để đề tài này có thể phát triển ở mức cao hơn
Em xin chân thành cảm ơn
Hà Nội ngày 23 tháng 4 năm 2011 Các thành viên trong nhóm
Đoàn Hồng Thái
Đỗ Văn Kiên
An Đình Luận Phạm Anh Đức
Page 2
Trang 4PHẦN I TỔNG QUAN VỀ CÁC VẤN ĐỀ LIÊN QUAN, MÔ TẢ YÊU CẦU
BÀI TOÁN
Trò chơi ô chữ là trò chơi được nhiều người chúng ta biết đến thông qua một
số gameshow như “Đường lên đỉnh Olympia” hay tại các mục giải trí của một vài
Giao diện soạn thảo câu đố trực quan, dễ thao tác, các câu đố dễ dàng
di chuyển để tạo cảm giác bắt mắt dành cho người chơi
Người chơi game được quyền chọn chủ đề và hệ thống câu đố tương ứng để giải đố, quá trình chơi được giới hạn về mặt thời gian Mục điểm thưởng dành cho trò chơi sẽ thay đổi tùy thuộc vào việc sử dụng gợi ý của người chơi
Tính điểm dựa theo thời gian trả lời câu hỏi của người chơi
PHẦN II PHÂN TÍCH THIẾT KẾ MỨC KIẾN TRÚC
2.1 Biểu đồ use case tổng quát
Trang 5Người chơi có thể soạn thảo trò chơi và chơi trò chơi.
+ Các Use case chính : Chơi Game và Soạn Game.
2.2Mô tả các Use case.
Use case : SOẠN GAME
Trong use case này, thao tác chính đó là soạn thảo các câu hỏi, bao
gồm các bước :
+ Nhập nội dung ô chữ+ Nhập gợi ý cho ô chữ (3 gợi ý nếu là ô hàng ngang và 1 gợi ý nếu là
ô khóa của trò chơi)
+ Di chuyển ô chữ đến vị trí mong muốn để tạo khung trò chơi + Lựa chọn chủ đề cho màn chơi mà mình soạn thảo để dễ dàng lựa chọn khi chơi game Nhập thông tin về người soạn game
+ Lưu lại kết quả soạn thảo Trở về giao diện chính của trò chơi
Page 4
Trang 6Người soạn thảo
Trang 7Use case : Chơi Game
Trong use case này, các thao tác cần thực hiện đó là :
+ Lựa chọn chủ để ô chữ+ Lựa chọn màn chơi ứng với chủ đề
+ Lựa chọn hàng ngang để trả lời+ Hiện các gợi ý cho từng ô chữ+ Hiển thị thời gian cho màn chơi và cho từng ô chữ+ Nhập câu trả lời, xác nhận câu trả lời
+ Cộng điểm nếu nhận được câu trả lời đúng+ Kiểm tra kết quả của người chơi có lọt vào top điểm cao hay không?Nếu người chơi lọt vào danh sách điểm cao, thực hiện lưu thông tin người chơi
+ Kết thúc màn chơi, trở về giao diện chính
Page 6
Trang 8=8 <8
Kiểm tra điểm số xem
có thuộc top 5 không?
Lưu thông tin Kết thúc trò chơi
Yes
No Sai từ khóa
Trang 92.3 Biểu đồ trình tự
Phần Soạn Game :
Page 8
Trang 10Thao tác chính của phần này là việc tạo hệ thống ô chữ với các gợi ý tương ứng đi kèm Nó được mô tả như biểu đồ dưới :
Trang 11Việc thay đổi thông tin 1 ô chữ được mô tả như sau :
Page 10
1 : lua chon hang ngang
2 : Thay doi thong tin
3 : Chap nhan thay doi
4 : Ket thuc
5 : Xoa hang ngang
6 : Chap nhan xoa
7 : ket thuc
Trang 12Phần chơi Game:
PHẦN III
Trang 13THIẾT KẾ CHI TIẾT
3.1 Giới thiệu các lớp chính của trò chơi :
Access : truy xuất đến cơ sở dữ liệu
Trò chơi: giao diện chính
Luật chơi: lưu luật chơi
Chơi game : giao diện chơi game, có sử dụng timer tính thời gian chơi
Soạn game: giao diện soạn game, có kéo thả tạo giao diện ô chữ khi chơi
Điểm cao: lưu điểm của 5 người cao nhất
Hình ảnh toàn bộ lớp của chương trình
3.2 Mô tả chi tiết một số lớp chính:
Lớp Access:
Page 12
Trang 14Thuộc tính, phương thức Mô tả
excuteNonQuery() Truy vấn câu lệnh SQL không có giá trị trả
về:update, insert, delete
SqlDataReader
SqlConnection
Trang 15Lớp TroChoi:
Page 14
Trang 16Lớp SoanGame:
Trang 17Thuộc tính, phương thức Mô tả
Page 16
Trang 18bntChonHangNgang Nút họn để tạo ô chữ hàng ngang
strHangNgang
strTuKhoa
bntChonHangNgang_Click() Xử lý sự kiện chọn hàng ngang
bntThemChuDe_Click() Xử lý sự kiện chọn thêm chủ đề
picBoxHangNgang1_MouseDown() Xử lý sự kiện khi Click chuột
picBoxHangNgang1_MouseUp() Xử lý sự kiện khi thả chuột
picBoxHangNgang1_MouseMove() Xử lý sự kiện khi di chuyển chuột
Trang 19Lớp ChoiGame:
Page 18
Trang 20Thuộc tính, phương thức Mô tả
strHangNgang[,] Biến lưu câu trả lời hàng ngang
timer1_tick() Tính thời gian cho một hàng ngang
timerThoiGianTong_tick() Tính thời gian cho toàn bộ phần chơirbtnHang1_CheckChanged() Bắt sự kiện hàng được chọn trả lời
3.3 Thiết kế cơ sở dữ liệu
Sử dụng SQL 2005 để lưu cở dữ liệu của game, trữ các ô chữ do người dùng tạo
ra, lưu trữ điểm cao, từ khóa, các gợi ý…cụ thể lưu thành 4 bảng như sau:
Bảng “ChuDe” lưu các chủ đề của game
Bảng “DiemCao”
Bảng “HangNgang” lưu các ô chữ của hàng ngang và các gợi ý của nó
Bảng “Từ Khóa” lưu các từ khóa và gợi ý cho từ khoá
Khi bắt đầu chơi, người chơi chọn “Chơi Game” thì chương trình sẽ gọi
đến lớp dữ liệu và thực hiện nhiệm vụ Load Game, sau khi thực hiện chức năng này xong thì sẽ trả về 1 đối tượng Game đầy đủ thông tin để người chơi thực hiện giao tiếp với đối tượng game này
Trang 21Khi soạn thảo, người chơi chọn “Save Game” thì chương trình sẽ gọi đến
lớp dữ liệu và thực hiện nhiệm vụ Save Game (tất nhiên phải truyền cho lớp dữ liệu đối tượng Game), lớp dữ liệu sẽ thực hiện nhiệm vụ ghi các thông tin của màn chơi vừa soạn thảo bởi người dùng ra các bảng tương ứng của cơ sở dữ liệu dựa vào các phương thức truy vấn
Có một số chú ý trong quá trình soạn thảo Game như sau:
o Khi chọn chủ đề màn chơi, mà chủ đề này chưa có, người soạn thảo sẽ
có thể tạo ra chủ đề mới, và khi đó 1 thư mục dữ liệu mới sẽ được tạo
ra, tất nhiên là phải kiểm tra xem chủ đề tạo mới đã tồn tại hay chưa, nếu đã tồn tại thì không thể tạo mới nữa
o Khi nhập tên màn chơi và chủ đề màn chơi, tất nhiên là tên màn chơi này phải chưa tồn tại trong chủ đề được chọn
Khi bắt đầu chơi, người chơi chọn “Chơi Game” thì chương trình sẽ gọi
đến lớp dữ liệu và thực hiện nhiệm vụ Load Game, sau khi thực hiện chức năng này xong thì sẽ trả về 1 đối tượng Game đầy đủ thông tin để người chơi thực hiện giao tiếp với đối tượng game này
Khi soạn thảo, người chơi chọn “Save Game” thì chương trình sẽ gọi đến
lớp dữ liệu và thực hiện nhiệm vụ Save Game (tất nhiên phải truyền cho lớp dữ liệu đối tương Game), lớp dữ liệu sẽ thực hiện nhiệm vụ ghi các thông tin của màn chơi vừa soạn thảo bởi người dùng ra file *.txt, và tạo 1 file *.txt chứa thông tin HighScore tương ứng (file này khi đó chưa có dữ liệu gì cả)
Có một số chú ý trong quá trình soạn thảo Game như sau:
o Khi chọn chủ đề màn chơi, mà chủ đề này chưa có, người soạn thảo sẽ
có thể tạo ra chủ đề mới, và khi đó 1 thư mục dữ liệu mới sẽ được tạo
ra, tất nhiên là phải kiểm tra xem chủ đề tạo mới đã tồn tại hay chưa, nếu đã tồn tại thì không thể tạo mới nữa
o Khi nhập tên màn chơi và chủ đề màn chơi, tất nhiên là tên màn chơi này phải chưa tồn tại trong chủ đề được chọn
Page 20
Trang 22PHẦN IV KẾT LUẬN VÀ ĐÁNH GIÁ
4.1 Công nghệ và thuật toán
Trước tiên đó là việc lựa chọn ngôn ngữ, đây là yếu tố đầu tiên làm nền
tảng cho việc vận dụng các công nghệ và thuật toán sau này một cách hợp lý và hiệu quả nhất Sau khi thống nhất, nhóm đã lựa chọn ngôn ngữ C# để thực hiện việc triển khai đề tài Đây là ngôn ngữ lập trình thuần hướng đối tượng, trong sáng,
dễ nắm bắt, thích hợp với yêu cầu triển khai đề bài Hơn thế nữa, việc sử dụng C#
để xây dựng bài tập lớn sẽ ổn định, dễ nâng cấp và có độ tin cậy cao Trong suốt quá trình thực hiện bài tập lớn, các modun chương trình được tối đa hóa việc sử dụng các hàm có sẵn của C#, đặc biệt là trong việc thiết kế giao diện chương trình Bên cạnh đó là các hàm được dùng để xử lý việc lưu trữ thông tin soạn thảo, xử lý cho ô chữ… ( đây là các tiện ích nằm trong gói System.Data,
Trong bài tập lớn này, 1 nguyên lý khá quen thuộc đối với lập trình hướng
đối tượng đã được nhóm sử dụng đó là nguyên lý kế thừa Nguyên lý này đã được
trình bày khá kỹ càng trong những giờ học OOP trên lớp, vì vậy nhóm xin phép không nhắc lại kiến thức lý thuyết của nó Ở bài tập lớn này, sự thể hiện của việc vận dụng nguyên lý trên là việc tạo các Form nhờ kế thừa lớp Form có sẵn trong C#
Sử dụng lớp System.Drawing.Graphics để tạo các ô chữ, và bắt sự kiện để dichuyển các ô chữ đấy
Sử dụng kết nối cơ sở dữ liệu với SQL Server 2005
4.2 Kết quả xây dựng chương trình minh họa
4.2.1 Những kết quả chính đạt được trong chương trình
Trang 23Với những yêu cầu thu được từ yêu cầu đề bài cũng những phân tích để xây dựng mô hình bài toán, quá trình xây dựng chương trình minh họa về cơ bản đã thểhiện được các yêu cầu chính cần phải làm.
Các thành phần chức năng chính mà chương trình minh họa đã làm làm được :
o Cho phép người dùng tự mình soạn thảo hệ thống ô chữ theo chủ đề tùy ý
o Có sự thay đổi nhỏ so với yêu cầu đề bài, thay vì đặt khóa theo hàng dọc, ô chữ làm khóa của trò chơi sẽ được tách riêng thành một hàng ngang đặc biệt
o Cho phép người chơi lựa chọn chủ đề chơi mà màn chơi tương ứng để chơi game
o Người chơi có thể thực hiện giải đố theo luật chơi đã công bố, dưới sự giới hạn của 1 đối tượng thời gian chơi
4.2.2 Giao diện chương trình
Giao diện khi bắt đầu chương trình:
Để người chơi click vào luật chơi để xem luật
Page 22
Trang 25Click vào Soạn Game để tạo ô chữ với giao diện:
Ở đây người chơi chọn chủ đề có sẵn để tạo game, hoặc có thể thêm chủ đề mới Sau đó chọn từ khóa, nhập gợi ý cho từ khóa và click chuột vào nút :Chọn Từ Khóa
Sau khi chọn xong từ khóa người chơi chọn các ô chữ hàng ngang để nhập các từ hàng ngang Lần lượt nhập gợi ý cho các từ hàng ngang này Các từ hàng ngang cần có nội dung hướng đến từ khóa chính của màn chơi
Chú ý: người chơi chỉ có thể làm theo trình tự này vì:
-Trước khi tạo xong từ khóa thì các thao tác với hàng ngang đều bị disable
Page 24
Trang 26-Khi chưa nhập đủ các gợi ý mà kết thúc soạn thảo cho ô chữ thì chương trình sẽ không cho phép tiếp tục và bắt nhập đủ.
Sau khi điền đầy đủ các từ hàng ngang người chơi chọn Lưu
Chú ý:
Phải điền đầy đủ 8 hàng ngang người chơi mới có thể Lưu
Trang 27Trong quá trình soạn ô chữ hàng ngang người chơi có thể kéo thả các ô chữ đến các vị trí mong muốn để tạo giao diện khi chơi.
Người chơi game sẽ click vào nút chơi game để bắt đầu chơi
Lần lượt chọn chủ đề và màn chơi Click Chọn để load về giao diện game
Sau đó người chơi lần lượt chọn các ô chữ hàng ngang để trả lời.Mỗi từ hàng ngang người chơi sẽ có 30 giây trả lời và sau mỗi 10 giây sẽ có thêm một gợi ý được hiện ra
Nếu trả lời đúng, ô chữ hàng ngang sẽ được mở và điểm của người chơi sẽ được cộng tùy theo thời gian trả lời nhanh, chậm
Nếu trả lời sai ô chữ hàng ngang sẽ bị bôi đen
Khi còn 50 giây gợi ý của từ khóa sẽ hiện ra và người chơi sẽ dễ dàng hơn trong trả lời từ khóa
Page 26
Trang 28 Nếu số điểm người chơi thuộc top 5 người cao điểm nhất chương trình sẽ hiện giao diện yêu cầu người chơi nhập thông tin để lưu vào dữ liệu
highscore
Trang 29Click vào thoát để ra khỏi trò chơi.
4.3 Kết luận và hướng phát triển
Sau một thời gian thiết kế và xây dựng chương trình, kết quả mà nhóm thuđược đó là một chương trình phần mềm mô tả được cơ bản các yêu cầu của
đề bài.Thông qua đây, các thành viên trong nhóm đã có cơ hội tiếp cận sâuhơn với việc thực hành thiết kế xây dựng 1 chương trình theo phương pháphướng đối tượng Tập khả năng tư duy tìm tòi và sáng tạo trong việc xử lýcác tình huống của đề bài Tuy vậy vẫn còn những yêu cầu chưa thực hiệnđược trong sản phẩm lần này, ví dụ như chưa có thao tác cho phép ngườichơi cấu hình kiểu chơi (dọc, ngang, chéo…), chưa có nhiều cấp độ cho mỗimàn chơi…
Hướng phát triển tiếp theo:
o Để phát triển ứng dụng Online ta có thể lưu dữ liệu của ứng dụng lênDatabase, mọi Client có thể truy cập đến và chơi được trò chơi
o Mở rộng màn chơi ra nhiều cấp độ, tăng dần theo độ khó hoặc độphức tạp của từ khóa
o Mở rộng về số hàng ngang được dùng trong mỗi màn chơi, có thể dongười tạo game tự chọn
o Người chơi có thêm lựa chọn tự cấu hình cho trò chơi để tăng sự thú
vị ( giải đố theo hàng ngang, hàng dọc hoặc hàng chéo…)
Page 28
Trang 30o Có thể phát triển thêm về giao diện chương trình cho thân thiện hơn.
4.4 Phân công công việc trong nhóm
Trang 31Tài liệu tham khảo
1 Các bài giảng về lập trình hướng đối tượng trên lớp
2 Cac_giai_phap_lap_trinh_C#
3 Các Video hướng dẫn học C#
4 CSharp Yellow Book 2010-Rob Miles
Page 30