25
Sinh Viên Thực Hiện: 1.Hà Viết Cường D11CQCN01 Mssv: N112104012 2.Nông Văn Vị D12CQCN01 Mssv: N112104087 SVTH: Hà Viết Cường –Nông Văn Vị Page 1 Nhóm 20 Đề Tài. Game xếp hình pikach u

DoAnGameXepHinh Pikachu

Embed Size (px)

Citation preview

Page 1: DoAnGameXepHinh Pikachu

Sinh Viên Thực Hiện:

1.Hà Viết Cường D11CQCN01 Mssv: N112104012

2.Nông Văn Vị D12CQCN01 Mssv: N112104087

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 1

Nhóm 20

Đề Tài. Game

xếp hình

pikachu

Page 2: DoAnGameXepHinh Pikachu

MỤC LỤC

PHẦN I: MỞ ĐẦU..................................................................................................3

3. Lý do chọn đề tài.............................................................................................3

4. Mục đích của đề tài.........................................................................................3

5. Phương pháp nghiên cứu của đề tài.............................................................3

6. Phân công nhiệm vụ.......................................................................................4

PHẦN II: NỘI DUNG.............................................................................................4

Chương 1: GIỚI THIỆU VỀ GAME PIKACHU............................................4

1.1. Tìm hiểu về game Pikachu.....................................................................4

1.2. Tìm hiểu về java.....................................................................................4

1.3. Kết luận chương 1..................................................................................4

Chương 2: PHÂN TÍCH MÔ HÌNH XÂY DƯNG GAME PIKACHU.........5

2.1. Cấu trúc của game Pikachu...................................................................5

2.2. Phân tích và thiết kế...............................................................................7

2.2.1. Thiết kế..........................................................................................7

a. Danh sách các packet, class trong game.....................................7

b. Thiết kế..........................................................................................7

2.2.2. Hệ thống của game........................................................................8

2.3. Cách xây dựng game..............................................................................8

2.3.1. Chi tiết các hàm quan trọng.........................................................8

a. Hàm xử lý sự kiện click ..................................................................8

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 2

Page 3: DoAnGameXepHinh Pikachu

b. Vòng lặp game..............................................................................11

c. Đồ họa...........................................................................................12

2.3.2. Chi tiết các hàm con được sử dụng...........................................12

a. Thuật toán tìm đường ......................................................................13

b. Hàm xử lý màn chơi .......................................................................15

c. Hàm khởi tạo qua màn tiếp theo......................................................16

d. Hàm kiểm tra đường ăn .................................................................16

Error: Reference source not foundMột số hình ảnh về game .............Error: Reference source not found

Chương 3: . Một số hình ảnh về game.......................................................17

Error: Reference source not foundError: Reference source not found....Error:Reference source not found

PHẦN IV: TÀI LIỆU THAM KHẢO..................................................................20

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 3

Page 4: DoAnGameXepHinh Pikachu

PHẦN I: MỞ ĐẦU1. Giới thiệu môn học2. Giới thiệu đề tài3. Lý do chọn đề tài- Khách quan:

Game là một trong những nhu cầu giải trí của con người, vì nó mang ý nghĩa nhằm thư giản và giải trí sau thời gian làm việc và học tập.

Xã ngày càng phát triển con người ngày càng văn minh, thì những suy nghĩ về nghiện game là không còn nữa,giờ đây game được xem là một môn giải trí được nhiều người chọn đến,thay vì phải chọn giải trí bằng những môn hoạt động ngoài trời thì giờ đây có nhiều game ra đời nhằm đáp ứng nhu cầu giải trí của những người không có nhiều thời gian rãnh.

Game mang tính chất giải trí cũng như những môn thể thao khác,nhưng nó vẫn được nhiều người chọn đến.

- Chủ quan:

Trong suốt quá trình học tập thì nhóm đã tích lũy một số kiến thức về cách làm game,nên nhóm đã thống nhất và đưa ra quyết định chọn đề tài game PIKACHU làm đề tài chung của nhóm.

