1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án tốt nghiệp lập trình mobile game phá gạch

32 726 0

Đ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 32
Dung lượng 2,18 MB

Nội dung

Package com.mygdx.screen các màn hình được tạo trong chương trình, cósự liên kết,chuyển đổi nhau theo sự lựa chọn của người dùng - Class Asset: Lưu các hằng số chung và các trạng thái t

Trang 1

TRƯỜNG CAO ĐẲNG NGHỀ ISPACE

Trang 2

LỜI CẢM ƠN

Trước tiên, em xin được gửi lời cảm ơn đến tất cả quý thầy cô đã thamgiagiảng dạy trong chương trình cao đẳng ngành công nghệ thông tin Trường CaoĐẳng nghề ISPACE vì đã truyền đạt những kiến thức hữu ích làm cơ sở cho emthực hiện đồ án

Em cũng xin chân thành cảm ơn đến thầy Lê Hồng Kỳ, người đã tận tìnhhướng dẫn, tạo mọi điều kiện thuận lợi để em hoàn thành tốt đồ án

Sau cùng em xin gửi lời biết ơn sâu sắc đến gia đình vì đã luôn tạo điều kiệncho em trong suốt quá trình học tập cũng như thực hiện đồ án

Do thời gian có hạn và kinh nghiệm chưa nhiều nên đồ án còn nhiều thiếusót, rất mong nhận được ý kiến góp ý của quý Thầy/Cô các anh chị và các bạn

Đồ án tốt nghiệp, Game Breakout

Trang 3

TÓM TẮT ĐỒ ÁN

Trò chơi Phá Gạch là 1 thể loại game cổ điển thuộc thể loại game Break-Out

đã được thịnh hành từ lâu với nhiều phiên bản và thể loại khác nhau Nay nhóm em

đã viết lại và phát triển thêm các chi tiết mới mẻ và thú vị cho game trên hệ điềuhành Android

Luật chơi rất đơn giản nhưng đòi hỏi sự khéo léo, nhanh nhẹn và độ tập trungvào game khá cao của người chơi

Mục tiêu của đồ án này là đúc kết tất cả kiến thức mà nhóm đã được giảngdạy để xây dựng 1 trò chơi trên thiết bị di động chạy hệ điều hành Android

Đồ án tốt nghiệp, Game Breakout

Trang 4

MỤC LỤC

1.1 LỊCH SỬ PHÁT TRIỂN5

1.2 GIỚI THIỆU 5

1.2.1 Luật Chơi 5

1.2.2 Bố Cục Trò Chơi 5

CHƯƠNG 2 : PHÂN TÍCH VÀ THIẾT KẾ 2.1 PHÂN TÍCH

2.1.1 Cấu Trúc Chương Trình 6

2.1.2 Nhiệm Vụ Các Lớp 7

2.2 THIẾT KẾ 8

2.2.1 Giao Diện 8

2.2.2 Sơ Đồ Liên Kết 9

CHƯƠNG 3 : XÂY DỰNG CHƯƠNG TRÌNH 3.1 CÀI ĐẶT MÔI TRƯỜNG 10

3 1.1 Giới Thiệu LibGDX 10

3.1.2 Cài Đặt LibGDX 11

3.2 VIẾT XỬ LÝ TỪNGLỚP 3.2.1 Lớp Lưu Trữ 12

3.2.2 Các LớpGiao Diện 13

3.2.2.1 Màn Hình Chuyển & Màn Hình Menu Chính 13

3.2.2.2 Màn Hình Tuy Chọn 15

3.2.2.3Màn Hình Hiển Thị Điểm 15

3.2.2.4Màn Hình Hướng Dẫn 16

3.2.2.5Màn Hình Menu Tạm Dừng 17

Đồ án tốt nghiệp, Game Breakout

Trang 5

3.2.3 Các Lớp Khác 18

3.2.3.1Banh 18

3.2.3.2Thanh Trượt 18

