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

Tiểu luận môn lập trình java

23 0 0
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

Tiêu đề Tiểu Luận Môn: Lập Trình Java
Tác giả Nguyễn Cao Trung, Nguyễn Gia Phúc, Lưu Đình Hưng
Người hướng dẫn Trần Hữu Phi
Trường học Trường Đại Học Điện Lực
Chuyên ngành Công Nghệ Thông Tin
Thể loại tiểu luận
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 23
Dung lượng 3,65 MB

Nội dung

Code sau dùng để khai báo các thuộc tính vào trong BTL như :- Toạ độ làn đường - Toạ độ xe - Giá trị di chuyển - Số lượng chướng ngại vật - Mảng ảnh cho chướng ngại vật - Mảng toạ độ cho

Trang 1

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN

TIỂU LUẬN MÔN: LẬP TRÌNH JAVA

Sinh viên thực hiện

: Nguyễn Cao Trung

Nguyễn Gia Phúc

Lưu Đình Hưng

Giảng viên hướng dẫn : Trần Hữu Phi

Ngành : Công nghệ thông tin

Chuyên ngành : Công nghệ phần mềm

Lớp : D16CNPM2

Khóa : 2021-2026

Trang 2

TÀI LIỆU MÔ TẢ BÀI TẬP LỚN

1 LẬP TRÌNH GAME ĐUA XE

- Ứng dụng/Phần mềm: JAVA

- Bài tập lớn này sẽ code một game đua xe vượt chướng ngại vật 2d, một game đã mở đầu cho tuổi thơ của các người lớn thủa đầu những năm

công nghệ mới phát triển Người chơi sẽ điều khiển 1 nhân vật 2d lái xe

để tránh các chướng ngại vật và đạt kỷ lục sau mỗi lần chơi

STT Họ và tên Mã SV

Nội dung thực hiện

Ghi chú

Phân tích chức năng, yêu cầu ứng dụng, giải pháp thực thi

Lập trình, thực thi

Viết tài liệu

Trang 3

- Biểu đồ tổng quát chương chình:

Game StreetBoiRunner của chúng em gồm 2 folder chính là src và image Folder src là folder chứa những Package dùng để thực thi viết code, xây dựng

dùng trong ứng dụng Game

Sau đây là package các class cụ thể có trong chương trình:

Đầu tiên, đến với Class GamePlay

Các code sau sử dụng để thêm các thư viện vào java để có thể tạo các sự kiện.w

Trang 4

Code sau dùng để khai báo các thuộc tính vào trong BTL như :

- Toạ độ làn đường

- Toạ độ xe

- Giá trị di chuyển

- Số lượng chướng ngại vật

- Mảng ảnh cho chướng ngại vật

- Mảng toạ độ cho chướng ngại vật

- Từ khóa protected được sử dụng để chỉ định mức độ truy cập của một thành phần (biến, phương thức hoặc lớp con) trong một lớp Khi một thành phần được khai báo là protected, nó có thể được truy cập bởi các phương thức trong cùng một lớp, các lớp con của lớp đó và các lớp trong cùng một gói

Trang 5

- 2 dòng code trên sử dụng để kiểm tra kết thúc và event/sự kiện nút.

- Boolean là một kiểu dữ liệu nguyên thủy dùng để lưu trữ giá trị true hoặc false Nó thường được sử dụng trong các câu lệnh điều kiện và vòng lặp

để kiểm tra một điều kiện nào đó có đúng hay không

- Từ khóa public được sử dụng để chỉ định mức độ truy cập của một thành phần (biến, phương thức hoặc lớp con) trong một lớp Khi một thành phần được khai báo là public, nó có thể được truy cập từ bất kỳ đâu, bao gồm cả các lớp và các gói khác nhau

- Dòng code trên sử dụng để Khởi tạo các toạ độ của làn đường

- Các dòng code trên được sử dụng để tạo các sự kiện cho BTL

 Với Code keyReleased/thả phím thì nhân vật sẽ dừng lại

 Với code keyPressed/ấn phím nhân vật sẽ di chuyển

Trang 6