4. Mục đích của đề tài

Đề tài này rất hữu ích đối với nhiều sinh viên, vì nó mang lại rất là nhiều kiến thức cần thiết.

Mục đích của đề tài này là mang lại sự hiểu biết về cách lập trình 1 game là như thế nào, hoạt động ra sao.

Như vậy, sinh viên có thể nâng cao được khả năng lập trình của mình và tiếp thu được nhiều kiến thức quan trong.

5. Phương pháp nghiên cứu của đề tài.

Lúc đầu rất khó khăn trong việc lập trình game Pikachu, nhưng nhóm đã cố gắng tìm tòi trên mạng bằng nhiều hình thức như:

- Tìm kiếm video trên youtube: how to make 2D game java,…- Tài liệu tham khảo về lập trình java và thư viện của java,…

6. Phân công nhiệm vụ.

Đây là nhiệm vụ của từng thành viên:

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 4

Page 5: DoAnGameXepHinh Pikachu

Tên Tuần Công việc

Hà Viết Cường 1,2 Nghiên cứu về java, cách thức làm game.

3 Viết giao diện game, và load những giá trị.

4,5 Viết thuật toán tìm đường.

6 Viết sự kiện click

Đến hết Thiết kế thêm giao diện, và còn lại

Nông văn Vị 1,2,3,4 Viết báo cáo, powerpoint

Đến hết Viết các thuật toán còn lại.

PHẦN II: NỘI DUNGChương 1: GIỚI THIỆU VỀ GAME PIKACHU

1.1. Tìm hiểu về game Pikachu

Game PIKACHU là một game rất hay,nó được chứng minh khi ai đã từng thử qua một lần.bởi sự đa dạng của những hình được xếp đảo lộn không theo một quy luật nào.Và cách chơi là bạn phải tìm được hai hình giống nhau trong một mảng hình khác nhau.Nó còn được thể hiển qua sự lắc léo của những màn chơi khác nhau.Tuy game này không khó chơi,nhưng người chơi nào muốn chinh phục nó thì không phải là dễ,bởi vấn đề thời gian mới là thử thách lớn nhất.

1.2. Tìm hiểu về java

Java là một ngôn ngữ lập trình do 1 nhóm các nhà khoa học của hãng Sun Microsystems sáng tạo nên.

Java đặc biệt hướng đối tượng và rất mạnh về internet.

Java là một ngôn ngữ lập trình dạng lập trình hướng đối tượng(OOP).Java được thiết kế để biên dịch mã nguồn thành bytecode,sau đó bytecode sẽ được môi trường thực thi chạy.Về mặc cú pháp thì Java được vay mượn nhiều từ C và C++ nhưng nó có sử dụng them cú pháp lập trình hướng đối tượng đơn giản hơn và có tính năng sử lý ở cấp thấp hơn.

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 5

Page 6: DoAnGameXepHinh Pikachu

1.3. Kết luận chương 1

Nhóm nghiên cứu quyết định chọn đề tài thiết kế game PIKACHU làm đề tài.Lý do nhóm chọn đề tài này là vì:

- Nhóm đã tiếp xúc và muốn tìm hiểu nhiều về ngôn ngữ Java.- Có thể nói game PIKACHU thích hợp với mọi người,mọi lứa tuổi,đặc biệt là

học sinh,sinh viên, nhân viên văn phòng.

Game PIKACHU nhìn có vẻ đơn giản nhưng nó luôn mang lại sự thư giản thoải mái và được nhiều người thích và chọn nó để giải trí.

Chương 2: PHÂN TÍCH MÔ HÌNH XÂY DƯNG GAME PIKACHU2.1. Cấu trúc của game Pikachu

Phần này chúng ta sẽ nói về các luật lệ, có những gì, cách quản lý…

- Luật chơi:o Game này mô phỏng game Pikachu, nhiệm vụ của người chơi là click

vào 2 hình giống nhau và đường đi rẽ ít nhất 2 lần.o Nếu 2 hình giống nhau và rẽ ít nhất 2 lần, hình sẽ biến mất.o Người chơi phải ăn hết hình trong thời gian quy định, nếu không thì