3.2.3.3Gạch 19

3.2.3.4Vật Phẩm 20

3.2.3.5 Banh Phụ 21

3.2.4 Các Lớp Sự Kiện 22

3.2.4.1Va Chạm 22

3.2.4.2Hiệu Ứng 26

3.2.4.3Điểm Số 27

3.2.4.4Nút Bấm Cơ Bản 28

3.3 KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN 29 3.3.1 Kết Quả Đạt Được

3.3.2 Hướng Phát Triển

Đồ án tốt nghiệp, Game Breakout

Trang 6

CHƯƠNG 1 : TỔNG QUAN

1.1 LỊCH SỬ PHÁT TRIỂN

Game Breakout được phát triển Atati Incvaf giới thiệu từ năm 1976 Nóđược chế tạo bởi Nolan Bushnell và Steve Bristow, Breakout chịu ảnh hưởng lớncủa game Pong phổ biến được phát hành năm 1972 Trong cuối những năm 70, máytính cá nhân chỉ có thể truy cập cho các viện nghiên cứu và chỉ dành cho thí nghiệm

do đó các trò chơi Breakout đầu tiên chỉ phát triển như một trò chơi điện tử

Nhờ sự bùng nổ xuất hiện, ngay lập tức Breakout đã trở nên nổi tiếng pháthành hơn 20 trò chơi Breakout Bản sao của Breakout thực sự đã được phát hànhcho mỗi nền tảng, có thể từ trò giao diện điều khiển máy vào năm 1976 đến PS3 vàonăm 2009.Và trong năm 2007 đã có một sự thay đổi lớn khi Breakout được pháthành Breakout là trò chơi đầu tiên được tạo ra cho các điện thoại di động nền tảngBlackBerry Breakout đã phá kỷ luật về doanh số và tái thành lập các thể loại phongcách Breakout Ngày nay internet phát triển, nhiều trò chơi phong cách Breakoutđược tải lên mạng và thành công nhanh chóng của Breakout thúc đẩy sự phát triểntốt của game này

1.2 GIỚI THIỆU

1.2.1 Luật Chơi

Người chơi sẽ điều khiển 1 thanh trượt ở phía dưới cửa sổ sang trái hoặcsang phải để đỡ bóng thay đổi hướng di chuyển phá các viên gạch xuất hiện trongmàn chơi Nhiệm vụ của người chơi là phải phá vỡ được hết những viên gạch đểchiến thắng

Người chơi có 3 lượt cơ hội chơi, mỗi lần để bóng qua khỏi thanh trượt hoặc

ăn phải các vật phẩm xấu trong màn chơi thì một lượt chơi sẽ bị mất Nếu chưa pháhết gạch mà hết 3 lượt chơi thì thua cuộc và trò chơi kết thúc Ngược lại phá hết tất

cả số gạch có trong màn chơi thì chiến thắng màn đó

1.2.2 Bố Cục Trò Chơi

Khi mở trò chơi, người chơi sẽ thấy màn hình chuyển Game (SplashScreen)

Đồ án tốt nghiệp, Game Breakout

Trang 7

trong khoảng thời gian qui định, sau đó sẽ được chuyển tới màn hình Menu.

Trong Menu chính sẽ có các nút bấm chuyển tới các màn hình khác

baogồm:

-Bắt đầu: bắt đầu lượt chơi mới

-Điểm : xem top 3 điểm cao nhất

-Thoát: thoát game

-Tùy chỉnh : bật tắt nhạc nền và các hiệu ứng của game

-Hướng dẫn : giới thiệu về cách chơi

CHƯƠNG 2 : PHÂN TÍCH VÀ THIẾT KẾ2.1 PHÂN TÍCH

2.1.1 Cấu Trúc Chương Trình

- Để quản lý các lớp thành phần thực thi những nhiệm vụ khác nhau trong

game ta cần tạo và chia ra các Package riêng biệt Mỗi Package chứa các

