Tài liệu giới thiệu cách lập trình trò chơi xếp gạch bằng C#

Chia sẻ: Lê Văn Thương | Ngày: | Loại File: DOC | Số trang:17

1
555
lượt xem
165
download

Tài liệu giới thiệu cách lập trình trò chơi xếp gạch bằng C#

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu giới thiệu về game Xếp gạch (Tetris) cũng như thuật toán lập trình game trên.

Chủ đề:
Lưu

Nội dung Text: Tài liệu giới thiệu cách lập trình trò chơi xếp gạch bằng C#

  1. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương LỜI NÓI ĐẦU Trò chơi Xếp gạch (tên gọi quốc tế: Tetris) là một trò chơi thuộc thể loại trí tuệ. Trò chơi ra đời vào thập kỉ 80 của thế kỷ trước, nhưng cho đến ngày nay vẫn làm nhiều người mất ăn mất ngủ. Trò chơi đã được nhiều công ty phần mềm, nhiều cá nhân đã phát triển ngày càng đa dạng về thể loại cũng như tùy biến về cách chơi. Trên tinh thần đó, nhóm chúng em cũng xin viết một phiên bản của trò chơi này, đồng thời cũng nhằm thực hiện đồ án bài tập cuối năm môn Lập trình môi trường Windows. Tài liệu này nhằm giới thiệu về trò chơi do nhóm chúng em thiết kế (tên gọi là TETRIS PARTY). Trong tài liệu này, chúng em sẽ trình bày tổng quan về chương trình, ưu, nhược điểm, vài nét về giao diện, cũng như chức năng chính của trò chơi. Kết thúc tài liệu, chúng em xin đề ra một số hướng phát triển cho trò chơi trong tương lai. Vì thời gian để hoàn thành chương trình đồ án này gấp gáp, chúng em phải vừa tìm hiểu kiến thức và áp dụng chúng vào trong lập trình ngay (mà chưa kiểm tra thử nghiệm một cách toàn diện) nên chương trình chắc chắn còn nhiều thiếu sót. Chúng em mong thầy và các bạn giúp đỡ chúng em hoàn thành hoàn chỉnh chương trình trên. Cuối cùng, chúng em xin chân thành cảm ơn thầy TS. Phạm Thi Vương, giáo viên bộ môn Lập trình môi trường Window đã hướng dẫn chúng em hoàn thành chương trình đồ án này. Thay mặt nhóm Sinh viên: Lê Văn Thương 1
  2. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương MỤC LỤC Lời nói đầu.................................................................................................................................3 Mục lục......................................................................................................................................4 1. Giới thiệu tổng quan về trò chơi Xếp gạch.....................................................................3 1.1. Lịch sử hình thành và phát triển của trò chơi..............................................3 1.2. Trò chơi Xếp gạch là gì?..............................................................................3 1.3. Các vấn đề liên quan đến việc lập trình.....................................................3 1.3.1 . Các yêu cầu khi lập trình.............................................................3 1.3.2 . Các vấn đề cần giải quyết.........................................................3 1.3.3 . Thuật toán lập trình.....................................................................4 2. Giới thiệu về chương trình do nhóm thực hiện – TETRIS PARTY...............................5 2.1. Giao diện chính.............................................................................................5 2.2. Các chức năng...............................................................................................9 2.3. Phân tích ưu nhược điểm của trò chơi........................................................10 2.3.1 . Ưu điểm.............................................................................10 2.3.2 . .............................................................................................Nh ược điểm......................................................................................10 3. Phương pháp lập trình....................................................................................................... 10 3.1. Ý tưởng ........................................................................................................10 2
  3. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương 3.2. Các lớp đối tượng.........................................................................................11 4. Hướng phát triển tiếp theo.............................................................................................14 5. Kết luận..........................................................................................................................14 1. Giới thiệu tổng quan về trò chơi Xếp gạch 1.1. Lịch sử hình thành và phát triển của trò chơi Trò chơi Xếp gạch (tên quốc tế là Tetris) ra đời ở Liên Xô vào năm 1984. Cha đẻ của nó là kỹ sư máy tính Alexey Pajitnov. Cùng với sự trợ giúp của chiếc máy tính cổ Elektronika 60, ông đã chính thức hoàn thiện Tetris. Sau đó ít lâu, trò chơi đã được chuyển đổi sang hệ máy PC của IBM và phổ biến rộng rãi khắp Liên Xô, Bắc Mĩ và châu Âu. Liên tiếp vào các năm 1988, 1989, Tetris được thương mại hóa và có mặt trên nền tảng PC, NES tại Nhật, qua nhà xuất bản Henk Rogers. Năm 1996, cơ quan pháp luật Nga trao quyền sở hữu đích thực của Tetris cho Alexey. Ngay sau đó, ông cùng Henk Rogers mở công ty Tetris chuyên cấp phép cho những ai muốn khai thác trò chơi của mình. Trò chơi Tetris đã có mặt trên hầu hết các hệ máy, và cả trên mobile. Tính đến hết năm ngoái, Tetris đã có mặt chính thức tại hơn 50 quốc gia với hơn 50 ngôn ngữ khác nhau, xuất hiện trên 30 nền tảng và có tổng cộng 125 triệu sản phẩm đã được bán ra. 1.2. Trò chơi Xếp gạch là gì? Xếp gạch là một trò chơi trí tuệ, bao gồm một màn hình chơi game và nhiều khối gạch có hình dạng khác nhau. Các khối gạch ăn khớp nhau tùy theo các bước chơi của người chơi. Người chơi có thể ghi điểm bằng cách chèn (fill) đầy 1 hàng ngang và trò chơi kết thúc khi 1 hàng dọc nào đó trên màn hình bị đầy. 1.3. Các vấn đề liên quan đến việc lập trình 1.3.1. Các yêu cầu khi lập trình 3
  4. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương Khi lập trình cần tuân thủ các nguyên tắc sau: - Các khối hình trong trò chơi phải gồm 7 khối sau: - Khi tăng cấp (level) thì độ khó của game cũng phải tăng lên. - Khi tăng điểm thì phải tăng tỉ lệ thuận theo số hàng (dòng) ngang được làm đầy. - Không thể xoay khối gạch khi kích thước của khối gạch xoay vượt quá kích thước của khung (gameboard) chơi game. - Khi khối gạch xuất hiện thì phải xuất hiện ở chính giữa khung chơi game. 1.3.2. Các vấn đề cần giải quyết - Phải giải quyết được các yêu cầu khi lập trình ở trên. - Cần giải quyết các vấn đề về thông tin người chơi ví dụ như tính điểm, dựa vào điểm để tăng cấp, xử lý khi tăng cấp, ẩn hiện, tính toán các thông tin về các tiện ích, thời gian chơi của người chơi. - Cần xử lý vấn đề về âm thanh của game và âm thanh nền, xử lý khi chỉnh options (độ khó, thay đổi skin, tên người chơi, chọn nhạc nền,…). - Cần xử lý sự kiện khi bấm 1 phím : (xoay gạch, sử dụng các tiện ích, các phím tắt,…). - Cần xử lý sự kiện khi lưu game (save game), chơi lại file lưu (load game). - Xử lý các tính huống khi chơi game ở chế độ hai người chơi. 1.3.3. Thuật toán lập trình - Tạo một đối tượng lưu thông tin về các khối gạch (7 khối). Mỗi khối gạch là một mảng Bool hai chiều với hai trạng thái true và false. Kích thước mảng cũng chính là chiều dài và chiều rộng của khối gạch. o Nếu tại ô Mij có trạng thái true thì có nghĩa là ô được hiện màu sắc, hình ảnh (có thể nhìn thấy được). o Nếu ô Mij có trạng thái false thì ngược lại. true true true true 4 false true false
  5. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương true true true true true true true Khối O Khối T Khối true true false false true true false true true Khối Z Khối S true true false false true false true true true Khối J Khối L - Khung chơi game (hay còn gọi là bảng chơi game hay là gameboard): Là một mảng Bool 2 chiều với hai trạng thái true và false. Chức năng của gameboard là để ánh xạ các khối gạch sang gameboard. Với trạng thái true thì có hiện màu sắc, hình ảnh và false là không hiện. Mảng gameboard có kích thước 10x20. Các khối gạch sẽ xuất hiện ở vị trí như hình sau: 5
  6. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương 0 1 2 3 4 5 6 7 8 9 0 false false false false true false false false false false 1 false false false false true false false false false false 2 false false false false true true false false false false - Cách thức xoay khối gạch được tính toán theo hình sau: Nguồn: http://www.colinfahey.com/tetris/tetris_en.html 2. Giới thiệu về chương trình do nhóm thực hiện – TETRIS PARTY 2.1. Giới thiệu giao diện: 6
  7. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương Trong phần này, chúng em xin trình bày sơ lược về giao diện của trò chơi TETRIS PARTY. Theo đó, chúng em cũng xin minh họa chức năng của các nút bấm chính có trong trò chơi. Dưới đây là một số hình ảnh chính: Hình 1: Giao diện khi khởi động trò chơi Hình 2: Giao diện Menu của trò chơi 7
  8. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương Hình 3: Giao diện 1 người chơi 8
  9. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương Hình 4: Giao diện 2 người chơi Hình 5: Giao diện Menu “Help” của trò chơi 9
  10. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương Hình 6: Giao diện Menu “Options” của trò chơi 2.2. Các chức năng chính của chương trình Trò chơi có những chức năng chơi cơ bản của một trò chơi Xếp gạch cổ điển, gồm có như: các hệ thống menu, hệ thống giúp đỡ và tùy chỉnh hoàn thiện; chức năng chơi game như một trò chơi Xếp gạch thực sự: di chuyển gạch, xoay gạch, rơi gạch nhanh, rơi gạch ngay lập tức, ăn điểm khi đầy dòng, tăng level và độ khó qua mỗi level, gameover khi khối gạch tràn màn hình chơi,.v.v. Các chức năng cơ bản: - Chơi game ở chế độ 1 người chơi, 2 người chơi: o Chế độ 1 người chơi: Người chơi có đầy đủ tính năng của một trò chơi hoàn chỉnh. Bắt đầu mới một game, ngừng game, tiếp tục, lưu game, chơi lại file lưu, tinh chỉnh độ khó, màu gạch, thay đổi thông tin người chơi, thay đổi nhạc nền,… Người chơi có thể click nút “Ready” để bắt đầu ván chơi. Ngoài ra, người chơi cũng có thể thoát game, hay trở về menu chính bất cứ lúc nào. Trên màn hình game, có đồng hồ biểu thị thông tin thời gian chơi. o Chế độ 2 người chơi: Trong trò chơi TETRIS PARTY này, ngoài chế độ chơi 1 người truyền thống, bạn có thể chọn “2 Player” để vào chế độ 2 người chơi. Ở chế độ 2 người chơi, bạn có thể tùy chỉnh trò chơi như ở 1 người chơi, nhưng bạn không thể lưu và chơi lại bản lưu như trong một người chơi được. Ở bản 2 người chơi, trò chơi hiện tỷ số giữa hai người chơi, cũng như thông báo chúng sau mỗi màn. - Chơi game với “phép”: “Phép” là công cụ nhằm cải biến game trở nên sinh động, và hấp dẫn hơn. “Phép” bao gồm: o Bom: sử dụng để phá hủy 2x2 ô gạch mà nó tiếp xúc. o Hủy hình: sử dụng để hủy hình hiện tại, thay khối gạch bằng 1 hình mới. - Theo dõi hình tiếp theo: Trò chơi cho phép người chơi theo dõi hình khối gạch nào chuẩn bị rơi tiếp theo để dễ cho người chơi. Ngoài ra, trò chơi còn có một số tính năng khác như: - Thay đổi thông tin người chơi: Bạn có thể thay đổi tên người chơi trước khi bắt đầu game (Trò chơi quy định tên người chơi không thể trống). Nếu bạn không thay đổi tên trước khi bắt đầu thì trò chơi sẽ load tên người chơi mặc định là “player1”, và “player2” và bạn có thể thay đổi nó trong phần Options\Settings. Ngoài ra, bạn cũng có thể thay đổi avatar mặc định của bạn (bằng cách nhấp vào avatar trên màn hình), và chọn đường 10
  11. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương dẫn đến file hình ảnh mà bạn muốn. (Các định dạng ảnh có thể thay đổi được: *.jpg, *.png, *.gif, *.bmp). - Thay đổi độ khó và màu sắc của khối gạch trong game, thay đổi nhạc nền: Trò chơi cho phép người chơi tùy chọn những thuộc tính trong game. Độ khó, phong cách, nhạc nền o Độ khó của game: Trước mỗi ván chơi, người chơi có thể chọn Options\Settings và tinh chỉnh độ khó mình muốn. Mặc nhiên, trong lúc chơi game thì không thể chỉnh được phần độ khó này. Có 3 cấp độ khó:  Dễ (Easy)  Trung bình (Normal)  Khó (Hard) o Phong cách (Màu sắc các khối gạch): Trong khi chơi game người chơi có thể thay đổi màu sắc các khối gạch trong game cho sinh động, phù hợp với sở thích từng người. Có 3 sự lựa chọn cho bạn. o Bật, tắt và thay đổi nhạc nền: Người chơi có thể tùy chỉnh bật, tắt nhạc nền trong game bất kì khi nào muốn. Ngoài ra, người chơi còn có thể tự chọn nhạc nền cho mình, thay đổi nhạc nền mặc định của trò chơi. (các định dạng file nhạc hỗ trợ: *.mp3, *.wma). 2.3. Phân tích ưu, nhược điểm của trò chơi 2.3.1. Ưu điểm: - Giao diện thân thiện, dễ sử dụng, nhiều tính năng. - Có tùy chọn chế độ chơi (1 người chơi, 2 người chơi). - Có thể linh hoạt thay đổi thông tin người chơi; tùy chỉnh độ khó khi chơi, màu sắc cũng như thay đổi nhạc nền mặc định. - Có menu hướng dẫn cụ thể, (có ngôn ngữ tiếng Việt và tiếng Anh), có hướng dẫn nút bấm bằng hình ảnh trực quan. Các ưu điểm khác biệt so với các chương trình trò chơi Xếp gạch khác: o Có chế độ “phép”. o Tùy chỉnh thông tin skin của khối gạch, độ khó của trò chơi. o Thay đổi nhạc nền tùy thích. 11
  12. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương o Thay đổi avatar tùy thích. o Có chế độ 2 người chơi. o Có tiện ích save game, load game. 2.3.2. Nhược điểm - Trong chế độ 2 người chơi, 2 người không thể cùng lúc nhấn 1 phím ngay tại 1 thời điểm. Vì lý do đó cho nên, nếu người chơi nào nhấn phím trước thì được quyền thực hiện hành động của mình. (Ví dụ như người chơi 1 nhấn và giữ phím xuống trước thì người chơi 2 không thể nhấn và thực hiện hành động cho viên gạch di chuyển nhanh xuống được). Do đó, trong chế độ 2 người chơi, cần có yêu cầu là từng người chơi phải nhấn phím và thả phím liên tục. - Thỉnh thoảng, với một số máy tính riêng biệt, có thể xảy ra một số lỗi không kiểm soát được. (đặc biệt là với máy tính dùng hệ điều hành Windows XP SP1,2). 3. Phương pháp lập trình 3.1. Ý tưởng Ý tưởng chính dựa vào thuật toán lập trình đã nêu ở trên. Ngoài ra còn phải phát triển thêm như sau: Mỗi khối gạch có 2 biến lưu vị trí đỉnh của khối gạch so với gameboard và biến lưu vị trí cạnh trái của khối gạch so với gameboard. Mục đích của 2 biến này là để ánh xạ các khối gạch vào mảng gameboard với vị trí xác định. Dùng timer để xác định thời gian cho khối gạch di chuyển. Qua một lần timer_tick (một khoảng thời gian timer.interval nhất định) thì khối gạch di chuyển xuống 1 hàng trong gameboard. Cập nhật vị trí mới của khối gạch trong gameboard và hình ảnh xuất hiện của khối gạch này được vẽ lại. Việc làm sao để khối gạch không bị đặt ra ngoài mảng của gameboard (có nghĩa là khi cập nhật vị trí của các khối gạch khi xoay, di chuyển trái, di chuyển phải không được vượt quá kích thước mảng) là một vấn đề khó khăn. Cách của em là sẽ tăng kích thước của gameboard thêm 1 hàng dọc và 1 hàng ngang (thành mảng Bool 11x21), kiểm soát lỗi và kiểm soát điều kiện để các khối gạch hiện đúng vị trí. Các ý tưởng cho các phần phụ có thể tìm hiểu thông qua source code của chương trình. Về ý tưởng xử lý sự kiện phím: Thiết lập một hàm trong 1 class, dùng để xử lý sự kiện phím. 12
  13. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương Trong Form chơi game, khi nhấp một phím bất kì thì sẽ gọi hàm xử lý sự kiện phím trong class mới được thiết lập ở trên. Về ý tưởng thiết kế giao diện trò chơi: Vẽ ra giao diện background cho form bằng chương trình Photoshop. Sau đó chèn (add) vào form. Chỉnh các thuộc tính của form để có một giao diện như ý. 3.2. Các lớp đối tượng (class) Xem sơ đồ sau: Sơ đồ trên giới thiệu về các lớp đối tượng (class) trong chương trình. Sơ đồ cũng miêu tả phần nào thứ tự và hướng viết của các lớp đối tượng. Cụ thể về các lớp đối tượng như sau: - Lớp Hinh: là đối tượng class dùng để lưu thông tin các khối hình (hình dạng, kích thước,…) Tên biến Kiểu dữ liệu Ý nghĩa Ghi chú rong int Chiều rộng của 1 khối gạch 13
  14. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương dai int Chiều dài của 1 khối gạch tren int Vị trí trên của khối gạch so với gameboard trai int Vị trí trái của khối gạch so với gameboad shape bool[,] Lưu thông tin về hình dạng của khối gạch kichThuoc Int Lưu kích thước của 1 ô gạch (pixel) static hinh Image Lưu hình ảnh skin của 1 khối gạch Tên hàm Ý nghĩa VeHinh Vẽ 1 hình image trong 1 ô gạch thuộc khối gạch - Lớp NguoiChoi: là đối tượng lưu thông tin của người chơi (tên, điểm số, cấp, …) Tên biến Kiểu dữ liệu Ý nghĩa tenNguoiChoi string Lưu tên của người chơi diemSo int Lưu thông tin điểm số của người chơi cap int Lưu thông tin cấp độ của người chơi boom int Lưu thông tin về số quả boom của người chơi huyHinh int Lưu thông tin về số lần hủy hình của người chơi - Lớp ChoiNhac: (lớp static) dùng để tạo chương trình phát nhạc cho trò chơi. Sử dụng 2 thư viện: … Tên biến Kiểu dữ liệu Ý nghĩa music WindowsMediaplayerClass Biến chơi nhạc nền trong game sound ISoundEngine Biến chơi nhạc hiệu ứng trong game Tên hàm Ý nghĩa 14
  15. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương PlayMusic Phát nhạc nền trong game (*.mp3, *.wav) PlaySound Phát nhạc hiệu ứng trong game (*.wav) PauseMusic Tạm ngừng nhạc nền Resume Tiếp tục phát nhạc nền StopMusic Dừng nhạc nền - Lớp userXepGach: (là một user control) đối tượng xử lý tất cả các sự kiện của gameboard và các khối gạch Tên biến Kiểu dữ Ý nghĩa liệu nguoiChoi NguoiChoi Thông tin về người chơi hinhHienTai Hinh Lưu hình hiện tại đang có trong gameboard hinhTiepTheo Hinh Lưu hình tiếp theo đang chuẩn bị vào gameboard gameBoard bool[,] Mảng gameboard của trò chơi pictureBox PictureBox[,] Lưu vị trí, cách thức hiện của hình tiếp theo - Lớp frm1Player: (là 1 windows form): thực hiện tất cả những gì trong chế độ 1 người chơi Tên biến Kiểu dữ Ý nghĩa liệu userXepGach1 userXepGach Dùng để sử lý sự kiện chơi game của người chơi - Lớp frm2Player: (là 1 windows form): thực hiện tất cả những gì trong chế độ 2 người chơi Tên biến Kiểu dữ Ý nghĩa liệu userXepGach1 userXepGach Dùng để sử lý sự kiện chơi game của người chơi 1 15
  16. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương userXepGach2 userXepGach Dùng để sử lý sự kiện chơi game của người chơi 2 - Lớp frmOptions (là 1 windows form): thực hiện việc tinh chỉnh cấu hình của trò chơi. - Lớp frmMain: (là 1 windows form): Cung cấp giao diện và các tùy chỉnh menu cho người chơi. - Lớp frmHelp: (là 1 windows form): Cung cấp thông tin về cách chơi, luật chơi, phép bấm, thông tin tác giả. - Lớp frmLogin: (là 1 windows form): chỉ là thực hiện form dạng nháy (cho đẹp mà thôi). Thông tin về các bước chạy khi chương trình chạy: 4. Hướng phát triển tiếp theo 16
  17. Tài liệu nghiên cứu trò chơi Xếp gạch GVHD: TS. Phạm Thi Vương Trong thời gian tới, chúng em sẽ tiếp tục phát triển trò chơi trên theo các hướng sau: - Thêm một số chức năng mới như: tinh chỉnh âm lượng trong game, thêm tính năng tắt bật nhạc khi chơi game (sound). - Thêm phần save, load của chế độ 2 người chơi. - Thêm chức năng chứng ngại vật. Mỗi khi lên level (cấp) thì trò chơi tự động thêm vào một, hai, ba hàng với những khối gạch bất kì nhằm mục đích gây khó cho người chơi. - Thêm Highscore cho 2 chế độ chơi: 1 người chơi và 2 người chơi. 5. Kết luận Với kiến thức hiện có của chúng em hiện tại nên việc phát triển trò chơi còn hạn chế. Tuy nhiên trò chơi cũng đã đáp ứng phần nào yêu cầu cơ bản của một trò chơi thực sự: có khả năng chơi được và ít bị lỗi. Chúng em sẽ phát triển trò chơi dựa trên một số ý tưởng đã có. Cuối cùng, một lần nữa chúng em xin gửi lời cảm ơn đến thầy Vương đã giúp đỡ chúng em hoàn thành chương trình đồ án này. 17
Đồng bộ tài khoản