người chơi sẽ thua.- Cấu trúc:

o Cái giao diện game sẽ có những khung hình vuông có tất cả là 16x9 ô. Ma trận 16x9 là để hiển thị trên màn hình thực chất ma trận trong game là 18x11 ô.

Như vậy để cho game biết hiển thị những hình nào trên màn hình thì sử dụng mảng 2 chiều 18x11 để lưu giá trị từng ô.

VD: int vitri[18][11];

Nhưng trong game mỗi loại hình chỉ được xuất hiện 4 lần. Như vậy mỗi giá trị sẽ xuất hiện 4 lần trong ma trận 18x11 và ô nào trống sẽ có giá trị là -1.

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 6

Page 7: DoAnGameXepHinh Pikachu

VD:

[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]

[-1, 4, 13, 25, 35, 29, 14, 15, 34, 19, 16, 24, 14, 6, 11, 0, 28, -1]

[-1, 16, 21, 32, 8, 32, 14, 11, 14, 27, 6, 10, 30, 9, 8, 18, 27, -1]

[-1, 17, 13, 10, 6, 33, 8, 29, 21, 6, 25, 35, 18, 32, 32, 30, 34, -1]

[-1, 16, 9, 25, 13, 30, 27, 7, 35, 33, 30, 29, 10, 21, 10, 21, 16, -1]

[-1, 24, 13, 18, 25, 9, 24, 28, 3, 0, 33, 35, 11, 20, 18, 3, 24, -1]

[-1, 27, 11, 3, 34, 20, 5, 12, 22, 0, 8, 2, 2, 15, 0, 29, 5, -1]

[-1, 28, 20, 33, 7, 7, 26, 15, 12, 12, 20, 12, 19, 5, 34, 22, 17, -1]

[-1, 1, 5, 15, 4, 31, 3, 31, 7, 26, 17, 17, 19, 1, 26, 28, 1, -1]

[-1, 22, 9, 4, 23, 22, 19, 1, 31, 23, 4, 26, 2, 2, 23, 31, 23, -1]

[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]

Như vậy, các viền bên ngoài là trống để có đường đi giữa 2 hình.

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 7

Hình 1

Page 8: DoAnGameXepHinh Pikachu

Kết luận:

- Vậy để quản lý được ta sẽ dung 1 ma trận 2 chiều với kích thước 16x9 ở mức khó, 15x8 mức trung bình và 6x14 với mức dễ.

- Hàm xử lý sự kiện click để người chơi tương tác được với game.- Cần thuật toán tìm đường để quy định luật chơi cho game.- Vòng lặp game để quy định thời gian.- Và hàm vẽ các hình trong game.

2.2. Phân tích và thiết kế2.2.1. Thiết kế

a. Danh sách các packet, class trong game.

Đây là danh sách các class trong game và chức năng của từng class:

STT Tên class Chức năng

1 Mainrun Chạy tất cả chương trình

2 Boardpanel Hiển thị giao diện hình nền, Icon, Item

2 Algoriths Tạo ma trận hình, tìm kiếm đường đi

3 Maingame Chứa các dữ liệu của game, khởi tạo giá trị, vẽ game, các thành phần hiển thị.

4 DrawPath Danh sách các hướng đi.

ButtonController Xử lý Button

5 Sounds, mediaplayer Danh sách âm thanh và phát âm thanh.

6 MenuItemController Sự kiện và xử lý sự kiện khi dùng Game

7 Images Packets chứa hình, avarta, Item

8 SquareClicked Xử lý sự kiện click chuột

9 Times Quản lý thời gian chơi

b. Thiết kế.

2.2.2. Hệ thống của game.

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 8

Page 9: DoAnGameXepHinh Pikachu

Đây là cách hoạt động của game Piakchu:

2.3. Cách xây dựng game2.3.1. Chi tiết các hàm quan trọng.

a. Hàm xử lý sự kiện click

