Tải bản đầy đủ

Bn bao cao OOP

TRƯỜNG ĐẠI HỌC BÁCH KHOA THÀNH PHỐ HỒ CHÍ MINH
KHOA KHOA HỌC VÀ KĨ THUẬT MÁY TÍNH

BÁO CÁO BÀI TẬP LỚN
MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Đề tài:

Trò chơi 2048
GVHD: Trịnh Văn Giang
Danh sách nhóm bài tập lớn
MSSV
1412032
1412375
1412577
1412592

Họ và tên
Nguyễn Thị Thùy Linh
Nguyễn Ngọc Nam
Trương Thị Ngọc Nguyên
Phùng Thị Ánh Nguyệt


TPHCM, ngày 06 tháng 11 năm 2015


Trò chơi 2048
I. Giới thiệu:
Puzzle game, hay còn gọi là game giải đố, là một trong những thể loại dễ gây nghiện cho người
chơi và cũng khiến cho người chơi dễ điên đầu nhất. Với đa số những tựa game đã ra mắt trên thị
trường cùng với số vốn đầu tư khổng lồ, “2048” nổi lên như một tựa game đơn giản nhưng chứa
hàng tấn chất gây nghiện trong game.
Game 2048 là một trò chơi thú vị với tên gọi chỉ với những con số. Thoạt nhìn, người chơi sẽ
không thể biết được nội dung game là gì, chơi ra sao? Đây là một trò chơi khá đơn giản. Chỉ bao
gồm 1 bảng 4x4 ô số, sử dụng các nút lên, xuống, trái, phải sao cho các ô có chữ số giống nhau
cộng gộp vào nhau, giá trị sẽ được cộng dồn lại cho đến 2048 điểm là chiến thắng!


Trong 2048, cần một óc tư duy logic nhanh nhạy. Việc giỏi tính toán thôi chưa đủ để giúp người
chơi chiến thắng trò chơi này. Bởi ô số ngẫu nhiên xuất hiện trên bảng nên việc chinh phục game
cần đến 1 chút may mắn.

2


II. Nội dung chính của phần mềm:
Khi người dùng mở trò chơi lên thì sẽ thấy xuất hiện màn hình giao diện như sau:


Khi mới khởi động trò chơi, trên màn hình có 2 nút chính là “Hệ thống “và “?”. Trong nút
Hệ thống hiển thị các lựa chọn Chơi Ván Mới và Thoát. Trong nút Thiết lập có Thông tin tác giả
và Hướng dẫn chơi.



3


Sau khi bấm vào chơi ván mới, màn hình sẽ hiển thị giao diện trò chơi. Bao gồm bảng số
và 2 ô số, bộ tính thời gian, tính điểm và nút
để tạm dừng hoặc tiếp tục trò chơi.


Nếu chưa biết cách chơi, người chơi có thể xem Hướng Dẫn Chơi. Người chơi có thể đổi
màu lưới, màu khung, màu nền, font chữ hoặc cả âm thanh của trò chơi.


Trong trò chơi này, người chơi phải phải sử dụng các phím lên, xuống, trái, phải, để các ô
có giá trị giống kề nhau cộng lại, 2 ô sẽ gộp lại thành 1 ô có giá trị gấp đôi của ô vừa gộp, và
theo đó xuất hiện thêm 1 ô mới có giá trị là 2 hoặc 4. Cứ tiếp tục như thế cho đến khi được 2048
điểm là chiến thắng. Ngược lại, nếu trên bảng số không còn ô trống nào xuất hiện và không còn
ô số nào có thể gộp lại được với nhau, người chơi thua cuộc. Khi đó, sẽ xuất hiện bảng thông báo
thành tích của người chơi. Điểm sẽ được tăng theo giá trị của ô vừa được gộp.
4



Tuy nhiên sau khi người chơi đạt được 2048 vẫn có thể tiếp tục chơi tiếp.



III. Phân tích, đánh giá thuật toán được áp dụng vào phần mềm:
Bài toán đặt ra:
Cho một khung 4x4 và 2 số bất kỳ (2 hoặc 4) nằm ở hai ô trống bất kỳ. Hãy dùng các phím
để tạo ra 2048. Biết rằng sau mỗi lần di chuyển, một số (2 hoặc 4) sẽ xuất
hiện ngẫu nhiên tại một ô trống bất kỳ.

