Tải bản đầy đủ (.doc) (31 trang)

Xây dựng hệ thống phần mềm soạn thảo câu đố chữ và trò chơi ô chữ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (627.92 KB, 31 trang )

Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

TRƯỜ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 :
Đoàn Hồng Thái
Đỗ Văn Kiên
An Đình Luận
Phạm Anh Đức

MSSV
MSSV
MSSV
MSSV

20073818
20081436
20071853
20070873

Nhóm: 30
Giáo viên hướng dẫn : TS. Cao Tuấn Dũng

Page 1



Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng
MỤC LỤC

Nội Dung

trang

Mục lục

1

Lời nói đầu

2

Phần I. Tổng quan về các vấn đề liên quan, mô tả yêu cầu bài toán

3

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

3

2.2 Mô tả các Use Case

4


2.3 Biểu đồ trình tự

8

Phần III. Thiết kế chi tiết
3.1 Giới thiệu các lớp chính của trò chơi

11

3.2 Mô tả một số lớp chính

12

3.3 Thiết kế cơ sở dữ liệu

18

Phần IV. Kết luận và đánh giá
4.1 Công nghệ và thuật toán

20

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

4.2.2 Giao diện chương trình


21

4.3 Kết luận và hướng phát triển

27

4.4 Phân công công việc trong nhóm

28

Tài liệu tham khảo

30

Page 2


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

LỜ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 đối
vớ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 3


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

PHẦ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
tạp chí.
Yêu cầu đặt ra là thiết kế một chương trình phần mềm theo phương pháp
hướng đối tượng với các chức năng chính :
 Cho phép người chơi soạn thảo hệ thống câu đố, bao gồm các gợi ý đi
kèm với mỗi câu.
 Các hệ thống câu đố có thể được quản lý theo các chủ đề để người
chơi dễ dàng lựa chọn.
 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

Page 4


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Soan Game
(from He T hong)


Nguoi choi
(from He T hong)

Choi Game
(from He Thong)

`
+ Tác nhân của hệ thống : người chơi.
Ngườ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 5


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng


Người soạn thảo

Nhập ô chữ

Nhập gợi ý

Di chuyển ô chữ tới
vị trí mong muốn

Chọn chủ đề

Số hàng ngang đã đủ?
No
Yes

Chữ cái khóa đã hợp lý?
No

Yes

Lưu kết quả và kết thúc

Page 6


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Use 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 7


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Người chơi

Chọn chủ đề

Chọn màn chơi

Giao diện màn chơi

Chọn ô chữ

Hàng ngang


Số hàng ngang
đã trả lời

Từ khóa

=8

<8

Hiện gợi ý
Sai hàng ngang
Nhập trả lời
Sai từ khóa

đúng
Cộng điểm

Kiểm tra điểm số xem
có thuộc top 5 không?

No

Yes
Lưu thông tin

Kết thúc trò chơi

Page 8



Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

2.3 Biểu đồ trình tự
Phần Soạn Game :

Page 9


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Thao 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 :

Goiy

hang

1 : noi dung o chu

2 : Cac goi y

4 : chon vi tri

3 : ket thuc


Page 10


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Việc thay đổi thông tin 1 ô chữ được mô tả như sau :

Hang ngang

Edit

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

Page 11


Bài Tập lớn OOP


Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Phần chơi Game:

PHẦN III
Page 12


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng
THIẾ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 13



Bài Tập lớn OOP

Thuộc tính, phương thức
excuteNonQuery()
reader()
taoBang()
taoKetNoi()
xoaSpace()

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Mô tả
Truy vấn câu lệnh SQL không có giá trị trả
về:update, insert, delete
Truy vấn SQL trả về 1 đối tượng
SqlDataReader
Truy vấn SQL trả về 1 DataTable
Truy vấn SQL trả về một đối tượng
SqlConnection
Xóa bỏ cách trống trong một xâu

Page 14


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Lớp TroChoi:


Phương Thức, thuộc tính
bntChoiGame
bntDiemCao
bntSoanGame
bntLuatChoi
bntThoat

Mô tả
Nút bấm chơi game
Nút bấm xem điểm cao
Nút bấm soạn game
Nút bấm xem luật chơi
Nút thoát

Page 15


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Lớp SoanGame:

Page 16


Bài Tập lớn OOP

Thuộc tính, phương thức


Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Mô tả
Page 17


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

bntChonHangNgang
bntTuKhoa
bntLuu
bntThemChuDe
bntThoat
Ac
oldX
oldY
strHangNgang
strTuKhoa
X
Y
bntChonHangNgang_Click()
bntTuKhoa_Click()
bntLuu_Click()
bntThemChuDe_Click()
bntThoat_Click()
picBoxHangNgang1_MouseDown(
)
picBoxHangNgang1_MouseUp()

picBoxHangNgang1_MouseMove()

Nút họn để tạo ô chữ hàng ngang
Nút chọn để tạo ô chữ từ khóa
Nút lưu các giá trị đã tạo được
Nút để thêm chủ đề
Nút thoát
Đối tượng dùng truy vấn cơ sở dữ liệu
Tọa độ của hàng ngang lúc Click chuột
Tọa độ của hàng ngang lúc Click chuột
Tọa độ của hàng ngang sau khi thả chuột
Tọa độ của hàng ngang sau khi thả chuột
Xử lý sự kiện chọn hàng ngang
Xử lý sự kiện chọn từ khóa
Xử lý sự kiện chọn lưu
Xử lý sự kiện chọn thêm chủ đề
Xử lý sự kiện chọn thoát
Xử lý sự kiện khi Click chuột
Xử lý sự kiện khi thả chuột
Xử lý sự kiện khi di chuyển chuột

Page 18


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Lớp ChoiGame:


Page 19


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Thuộc tính, phương thức
bntChon
bntThoat
bntTraLoi
bntTraLoiTuKhoa
Ac
Diem
strChuDe
strHangNgang[,]
strTuKhoa[]
thoiGian[]
thoiGianTong
x[]
y[]
choiGame
timer1_tick()
timerThoiGianTong_tick()
rbtnHang1_CheckChanged()

Mô tả
Nút chọn
Nút thoát
Nút trả lời

Nút trả lời từ khóa
Đối tượng dùng truy vấn csdl
Biến lưu điểm
Biến lưu chủ đề
Biến lưu câu trả lời hàng ngang
Biến lưu từ khóa
Biến thời gian cho một hang ngang
Biến thời gian tổng
Tọa độ của các hàng ngang
Tọa độ của các hàng ngang
Form chính
Tính thời gian cho một hàng ngang
Tính thời gian cho toàn bộ phần chơi
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

• 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.
Page 20



Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

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 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 21


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

PHẦ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,
System.Windows.Form … ).
Thao tác xây dựng bắt sự kiện cho các đối tượng button trong giao diện trò
chơi nhằm phục vụ cho các chức năng của trò chơi này cũng được nhóm tìm hiểu
và khai thác (thao tác với các button biểu thị hàng ngang, các button điều khiển trò
chơi như chơi game, soạn game, lưu …)
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 để di
chuyể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

Page 22


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Vớ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 23


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Page 24


Bài Tập lớn OOP

Giáo Viên hướng dẫn: TS Cao Tuấn Dũng

Click 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 25


×