Hàm này sẽ cho biết hành động click sẽ như thế nào trong game và quy định luật chơi của game.

Nếu người chơi lick vào một tấm hình trong game thi hàm này sẽ hoạt động.

Cấu trúc:

- Nếu người chơi click vào 1 tấm hình:o Nếu click hình đầu tiên sẽ lưu lại vị trí hình 1 và đánh dấu đã click hình

1.o Nếu click hình thứ 2:

Nếu 2 hình giống nhau thì sẽ ăn. Nếu 2 hình khác nhau sẽ không làm gì. Nếu 2 hình giống nhau và hết đường ăn thì sẽ random lại. Nếu 2 hình giống nhau và hết hình thì sẽ qua màn chơi tiếp theo.

Mô tả:

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 9

Hình 2

Page 10: DoAnGameXepHinh Pikachu

- Nếu hình đầu tiên chưa click(firstclicked = flase),ta dùng biến Point firstClickedPoint lấy tọa độ mà chúng ta đã click.

o Ta sẽ lưu vị trí được click và tính toán ra vị trí trong ma trận.o Ta sẽ cho hệ thống biết người chơi click ô đầu tiên firstClicked =

true.o Và vẽ lại game, lúc này ta sẽ có khung vuông trên hình được click.

- Nếu hình đầu tiên đã click(firstClicked = true),ta dùng biến secondClickedPoint lưu tọa độ thứ hai đã click,

o Ta sẽ lấy sự kiện click và tính toán ra vị trí trong ma trận.o Nếu vị trí này khác với vị trí hình thứ nhất được click

Nếu giá trị hai vị trí này bằng nhau Ta sẽ lưu lại giá trị này. Gán cho 2 vị trí này bằng -1 để 2 vị trí này trống để hàm

tìm đường có thể đi được Gọi hàm tìm đường đi đưa vào tham số là hai vị trí. Gán giá trị lại cho hai vị trí được click(vì nếu không tìm

được đường đi thì không được xóa hai hình này) Nếu tìm ra đường đi ngắn nhất:

o Số lượng của loại hình được click sẽ giảm xuống 2(vì mỗi giá trị sẽ xuất hiện 4 lần,ăn 2 thì còn 2)

o Điểm của người chơi tang lên o Âm thanh được ăn sẽ chạyo Xóa hai hình này,gán hai vị trí này bằng -1o Vẽ đường đi hai đường lại với nhau và cho game

ngưng 0.3s để người chơi có thể thấy đường đio Tổng số lượng hình giảm đi 2.o Gọi hàm level để xử lý màn chơi.

o Và ta sẽ xét tiếp nếu như tổng số lượng hình giảm xuống 0: Qua màn chơi tiếp theo khởi tạo lại giá trị.

o Còn chưa hết hình thì sẽ kiểm tra đường ăn: nếu hết thì random lại cho người chơi và số lượng thay đổi giảm đi 1.

o Và cuối cùng ta phải xét xem còn lượt thay đổi không, hết thì sẽ vẽ ra chữ full time: người chơi sẽ thua.

Lưu đồ:

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 10

Page 11: DoAnGameXepHinh Pikachu

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 11

Hình 3

Page 12: DoAnGameXepHinh Pikachu

b. Vòng lặp game

Vòng lặp game trong game này là dùng để tính thời gian trong game. Vòng lặp game là 1 vòng lặp chay vô tận để kiểm soát thời gian đến khi nào người chơi thoát game.

Input: thời gian ban đầu của game.Output: quy định thời gian cho game.

Cấu trúc:- Nếu như game vẫn đang chạy:

o Thời gian ban đầu sẽ giảm Nếu hết giờ thì người chơi thua. Nếu ăn hết mà chưa hết giờ thì sẽ qua màn tiếp theo với thời gian

ban đầu.Mô tả:

Ta cho chạy vòng lặp while vô tận:- Nếu thời gian vẫn lớn hơn 0

o Thời gian sẽ giảm đi 1 giây.- Nếu thời gian = không