Class xây dựng các đối tượng hay các thành phần chứa những thuộc tính

hoặc chức năng tương tự nhau Điều này giúp ta dễ dàng truy xuất hay tìm

kiếm,chỉnh sửa các Class game

- Cấu trúc game cần xây dựng :

Package com.mygdx.objects (chứa các đối tượng trong chương trình)

Class Ball_Main

Class Paddle_Main

Đồ án tốt nghiệp, Game Breakout

Trang 8

Package com.mygdx.screen (các màn hình được tạo trong chương trình, có

sự liên kết,chuyển đổi nhau theo sự lựa chọn của người dùng)

- Class Asset: Lưu các hằng số chung và các trạng thái trong game

- Class Game_Score: Vẽ và xử lý các thành phần liên quan điểm trong game

Gói com.mygdx.event gồm có :

Đồ án tốt nghiệp, Game Breakout

Trang 9

- Class Colision: Xét và trả về các trạng thái để phát sinh các hành động, sự kiệnhay phát sinh đối tượng mới khi xảy ra va chạm giữa các đối tượng trong game nhưtrái bóng, thanh trượt, gạch, vật phẩm, trái bóng phụ.

- Class Simplebutton: Tạo các nút bấm riêng tùy thích bằng Texture.

- Class Effect_items: Xét và trả về các trạng thái để phát sinh các hành động, sựkiện hay đối tượng mới khi xảy ra va chạm giữa thanh trượt và các vật phẩm tươngứng

Gói com.mygdx.screen gồm có :

- Class SplashScreen: Màn hình chuyển vào game

- Class MenuScreen: Màn hình menu chính

- Class OptionScreen: Màn hình tùy chỉnh như âm thanh, hiệu ứng

- Class ScoreScreen: Màn hình xem điểm

- Class HelperScreen: Màn hình hướng dẫn cách chơi game

- Class MenuPause: Màn hình menu khi đang chơi game

- Class Game_render: Vẽ tất cả mọi thứ trong game theo từng đối tượng, trạng thái,hành động, sự kiện xảy ra tại thời điểm đó

2.2 THIẾT KẾ

2.2.1 Giao Diện

- Các giao diện màn hình trong game được chứa trong gói com.mygdx.screen

- Mỗi giao diện như đã phân tích ở trên thì có một chức năng riêng và các giaodiên này có sự liện kết chặt chẽ để người chơi có thể chuyển từ màn hình này sangmàn hình khác với từng loại chức năng theo nhu cầu của người chơi

Đồ án tốt nghiệp, Game Breakout

Trang 10

Hình 2.1 Các lớp giao diện màn hình trong Game

2.2.2 Sơ Đồ Liên Kết

Đồ án tốt nghiệp, Game Breakout

Trang 11

- Các giao diện màn hình liên kết với nhau và tùy theo lựa chọn của người chơi sẽhiển thị ra hoặc tắt đi.Có thể xem như life_cycle của game.

Hình 2.2 Sơ đồ liên kết giữa các màn hình

CHƯƠNG 3 : XÂY DỰNG CHƯƠNG TRÌNH3.1 CÀI ĐẶT MÔI TRƯỜNG

3.1.1 Giới Thiệu LibGDX

- LibGDX là một FrameWork được phát triển trên nền OpenGL và được sử dụng

để phát triển các ứng dụng game và đồ họa cho Desktop, Android, iOS, HTML5.-Một số ưu điểm của LibGDX như :

+ Đa nền tảng : Chúng ta chỉ cần viết code một lần nhưng có thể chạy trên đượcnhiều nền tảng khác nhau

Đồ án tốt nghiệp, Game Breakout

Trang 12

+ Hiệu năng: Hiệu năng của LibGDX thực sự rất ấn tượng do LibGDX sử dụng cảJava và mã nguồn C để tạo nên ứng dụng.

