1. Trang chủ
  2. » Công Nghệ Thông Tin

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

15 1K 29
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 2,58 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các yêu cầu khi lập trình 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..

Trang 1

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

Trang 2

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

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

Trang 3

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

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

Trang 4

- 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 falsethì ngược lại.

true true true true

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

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:

true true true false true false

true true true true

false true true true true false

true true false

false true true

false true false true true true

Khối I

Khối O

Khối T

Khối S Khối Z

Trang 5

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:

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:

Trang 6

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

Trang 7

Hình 3: Giao diện 1 người chơi

Hình 4: Giao diện 2 người chơi

Trang 8

Hình 5: Giao diện Menu “Help” của trò chơi

Hình 6: Giao diện Menu “Options” của trò chơi

Trang 9

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

Trang 10

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

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

Trang 11

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

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,

…)

Trang 12

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

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

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, …)

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

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

PlayMusic Phát nhạc nền trong game (*.mp3, *.wav)

Trang 13

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

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

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

userXepGach1 userXepGach Dùng để sử lý sự kiện chơi game của người chơi 1 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

Trang 14

- 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

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ó.

Ngày đăng: 02/07/2014, 04:20

HÌNH ẢNH LIÊN QUAN

Hình 1: Giao diện khi khởi động trò chơi - Tài liệu giới thiệu cách lập trình trò chơi xếp gạch bằng C# ppsx
Hình 1 Giao diện khi khởi động trò chơi (Trang 6)
Hình 2: Giao diện Menu của trò chơi - Tài liệu giới thiệu cách lập trình trò chơi xếp gạch bằng C# ppsx
Hình 2 Giao diện Menu của trò chơi (Trang 6)
Hình 3: Giao diện 1 người chơi - Tài liệu giới thiệu cách lập trình trò chơi xếp gạch bằng C# ppsx
Hình 3 Giao diện 1 người chơi (Trang 7)
Hình 4: Giao diện 2 người chơi - Tài liệu giới thiệu cách lập trình trò chơi xếp gạch bằng C# ppsx
Hình 4 Giao diện 2 người chơi (Trang 7)
Hình 5: Giao diện Menu “Help” của trò chơi - Tài liệu giới thiệu cách lập trình trò chơi xếp gạch bằng C# ppsx
Hình 5 Giao diện Menu “Help” của trò chơi (Trang 8)
Hình 6: Giao diện Menu “Options” của trò chơi - Tài liệu giới thiệu cách lập trình trò chơi xếp gạch bằng C# ppsx
Hình 6 Giao diện Menu “Options” của trò chơi (Trang 8)
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. - Tài liệu giới thiệu cách lập trình trò chơi xếp gạch bằng C# ppsx
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 (Trang 11)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w