o Kết thúc game, không cho người chơi chơi nữa.

Ta sẽ cho luồng xử lý trong game nghỉ 1 giây (như vậy, nghỉ 1 giây thì thời gian sẽ giảm 1 giây)

Lưu đồ:

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 12

Hình 4

Page 13: DoAnGameXepHinh Pikachu

c. Đồ họa

Hàm này để vẽ các hình game, tất cả đồ họa trong game.

Mô tả:

- Nếu người chơi chưa thua:o Duyệt ma trận trong game và vẽ các hình game.o Nếu hình thứ 1 được click

Vẽ viền hình đó- Ngược lại, người chơi thua:

o Vẽ chữ game over.

Lưu đồ:

2.3.2. Chi tiết các hàm con được sử dụnga. Thuật toán tìm đường

Input: vị trí của 2 hình giống nhau.

Output: đường đi ngắn nhất giữa 2 hình nếu có.

Thuật toán này sẽ tự động tìm đường đi ngắn nhất và rẻ nhiều nhất 2 lần giữa 2 ô hình trong game.

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 13

Hình 5

Page 14: DoAnGameXepHinh Pikachu

Thuật toán này là phần quan trọng nhất của game Pikachu vì nó quy định luật chơi của game. Để viết thuật toán này chúng ta sẽ dùng đệ quy quay lui để viết.

Thuật toán

Hàm này ta cần 2 đối số là vị trí của hình thứ 1 và vị trí của hình thứ 2 và hướng đi đến hình thứ 2.

Cấu trúc:

- Ta sẽ đệ quy chạy 4 hướng từ vị trí hình thứ 1 sang hình thứ 2:o Nếu vị trí đang chạy nằm trong vùng trống và rẽ ít hơn 2 lần.o Nếu chạy đến hình cần tìm thì lưu lại quảng đường và so sánh quảng

đường nào ngắn nhất.

Mô tả:

- Nếu vị trí đang chạy ra khỏi ma trận trong game thì thoát.

- Nếu không phải ô trống thì thoát.

- Kiểm tra 3 điều kiện trên xong, nếu không thỏa 3 điều kiện trên thì ta sẽ lưu lại vị trí và hướng đi đang chạy.

- Nếu rẽ hơn 2 lần thì thoát.

- Xong, chiều dài sẽ tăng lên 1 và đánh dấu lại vị trí này là đã đi qua sẽ không đi lại đường này nữa.

- Nếu tìm được đến được ô hình thứ 2 thì kiểm tra xem chiều dài đường đi nào ngắn nhất thì lưu lại đường đi đó

- Nếu chưa tìm được đường đi đến ô hình thứ 2 thì ta dùng đệ quy đi qua 4 hướng.

Hàm này sẽ chạy nhiều hướng khắp ma trận, chạy xong sẽ kiểm tra đường nào ngắn nhất sẽ lưu lại đường đó. Như vậy chúng ta sẽ có được đường đi từ ô hình thứ 1 đến ô hình thứ 2.

Mô tả về thuật toán:

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 14

Page 15: DoAnGameXepHinh Pikachu

b. Hàm xử lý màn chơi

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 15

Xanh: số thứ tự đường đi

Nâu: đánh dấu đã đi qua

Hình 6

Page 16: DoAnGameXepHinh Pikachu

Input: level của game.

Output: giá trị của ma trận sẽ thay đổi theo level.

Trong hàm này sẽ quy định người chơi đang ở màn chơi thứ mấy, mỗi màn chơi các ô hình sẽ di chuyển khác nhau làm cho ngày càng khó.Cấu trúc:

- Màn 1: nếu ăn 2 hình thì tất cả hình ở dưới sẽ dồn lên che phần bị mất.- Màn 2: nếu ăn 2 hình thì tất cả hình ở bên phải sẽ dồn sang trái che phần bị mất.- …

Thuật toánChúng ta cần 1 đối số đầu vào là kiểu số nguyên để biết người chơi đang ở màn chơi thứ mấy.