+ Mã nguồn: Mã nguồn mở với thiết kế rất rõ ràng và phù hợp với việc pháttriển ứng dụng cho di động LibGDX cho phép người lập trình khả năng sử dụngcác API từ các lớp thấp đến cao, tùy theo yêu cầu của người sử dụng

3.1.2 Cài Đặt LibGDX

Bước 1: Tải về file jar cài đặt LibGDX mới nhất ở đường link sau:

http://libgdx.badlogicgames.com/download.html

- Sau khi tải xong, tìm file jar có tên là gdx-setup-ui và chạy nó, tiếp theo tađặt tên, package, class MainGame, chọn đường dẫn lưu trữ cho project, và đườngdẫn tới thư mục SDK Các mục còn lại có thể để mặc định

- Sau đó nhấn vào nút Ganerate để bắt đầu tạo project

Hình 3.1 Cài đặt LibGDX từ file JAR

Bước 2: Sau khi cài đặt thành công, ta import project mới vào Eclipse

- Từ Eclipse ta chọn File  Import Existing Projects into Workspace 

- Sau đó chọn đườngdẫn đến thư mục project của LibGDX mới tải về, rồi bấm

Finish để hoàn thành

- Trong các Project ta Import vào sẽ có 1 Project chính (Core) và các Project còn lại là các Project tương ứng với các nền tảng khác nhau Khi chúng ta viết xử lý thì

sẽ viết xử lý ở Project Core và các Project khác sẽ liên kết đến Project Core này

Còn phần Resource tức là các hình ảnh, âm thanh… thưởng thì chúng được đặt ở

thư mục Assets của Project Android

Đồ án tốt nghiệp, Game Breakout

Trang 13

Hình 3.2 Import project vào Eclipse

3.2 VIẾT XỬ LÝ CHO TỪNG LỚP

3.2.1 Lớp Lưu Trữ

- Trước hết ta cần tạo 1 hàm là nơi lưu trữ tất cả dữ liệu mà ta sẽ dùng xuyên

suốt các Package, đặt tên làAssets Lớp này tạo các biến kiểu static chứa các thành

phần dữ liệu như hình ảnh, âm thanh hoặc các trạng thái, giá trị được lưu lại sau khithoát game như điểm số, âm thanh đang tắt/mở

- Lớp Assets này lưu trữ hoặc lấy dữ liệu từ data/assets trong Project android.

Hình 3.3 Dữ liệu được luu trong assets

Đồ án tốt nghiệp, Game Breakout

Trang 14

- Tạo phương thức void stactic Load(), khởi tạo các giá trị của các thành phần

dữ liệu mà ta xác định sẽ dùng trong game Để lấy dữ liệu ta có câu lệnh như sau

vd: lấy 1 tấm hình đã được lưu trong thư mục assets trước đó

Hình 3.4 Phương thức khởi tạo các giá trị lấy lên từ assets

- Thông qua đó ta sẽ truy xuất dữ liệu dễ dàng từ bất cứ nơi nào bằng cú pháp Assets.Ten_Thành_Phần

Hìn

h 3.5 Sử dụng các giá trị lưu trong Assets

3.2.2 Các lớp tạo giao diện

- Các Screen được tạo đều implements từ của LibGDX và có tính chất như nhau

Ta chuyển đổi qua lại giữa các screen này bằng câu lệnh :

Game.setScreen(new name_ScreenClass()): hoặc

((Game)Gdx.app.getApplicationListener()).setScreen(new GameScreen());

3.2.2.1 Màn hình mở đầu và Màn hình Menu

- SplashScreen là màn hình mỗi khi bắt đầu 1 ứng dụng hay game dùng để trang

trí làm đẹp cho ứng dụng hoặc quảng cáo thông tin về ứng dụng hay game đó Có

thể tạo hoặc bỏ qua cũng không sao

- Tiếp đến là tạo menu trước khi vào chơi game Ta tạo lớp MenuScreen và cũng