5


Thuật toán:
Nhằm thỏa mãn bài toán, nhóm đã tạo ra trò chơi với một ma trận 4x4.
Để các chữ số xuất hiện ngẫu nhiên, chương trình đã được thực hiện như sau:
1. Tìm ô trống:
-

Lấy ngẫu nhiên 2 số có thể trùng nhau từ 1 đến 4.

-

Xem số thứ nhất là số thứ tự hàng, số thứ hai là số thứ tự cột. Kiểm tra xem ô đó có
trống hay không.

-

Nếu trống, chuyển đến bước 2. Nếu không, lặp lại bước 1.

2. Điền số:
-

Lấy một số ngẫu nhiên trong đoạn từ 0 đến 10.

-

Nếu số đó chia hết cho 2, điền vào ô chữ số 2. Nếu không, điền vào ô chữ số 4.

Sau mỗi lần người chơi di chuyển các ô số bằng bàn phím, chương trình sẽ lặp lại bước 1 và
bước 2 ở trên, đồng thời chạy them một bước kiểm tra ngay sau đó:
3. Kiểm tra:
-

Kiểm tra xem còn ô trống trong trò chơi không.

-

Nếu còn, tiếp tục lượt chơi. Nếu không, kiểm tra xem có 2 ô ngay bên cạnh nhau có
cùng một số hay không: nếu có, tiếp tục lượt chơi.

Lượt chơi sẽ được tiếp tục cho đến khi không còn ô trống và không có 2 ô ngay bên cạnh nhau
có cùng một số nữa. Khi đó, lượt chơi kết thúc.

IV. Tổ chức, sử dụng class và tính kế thừa của các class trong VC#:
Program.cs: Đây là file chính của chương trình, dùng để gọi file Form1.cs để khởi tạo trò chơi.
Form1.cs:
-

Hàm khởi tạo form frmChinh_Load: khởi tạo form mặc định khi vừa mở trò chơi.
Hàm Load_Mau: tùy chỉnh màu cho các ô số và các chữ số.
Hàm Am_Thanh: được gọi bởi hàm mnuAm_Thanh_Click , chạy nhạc cho game.
6


-

-

-

-

-

Hàm mnuMau_Nen_Click, mnuMau_Khung_Click, mnuMau_Luoi_Click: tạo button
tạm dừng trò chơi, cho phép người chơi đổi màu nền, màu khung và màu lưới theo ý
thích (riêng màu nền không được là màu đen).
Hàm mnuBan_Quyen_Click: hiện thông tin nhóm làm chương trình.
Hàm mnuHuong_Dan_Cliick: gọi file frmHuong_Dan.cs hiện hướng dẫn cho người chơi.
Hàm mnuThoat_Click: tạo button thoát trò chơi:
 Nếu đang chơi: hỏi người chơi có muốn lưu lượt chơi hay không. Nếu chưa muốn
thoát, nhấn Cancel.
 Nếu đang không chơi: thoát không cần hỏi.
Hàm lblTiep_Dung_Click: tạo button để tạm dừng hoặc tiếp tục chơi trò chơi.
Hàm Load_O: gọi hàm Con_Trong kiểm tra còn ô trống không, nếu còn hiện ngẫu nhiên
2 hoặc 4 vào ô trống sau mỗi lần dịch chuyển, nếu không, gọi hàm Choi_Tiep kiểm tra
xem còn chơi tiếp được hay không.
Hàm timer1_Tick: quản lý thời gian của trò chơi. Nếu thua dừng thời gian, gọi file
frmKet_Thuc.cs xuất thời gian và điểm.
Hàm mnuChoi_Moi_Click: tạo button chơi mới:
 Nếu đang không chơi: nếu có lưu lượt thoát trò chơi trước, hỏi có muốn chơi tiếp
không, nếu không khởi tạo lượt mới.
 Nếu đang chơi: hỏi có muốn thoát khỏi lượt chơi hay không, nếu có khởi tạo lượt