- Nếu đối số vào là số 1 thì người chơi sẽ chơi như bình thường sẽ không có biến đổi gì cả.

- Nếu đối số vào là số 2 thì người chơi nếu ăn 2 ô hình thì nếu còn hình ở dưới thì chúng sẽ chạy lên lắp lỗ trống đó:

o Chúng ta sẽ xét xem vị trí của 2 hình được chọn xerm hình nào nằm ở dưới và hình nào nằm ở trên, chúng ta sẽ di chuyển hình lên từ hình dưới trước rồi đến hình trên nó. Cái này để đảm bảo nếu ăn 2 ô hình liền nhau theo đường thẳng từ trên xuống, nếu không xét thì nếu làm sẽ bị mất hình.

o Ta sẽ duyệt ma trận ở ô hình nằm dưới trong 2 ô hình được chọn, ta sẽ duyệt từ vị trí đó đi xuống và dồn các phần tử lên.

o Sau đó ta duyệt ma trận ở ô nằm trên, ta cũng duyệt từ vị trí được chọn xuống và dồn phần tử lên.

Các vòng tiếp theo sẽ cũng như level 2.Như vậy người chơi ăn 2 ô hình thay vì 2 ô hình đó mất đi thì nó sẽ dồn các hình dưới lên, như vậy sẽ thay đổi các vị trí các ô hình sẽ làm người chơi càng ngày càng rối mắt.

c. Hàm khởi tạo qua màn tiếp theo

Output: khởi tạo lại những giá trị khi qua màn tiếp theo.

Mô tả:

- Màn chơi sẽ tăng lên, Gamelevel++, điểm cộng them thời gian, gán lại thời gian.- Gán lại số lượng hình.- Khởi tạo lại các giá trị trong ma trận.

d. Hàm kiểm tra đường ăn

Input: mảng 2 chiều trong gameOutput: đường ăn còn hay không.

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 16

Page 17: DoAnGameXepHinh Pikachu

Cấu trúc:- Nếu hết đồ ăn thì sẽ kiểm tra xem còn đồ ăn hay không.- Nếu không còn đường ăn thì random lại.

Mô tả:- Ta sẽ duyệt mảng 2 chiều của game:

o Nếu vị trí đang xét khác -1 Ta dùng hàm tìm đường để tìm đường đến hình giống như hình

đang xéto Nếu tìm thấy đường đi đến hình giống nhau thì bẻ vòng lặp duyệt mảng

(vì game có 1 đường ăn thì game vẫn tiếp tục)Lưu đồ:

Chương 3: Một số hình ảnh về game

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 17

Hình 7

Page 18: DoAnGameXepHinh Pikachu

Hình 1.

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 18

Page 19: DoAnGameXepHinh Pikachu

Hình2 2.

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 19

Hình 9

Page 20: DoAnGameXepHinh Pikachu

Chương 4: KẾT LUẬN

So với game Pikachu hoàn chỉnh thì nhóm làm khoảng chỉ được 70-80% yêu cầu. người chơi có thể chơi với nhiều tùy chọn, hệ thống quản lý người chơi, thời gian, lưu và tiếp tục,…Tuy xử lý trong game còn 1 số lỗi nhỏ nhưng nhóm sẽ cố gắng tiếp tục khắc phục những lỗi đó.

Các xử lý trong game cũng tương đối chính xác.

PHẦN III: Tổng Kết

Nhóm đã rút ra được rất nhiều kinh nghiệm về đề tài như: lập trình game, viết báo cáo,…

Tuy game vẫn còn thiếu sót và lỗi nhưng game vẫn xử lý tương đối tốt, nhóm sẽ tiếp tục sửa lỗi và phát triển game nhiều hơn như tính năng lưu điểm và xếp hạng người chơi….

PHẦN IV: TÀI LIỆU THAM KHẢO

Nhóm đã tìm kiếm và thao khảo tài liệu như: video, ebook, thư viện của java,…

Link:

SVTH: Hà Vi t C ng –Nông Văn Vế ườ ị Page 20

Hình 3