cho implements lớp Screen

- Ở MenuScreen, ta có thể vẽ các nút bấm chuyển game bằng nhiều cách Ở đây

ta sẽ vẽ các nút này bằng Skin, ta load file.json đã có từ dữ liệu bằng lệnh

skin = new Skin(Gdx.files.internal("menuSkin.json") ,

new TextureAtlas("atlas.pack"));

-Sau đó khởi tạo các nút bấm và add vào Table, rồi add Table vào Stage trong

hàm show() Gọi phương thức Stage.draw() trong render() để vẽ các nút.

Đồ án tốt nghiệp, Game Breakout

Trang 15

Hình 3.6 Phương thức tạo các nút bấm bằng file JSON

Hình 3.7 SplashScreen chuyển sang MenuScreen

- Trong màn hình Menu ta bắt sự kiện click_listener cho các nút và sử dụng

phương thức sau để chuyển đến màn hình tương ứng

((Game)Gdx.app.getApplicationListener()).setScreen(new“name_classScreen”)

- Đồng thời ở màn hình Menu, ta tạo một phương thức luôn kiểm tra trạng thái

ban đầu của âm thanh trong game đang tắt hay mở, phương thức này được gọi trong

render().

Hình 3.8 Hàm kiểm tra trạng thái âm thanh lúc đầu

3.2.2.2 Màn hình tuy chọn (OptionScreen)

- OptionScreen là màn hình dùng để bật tắt âm thanh và các hiệu ứng của game

Ở lớp này ta cài đặt Screen và GestureListener

Đồ án tốt nghiệp, Game Breakout

Trang 16

- Trong lớp OptionScreen ta vẽ các nút bật tắt âm thanh, hiệu ứng

- Tạo hàm kiểm tra xác định tọa độ lúc người dùng chạm vào màn hình trong

phương thức tap() Nếu trùng với tọa độ nút bấm thì thay đổi các trạng thái âm

thanh hoặc hiệu ứng bật/tắt

Hình 3.9 Hàm thay đổi các giá trị trạng thái như tắt/mở âm thanh

Hình 3.10 Màn hình cài đặt

3.2.2.3 Màn hình hiển thị điểm (ScoreScreen)

- ScoreScreen là màn hình để hiển thị ba điểm cao nhất của người chơi

- Trong lớp này ta vẽ lên 3 điểm số cao nhất của game dựa vào các phương

thức getScore_first(),getScore_second() và getScore_third() trong lớp Asset()

Đồ án tốt nghiệp, Game Breakout

Trang 17

Hình 3.11 Hàm hiển thị ba điểm cao nhất theo thứ tự giảm dần

Hình 3.12 Màn hình xem điểm

3.2.2.4 Màn hình hướng dẫn (HelperScreen)

- Màn hình hướng dẫn là màn hình giới thiệu tổng quan về cách thức mà chương

trình thực hiện Cụ thể ở đây sẽ giới thiệu cho ta biết về các thành phần

trong game, cách chơi game và các luật lệ trong game

Hình 3.13 Màn hình hướng dẫn

3.2.2.5 Màn hình menu tạm dừng

Đồ án tốt nghiệp, Game Breakout

Trang 18

- Màn hình menu Tạm Dừng xuất hiện khi đang chơi game mà người chơi bấm

vào nút tạm dừng trên góc màn hình

- Màn hình menu Tạm Dừng chứa các thành phần tương tự như màn hình cài đặt.Gồm nút về Menu Chính, nút Tiếp Tục, nút tắt mở âm thanh…

Hình 3.14 Màn hình khi đang chơi và lúc bấm tạm dừng

- Màn hình menu Tạm Dừng được cài đặt Screen và GestureListener

- Các nút trên menu Tạm Dừng xử lý các trạng thái tương tự màn hình tuy chọn

Có nhiều cách khác nhau để tạo các nút