- Các code trên đc sử dụng để đặt các giá trị cho thuộc tính:

 Toạ độ xe là x:45 và y:225

 Set mặc định của các nút là chưa bấm -> Giá trị di chuyển =0

 Tạo một mảng mới cho giá trị x của xe chướng ngại có 20 phần tử

 Tạo một mảng mới cho giá trị y của xe chướng ngại là 20 phần tử

 Tạo một mảng mới cho ảnh của xe chướng ngại vật là 20 phần tử

 Tạo một mảng mới cho tốc độ của xe chướng ngại là 20 phần tử

Trang 7

- Graphics2D obj = (Graphics2D) ở đay thực hiện một thao tác ép kiểu (type casting) từ một đối tượng thuộc lớp Graphics sang một đối tượng thuộc lớp Graphics2D Điều này cho phép bạn sử dụng các phương thức

và thuộc tính của lớp Graphics2D để vẽ đồ họa nâng cao

Trong code trên

- Code obj setRenderingHint dùng để khử răng cưa giúp cho ảnh chèn vào nét hơn và không bị vỡ hình

- Có 3 Obj.drawImage một cái “image/st_road.png” dùng để vẽ đường,

“image/car-self.png” dùng để vẽ xe và “image/boom.png” dùng để vẽ vụ

nổ trong phần xảy ra nếu va chạm (if(isFinished) )

- Nếu số lượng xe chướng ngại vật >0 thì sẽ tăng dần xe chướng ngại vật lên

- Và sử dụng try catch để bắt lỗi

Các code sau sẽ hiển thị điểm trên Frame của game với số điểm sẽ đặt ở

vị trí x:325;y:25 và Kỷ lục sẽ đặt ở vị trí x:400; y:25 – vị trí trên cùng been phải Frame

Trang 8

- Khai báo phương Thức Road

 Trong đó nếu xe chướng ngại chạy hết frame mà ko bị va chạm với nhân vật thì sẽ đặt lại xe chướng ngại

 Car_x+= speedX và car_y += speedY được dùng để cập nhật vị trí hiện tại của nhân vật

 Hai code trên được sử dụng để giữ xe ở trong phạm vi Frame ko cho

đi quá

Trang 9

 Hai code trên sẽ giữ xe để xe không đi vượt quá làn đường cho phép như dưới đây

 Code trên được sử dụng để khiến cho xe chướng ngại vật di chuyển từphải sang trái

Trang 10

- Code trên sẽ duyệt hết index trướng ngại vật và nếu index=1 thì có nghĩa

là chướng ngại vật đã rời khỏi vị chí

- Code trên là việc số điểm

 Với số lượng chướng ngại vật là c, số điểm sẽ tăng lên mỗi khi nhân vật vượt qua chướng ngại vật mà không va chạm

 Nếu số điểm cao hơn kỷ lục thì kỉ lục sẽ bằng số điểm và sẽ cập nhật

kỉ lục mới với

- Tiếp theo là kiểm tra va chạm

 Trong code trên chúng ta khai báo diff=0 để so sánh khoảng các xe và chướng ngại vật dưới dòng code diff=car_y – ly[i];

Trang 11

 Dưới dòng so sánh khoảng cách dòng if trên chỉ nếu va chạm thì in lên command là vị trí xa và vị trí xe va chạm

 Sau đó kết thúc game

Sau khi kết thúc game sẽ có hai trường hợp:

- Trường hợp thứ nhất sẽ là việc phá vỡ được kỷ lục khi đấy trên panel kết thúc game sẽ hiện dòng chữ sau

- Trường hợp thứ hai sẽ là việc thua nhưng không phá vỡ đc kỉ lục Khi đáy trên panel kết thúc game sẽ hiện dòng chữ sau

Trang 12

Tiếp theo trên Panel kết thúc game sẽ có 2 lựa trọn chơi lại và thoát như hai hình đạt kỉ lục trên.

- Với lựa chọn chơi lại, chúng ta sẽ đặt lại toàn bộ giá trị của thuộc tính

- Còn với lựa chọn thoát thì chúng ta sẽ tắt game luôn

Sau khi kết thúc game và chọn chơi lại, chúng ta sẽ đặt lại toàn bộ giá trị củathuộc tính về ban đầu như vị trí xe, chướng ngại vật, điểm, và giá trị di chuyển

Trang 13

Đây là các event/sự kiện để di chuyển nhân vật.

Với isRight = true là việc ấn nút mũi tên phải, nhân vật sẽ di chuyển về phía bên phải 1 đơn vị (speedY=1)