mới.
Hàm Sang_Phai, Sang_Trai, Xuong_Duoi, Len_Tren: được gọi bởi hàm Nhan_Phim,
thực hiện ngẫu nhiên số khi người chơi nhấn phím
.
Hàm mnuChon_Chu_Click: tạo button tạm dừng trò chơi, cho phép người chơi đổi font
và size các chữ số theo ý thích.
Hàm Con_Trong: được gọi bởi hàm Load_O, kiểm tra còn ô trống trong trò chơi hay
không.
Hàm Choi_Tiep: kiểm tra có hai chữ số giống nhau ngay bên cạnh nhau hay không.
Hàm Load_Diem: in điểm số trên màn hình trò chơi.
Hàm Huy_Game: hủy lượt đang chơi.
Hàm New_Game: bắt đầu lượt chơi mới.
Hàm Tim_Max: tìm giá trị lớn nhất trong các ô số trong trò chơi.
Hàm Giao_Dien: miêu tả giao diện trò chơi.
Hàm mnuAm_thanh_Click: tạo button để tắt hoặc mở âm thanh.
Hàm Doc_File: đọc file “Luu.txt” nếu người chơi có lưu lượt trước khi thoát game.
Hàm Ghi_File: ghi lại kết quả hiện tại lượt chơi vào “Luu.txt” để chơi tiếp lần sau.
Hàm Load_Luu: in ô số vào trò chơi thông qua thông tin đã đọc qua hàm Doc_File.
Hàm Load_Time: in thời gian vào trò chơi.
Hàm Ghi_Tuy_Chinh: ghi lại kết quả tùy chỉnh của người chơi vào “Tuy_Chinh.txt”.
Hàm Doc_Tuy_Chinh: đọc file “Tuy_Chinh.txt”.
Hàm Font_Size: trả về font và size của chữ số.
Hàm So_Chu_So:
Hàm Nhan_Phim: gọi các hàm Sang_Phai, Sang_Trai, Xuong_Duoi, Len_Tren khi người
chơi nhấn các phím trên bàn phím.
7


frmHuong_Dan.cs (được gọi trong file Form1.cs):
-

Hàm timer1_Tick: tạo button để bắt đầu chạy hướng dẫn cách chơi.
Hàm frmHuong_Dan_Load: load hình ảnh hiển thị trong hướng dẫn.
Hàm Nhay_Phim: load màu để làm nổi phím được nhấn trong hướng dẫn cách chơi.
Hàm lblReset_Click: tạo button reset khi đang chạy cách chơi.
lblReset_TD_Click: tạo button reset khi đang chạy cách tính điểm.
Hàm timer2_Tick: tạo button để bắt đầu chạy hướng dẫn cách tính điểm.
Hàm Tinh_D: miêu tả cách tính điểm.
Hàm Reset_Choi: được gọi bởi hàm lblReset_Click, trả hướng dẫn cách chơi lại ban đầu.
Hàm Reset_Diem: được gọi bởi hàm lblReset_TD_Click, trả hướng dẫn cách tính điểm
lại ban đầu.
Hàm frmHuong_Dan_FormClosing: đóng hướng dẫn.

frmKet_Thuc.cs (được gọi trong file Form1.cs):
-

-

Hàm frmKet_Thuc: hiển thị form khi kết thúc trò chơi, xuất kết quả.
Hàm Mau_Label và Form_Label: miêu tả màu và font của label kết thúc.

V. Kết luận:
Game 2048 là một game không đánh mạnh về mặt đồ họa, hiệu ứng mà là chủ yếu tập
trung vào nội dung, thuật toán, cách tổ chức class trong VC#. Nhóm làm game đã cố gắng áp
dụng tất cả các kiến thức của môn học Objects Oriented Programming cùng với Data Structure &
Algorithm vào phần mềm.
Là một game có cách chơi đơn giản, dễ hiểu, thế nhưng để đạt đến 2048 không phải là
một việc dễ dàng. Nhóm làm game khẳng định rằng người chơi phải “đổ mồ hôi, sôi nước mắt”
mới có thể đạt được mục đích. Hi vọng rằng 2048 sẽ là món ăn giải trí bổ ích dành cho các bạn
sau những giờ học căng thẳng.

8


TÀI LIỆU THAM KHẢO
[1] https://gabrielecirulli.github.io/2048/

9



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×

×