- Ở đây ta sẽ tạo các nút bấm từ lớp simple_button tự xây dựng (kể cả nút tạm

dừng trên góc phải màn hình để hiện hoặc đóng menu Tạm Dừng)

- Ta tạo hàm kiểm tra xác định tọa độ lúc người dùng chạm vào màn hình trong

phương thức tap() Nếu trùng với tọa độ nút bấm thì thay đổi các trạng thái âm

thanh hoặc hiệu ứng bật/tắt

- Đồng thời, ta cũng xử lý trạng thái của các đối tượng đang di chuyển trên màn

hình chơi game lúc này theo nút Tạm Dừng Nếu trạng thái nút Tạm Dừng là true

thì trạng thái Dừng qui định trong mỗi đối tượng cũng xét theo true,và ngược lại.

- Sau đó gọi lại các hàm cập nhật trạng thái, hình ảnh của âm thanh hoặc hiệu

ứng trong render().

Đồ án tốt nghiệp, Game Breakout

Trang 19

Hình 3.15 Hàm hiển thị menu tạm dừng khi đang chơi game

3.2.3 Các lớp khác

3.2.3.1 Lớp Banh :

- Tạo hàm vẽ Trái Banh có tọa độ (x,y) kích thước (w,h) và tốc độ speedX,

speedY

public Ball_Main(Vector2 pos,Vector2 Siz,speedX,speedY);

- Sau khi vẽ xong ta cần tạo phương thức xác định khung bao quanh Trái Banh đểkiểm tra va chạm giữa Trái Banh với các đối tượng khác

setbound_circle = new Circle(position.x+size.x/2,position.y+size.x/2,r);

- Tạo các hàm cập nhật thay đổi vị trí,kích cỡ, hiệu ứng, tốc độ di chuyển và hướng

di chuyển của Trái Banh khi xảy ra các sự kiện tương ứng Vẽ lại Trái Banh sau khigọi các hàm cập nhật này

Hình 3.16 Hàm vẽ trái banh

3.2.3.2 Lớp Thanh Trượt

-Tạo hàm vẽ thanh trượt có tọa độ(x, y) kích thước(w, h)

public Paddle_Main(Vector2 pos,Vector2 Size)

- Sau khi vẽ xong ta cần tạo phương thức xác định khung bao quanh thanh trươt để

có thể kiểm tra sự chạm giữa thanh trượt với các đối tượng khác

setbound = new Rectangle(position.x,position.y,size.x,size.y);

Đồ án tốt nghiệp, Game Breakout

Trang 20

- Tạo các hàm cập nhật thay đổi vị trí, kích cỡ, hiệu ứng của thanh trượt khixảy ra

các sự kiện tương ứng Vẽ lại thanh trượt sau khi gọi các hàm này

Hình 3.17 Hàm vẽ thanh trượt

3.2.3.3 Lớp Gạch

- Hàm khởi tạo và vẽ 1 đối tượng gạch tương tự như các hàm của đối tượngbanh,

thanh trượt và vật phẩm, với các tham số vị trí (x,y) kich thước (w,h) và tham số

cấp độ để vẽ các đối tượng theo từng cấp độ khác nhau Tạo hàm xác đĩnh khung

bao tương tự các đối tượng khác

public Brick_Main(Vector2 pos,Vector2 Size,int type)

setbound = new Rectangle(position.x,position.y,size.x,size.y);

- Tạo hàm khởi tạo mảng gạch với các tham số (số lượng phần tử n, tọa độ x,y

bắt đầu, tọa độ x,y tiếp theo)

//Khoitao map Bricks(n,Xfirst,Xnext,Yfirst,Ynext) w =540 wbrick = 60

init_brick_list(30, 11, 76, h /2,60);

Hình 3.18 Hàm khởi tạo giá trị cho mảng gạch

Đồ án tốt nghiệp, Game Breakout

Ngày đăng: 07/05/2016, 23:54

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w