Còn với isLeft=true thì nhân vật sẽ di chuyển về phía bên trái 1 đơn vị

Còn với event/sự kiện khiến cho xe dừng lại như trên thì

isLeft = false đồng nghĩa với việc ta không ấn mũi tên bên trái thì xe sẽ không di chuyển về bên trái và bên phải cũng tương tự vậy

- Trong Class OpponentCar

Code trên vẽ lại vị chí mới của phương thức road với hiệu ứng chạy liên tục giúp game thêm mượt không bị cứng nhắc

Sử dụng try và catch để bắt lỗi

Trang 14

Nếu ít hơn 4 xe chướng ngại vật và quá 200mili trên giây

Đầu tiên ta sẽ tạo ảnh của xe chương ngại vật và toạ đọ của nó

Sau đó ta tạo ngẫu nhiên toạ độ của xe chướng ngại vật với các case sau

Nếu không có xe nào thì sẽ tạo chướng ngại vật ở toạ độ x=250 chạy từ phải sang trái

Nếu có 1 xe thì sẽ tạo chướng ngại vật ở toạ độ x=300 chạy từ trái sang phải

Nếu có 2 xe thì sẽ tạo chướng ngại vật ở toạ độ x=165 chạy từ trái sang phải

Và với các trường hợp còn lại thì sẽ tạo ỏ toạ độ x=130 chạy từ trái sang phải

Trang 15

Sau đó sẽ set vị trí của xe chướng ngại vật và tạo ngẫu nhiên tốc độ của chướng ngại vật rồi sau đó them xe chướng ngại vật vào frame.

- Tiếp theo đến với class MainGame

Trang 16

Trong Class này chúng em sẽ tạo Container để chứa class Gameplay và opponentCar để hiển thị game trên màn hình bằng các dùng thư viện javax.swing.Jframe.

- Cuối cùng là file StartGame

 Trong file StartGame, chúng em sẽ tạo 1 Jlabel để chứa ảnh nền trong code sau

 Sau đó chúng em sẽ khởi tại các button và gán các sự kiện để làm menu của game:

 Với 2 button là Chơi và Thoát và rồi đặt vị trí cho hai button đấy với

vị trí và kích thước như sau

 Cuối cùng là add hai button trên vào JLabel

- Sau khi hoàn thành việc add các button vào Label, chúng em sẽ add Label đấy vào Frame của game

Trang 17

- Sau đó add các thông só như:

 Title sẽ để tên là MENU

 Dài rộng 500px

 Tắt khi thoát

 Đặt ra giữa màn hình

 Không để thay đổi kích thước(phóng to, thu nhỏ)

- Cuối cùng chúng em sẽ tạo một thread mới để chạy phương thức startGame() và gọi repaint () trong phương thức run

- Khi ở bên giao diện, nếu chúng ta ấn vào startButton(nút “Chơi”) thì game sẽ bắt đầu chạy còn nếu ấn exitButton(nút “Thoát”) thì sẽ tắt chương trình

- Sau đó chúng ta sẽ sử dụng hàm Main để chạy chương trình

Trang 18

4 Các API được sử dụng trong BTL

1 Sử gói java.awt.*, chứa các lớp để tạo giao diện người dùng đồ hoạ (GUI) và sử lý sự kiện cho các ứng dụn Java

- Sự kiện của gói java.awt mà BTL có sử dụng đó là sử dụng

Trang 19

5 Demo Ứng dụng

Giao diện MENU khi mở game

Trang 20

Giao diện khi chơi

Trang 21

Ấn nút mũi tên trái để đi về bên trái và bên phải cũng như vậy

Trang 22

Sau khi vượt qua chướng ngại vật sẽ tăng thêm 1 điểm và nếu hơn điểm kỷ lục thì điểm kỷ lục lúc này cũng sẽ bằng số điểm đạt được hiện tại

Trang 23

Sau khi thua sẽ hiện Panel kết thúc lên màn hình kết thúc

6 Kết luận

Sau khi hoàn thành BTL, chúng em đã học được các sử dụng các thư viện đểtạo Container và cách sử lý các sử kiện sao cho phần mềm có thể hoạt động được và hoạt động chơn chu

Ngày đăng: 26/12/2024, 17:05