-
Thông tin
-
Hỏi đáp
Bài báo cáo java về lập trình game "Flappy bird"
Bài báo cáo java về lập trình game "Flappy bird" của Đại học Kiên Giang giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao. Mời bạn đọc đón xem!
Công nghệ thông tin (LTW) 1 tài liệu
Đại học Kiên Giang 38 tài liệu
Bài báo cáo java về lập trình game "Flappy bird"
Bài báo cáo java về lập trình game "Flappy bird" của Đại học Kiên Giang giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao. Mời bạn đọc đón xem!
Môn: Công nghệ thông tin (LTW) 1 tài liệu
Trường: Đại học Kiên Giang 38 tài liệu
Thông tin:
Tác giả:
Tài liệu khác của Đại học Kiên Giang
Preview text:
lOMoARcPSD| 10435767 MỤC LỤC
CHƯƠNG 1. GIỚI THIỆU VỀ ĐỀ TÀI ................................................................ 1
1. 1 Tóm tắt đề tài ................................................................................................ 1
1.2 Danh sách chức năng ..................................................................................... 1
CHƯƠNG 2. DEMO CHƯƠNG TRÌNH ............................................................... 2
2.1 Chức năng tạo giao diện ................................................................................ 2
2.2 Chức năng thêm chim .................................................................................... 6
2.3 Chức năng tạo chuyển động .......................................................................... 8
2.4 Chức năng thêm mặt đất .............................................................................. 11
2.5 Chức năng giao diện khi thua ...................................................................... 14
2.6 Chức năng quay lại ...................................................................................... 15
2.7 Chức năng thêm ống khói ............................................................................ 17
2.8 Chức năng tạo sự lặp lại cho ống khói ........................................................ 20
2.9 Chức năng thua khi chạm ống khói ............................................................. 23
2.10 Chức năng tính điểm .................................................................................. 26
2.11 Chức năng thêm màu nền .......................................................................... 28
2.12 Chức năng cho ống khói xuất hiện ngẫu nhiên ......................................... 29
KẾT LUẬN ........................................................................................................... 32
TÀI LIỆU THAM KHẢO .................................................................................... 33
CHƯƠNG 1. GIỚI THIỆU VỀ ĐỀ TÀI
1. 1 Tóm tắt đề tài
Trò chơi Flappy Bird là một trò chơi điện tử phổ biến với giao diện đơn giản
nhưng lại mang tính thách thức cao. Trong trò chơi này người chơi sẽ điều
khiển một con chim bay qua các cặp cột nước cao. Mỗi lần vượt qua thành
công một cặp cột, người chơi sẽ được cộng thêm điểm.
1.2 Danh sách chức năng
- Chức năng tạo giao diện - Chức năng thêm chim lOMoARcPSD| 10435767
- Chức năng tạo chuyển động
- Chức năng thêm mặt đất
- Chức năng giao diện khi thua - Chức năng quay lại
- Chức năng thêm ống khói
- Chức năng tại sự lặp lại cho ống khói
- Chức năng thua khi chạm ống khói - Chức năng tính điểm
- Chức năng thêm màu nền
- Chức năng cho ống khói xuất hiện ngẫu nhiên
CHƯƠNG 2. DEMO CHƯƠNG TRÌNH
2.1 Chức năng tạo giao diện
Chức năng tạo giao diện trong trò chơi Flappy Bird bằng ngôn ngữ Java đề
cập đến việc xây dựng các thành phần hình ảnh và tương tác của trò chơi. Đây là
một phần quan trọng trong quá trình phát triển game, bao gồm việc tạo ra các đối
tượng trong game (Như con chim trong Flappy Bird), và xử lý các sự kiện tương
tác của người chơi (như nhấp chuột để làm cho con chim bay lên).
Ví dụ minh họa code Java của chức năng tạo giao diện: lOMoARcPSD| 10435767 import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Graphics; lOMoARcPSD| 10435767 import java.awt.Color; // Lp B
ird đi din cho con chim trong trò chi class Bird { int x, y; public Bird(int x, int y) { this.x = x; this.y = y; }
// Veẽ con chim lên màn hình
public void draw(Graphics g) { g.setColor(Color.RED); g.fillOval(x, y, 20, 20); } } // Lp Game Panel là ni veẽ lên màn hình trò chi
class GamePanel extends JPanel { Bird bird; public GamePanel() { bird = new Bird(100, 300); } @Override
public void paintComponent(Graphics g) { super.paintComponent(g); // Veẽ nêền g.setColor(Color.CYAN);
g.fillRect(0, 0, getWidth(), getHeight()); lOMoARcPSD| 10435767 // Veẽ con chim bird.draw(g); } } // Lp Game cha ca s trò chi p ublic class Ga me {
public static void main(String[] args) {
JFrame window = new JFrame("Flappy Bird"); window.setSize(800, 600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.add(new GamePanel()); window.setVisible(true); } }
Ví dụ hình ảnh minh họa. lOMoARcPSD| 10435767
2.2 Chức năng thêm chim
Chức năng thêm chim trong trò chơi Flappy Bird bằng ngôn ngữ Java đề cập
tới việc tạo và quản lí đối tượng chim trong trò chơi. Đối tượng chim là nhân vật
chính mà người chơi điều khiển, và nó cần được thêm vào trò chơi để người chơi
có thể tương tác với nó.
Trong quá trình lập trình, chúng ta sẽ cần tạo 1 lớp (Class) cho đối tượng
chim, xác định các thuộc tính của nó (như vị trí, tốc độ, hình ảnh) và các phương
thức để xử lý các hành động của nó (như di chuyển lên, rơi xuống).
Ví dụ minh họa : Code Java của chức năng thêm chim import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Graphics; import java.awt.Color;
// Lớp Bird đại diện cho con chim trong trò chơi class Bird { int x, y; public Bird(int x, int y) { this.x = x; this.y = y; }
// Vẽ con chim lên màn hình
public void draw(Graphics g) { g.setColor(Color.RED); g.fillOval(x, y, 20, 20); } }
// Lớp GamePanel là nơi vẽ lên màn hình trò chơi
class GamePanel extends JPanel { lOMoARcPSD| 10435767 Bird bird; public GamePanel() {
bird = new Bird(100, 300); // Thêm con chim vào trò chơi } @Override
public void paintComponent(Graphics g) { super.paintComponent(g); // Vẽ nền g.setColor(Color.CYAN);
g.fillRect(0, 0, getWidth(), getHeight()); // Vẽ con chim bird.draw(g); } }
// Lớp Game chứa cửa sổ trò chơi public class Game {
public static void main(String[] args) {
JFrame window = new JFrame("Flappy Bird"); window.setSize(800, 600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.add(new GamePanel()); window.setVisible(true); } }
Ví dụ hình ảnh minh họa: lOMoARcPSD| 10435767
2.3 Chức năng tạo chuyển động
Chức năng tạo chuyển động trong trò chơi Flappy Bird bằng ngôn ngữ Java
liên quan đến việc làm cho các đối tượng trong trò chơi di chuyển. Trong trường
hợp của Flappy Bird, đối tượng chính cần di chuyển là con chim.
Để tạo chuyển động cho con chim, chúng ta cần thay đổi giá trị y (chiều cao)
của con chim theo thời gian. Khi người chơi nhấn phím (thường là phím space),
con chim sẽ bay lên (giá trị y sẽ giảm). Khi không có sự tương tác nào từ người
chơi, do ảnh hưởng của trọng lực, con chim sẽ rơi xuống (giá trị y sẽ tăng).
Ví dụ minh họa: Code Java của chức năng tạo chuyển động import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Graphics; import java.awt.Color;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener; // Lp B
ird đi din cho con chim trong trò chi lOMoARcPSD| 10435767 class Bird { int x, y;
int vy; // vn t ốốc theo ph n g y public Bird(int x, int y) { this.x = x; this.y = y; this.vy = 0; } // Cp n ht v t rí ca con ch im public void update() {
vy += 1; // tăng vn t ốốc do trng lc y += vy; // cp n ht v t rí mi ca ch im } // X lý s kin khi ng i chi n hấốn phím
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SPACE) { vy = -10; // gim vn tốố c khi chim bay lên } }
// Veẽ con chim lên màn hình
public void draw(Graphics g) { g.setColor(Color.RED); g.fillOval(x, y, 20, 20); } } // Lp Game Panel là ni veẽ
lên màn hình trò chi và x lý s kin t bàn p hím
class GamePanel extends JPanel implements KeyListener { Bird bird; lOMoARcPSD| 10435767 public GamePanel() {
bird = new Bird(100, 300); // Thêm con chim vào trò chi
addKeyListener(this); // Đăng ký x lý s kin t bà n ph ím setFocusable(true); } @Override
public void paintComponent(Graphics g) { super.paintComponent(g); // Veẽ nêền g.setColor(Color.CYAN);
g.fillRect(0, 0, getWidth(), getHeight()); // Cp n ht và veẽ con chim bird.update(); bird.draw(g); } @Override
public void keyPressed(KeyEvent e) {
bird.keyPressed(e); // Chuyn s kin nhấố n phím cho con chim x lý } @Override
public void keyReleased(KeyEvent e) {} @Override
public void keyTyped(KeyEvent e) {} } // Lp Game cha ca s trò chi lOMoARcPSD| 10435767 public class Game {
public static void main(String[] args) {
JFrame window = new JFrame("Flappy Bird"); window.setSize(800, 600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.add(new GamePanel()); window.setVisible(true); } }
Ví dụ hình ảnh minh họa:
2.4 Chức năng thêm mặt đất
Chức năng thêm mặt đất trong trò chơi Flappy Bird bằng ngôn ngữ Java liên
quan đến việc tạo và hiển thị mặt đất trong trò chơi. Mặt đất thường được sử dụng
như một ranh giới dưới cùng của màn hình chơi, nếu con chim chạm vào mặt đất
thì trò chơi sẽ kết thúc. lOMoARcPSD| 10435767
Để thực hiện chức năng này, chúng ta cần tạo một đối tượng (hoặc một loạt
các đối tượng) để biểu diễn mặt đất. Đối tượng này có thể là một hình ảnh hoặc
một hình học cụ thể (như một hình chữ nhật) được vẽ lên màn hình. Chúng ta
cũng cần xác định cách xử lý va chạm giữa con chim và mặt đất.
Ví dụ minh họa: Code Java của chức năng thêm mặt đất. import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Graphics; import java.awt.Color; // Lp Gro und đi din cho mt đấốt t rong trò chi class Ground { int y; // v trí y ca m t đấố t public Ground(int y) { this.y = y; } // Veẽ mt đấốt lên màn hình
public void draw(Graphics g) { g.setColor(Color.GREEN); g.fillRect(0, y, 800, 100); } } // Lp Game Panel là ni veẽ lên màn hình trò chi
class GamePanel extends JPanel { Ground ground; public GamePanel() {
ground = new Ground(500); // Thêm mt đ ấốt vào trò chi lOMoARcPSD| 10435767 } @Override
public void paintComponent(Graphics g) { super.paintComponent(g); // Veẽ nêền g.setColor(Color.CYAN);
g.fillRect(0, 0, getWidth(), getHeight()); // Veẽ mt đấốt ground.draw(g); } } // Lp Game cha ca s trò chi public class Game {
public static void main(String[] args) {
JFrame window = new JFrame("Flappy Bird"); window.setSize(800, 600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.add(new GamePanel()); window.setVisible(true); } }
Ví dụ hình ảnh minh họa: lOMoARcPSD| 10435767
2.5 Chức năng giao diện khi thua
Chức năng giao diện khi thua trong trò chơi Flappy Bird bằng ngôn ngữ Java
liên quan đến việc hiển thị một màn hình hoặc thông báo cho người chơi biết họ
đã thua cuộc. Điều này thường xảy ra khi con chim va chạm vào ống cống hoặc mặt đất.
Giao diện khi thua có thể bao gồm một thông báo về việc người chơi đã thua,
số điểm mà họ đã đạt được, và tùy chọn để chơi lại trò chơi hoặc thoát ra.
Ví dụ minh họa: Code Java của chức năng giao diện khi thua. import javax.swing.JFrame;
import javax.swing.JOptionPane; // Lp Game cha ca s trò chi và x lý s kin gam e ove r public class Game { JFrame window; public Game() {
window = new JFrame("Flappy Bird"); window.setSize(800, 600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setVisible(true); lOMoARcPSD| 10435767 } // Ph n g thc h in th thốn g báo khi ng i chi th ua public void gameOver() {
JOptionPane.showMessageDialog(window, "Game Over", "Game Over", JOptionPane.YES_NO_OPTION); }
public static void main(String[] args) { Game game = new Game(); // Gi s ng i chi đã thua đấy game.gameOver(); } }
Ví dụ hình ảnh minh họa:
2.6 Chức năng quay lại
Chức năng quay lại trong trò chơi Flappy Bird bằng ngôn ngữ Java có thể đề
cập đến việc cho phép người chơi quay lại một trạng thái trước đó của trò chơi, lOMoARcPSD| 10435767
hoặc quay lại một màn hình menu hoặc tùy chọn khác. Điều này thường được
thực hiện thông qua việc tạo một nút hoặc tùy chọn trong giao diện người dùng
cho phép người chơi quay lại.
Ví dụ minh họa: Code Java chức năng quay lại. import javax.swing.*; import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; public class Game { JFrame window; JPanel gameOverPanel; JButton backButton; public Game() {
window = new JFrame("Flappy Bird"); window.setSize(800, 600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // To p anel game over
gameOverPanel = new JPanel();
gameOverPanel.setLayout(new BorderLayout()); // To n út quay li
backButton = new JButton("Quay li") ;
backButton.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) { // X lý s kin nhấố p vào nút quay li // đ
ấy, chúng ta ch đn gin là n pane l game over
gameOverPanel.setVisible(false); lOMoARcPSD| 10435767 } }); // Thêm nút quay li vào panel game over
gameOverPanel.add(backButton, BorderLayout.SOUTH); window.add(gameOverPanel); window.setVisible(true); }
public static void main(String[] args) { new Game(); } }
Ví dụ hình ảnh minh họa:
2.7 Chức năng thêm ống khói
Chức năng “Thêm ống khói” trong trò chơi Flappy Bird bằng ngôn ngữ lOMoARcPSD| 10435767
Java liên quan đến việc tạo và quản lý các ống khói mà con chim cần phải bay
qua. Các ống khói này thường được tạo ra một cách động và liên tục trong quá
trình chơi game, tạo ra một thách thức cho người chơi.
Để thực hiện chức năng này, chúng ta cần tạo một lớp (class) cho đối tượng
ống khói, xác định các thuộc tính của nó (như vị trí, kích thước, hình ảnh), và các
phương thức để xử lý các hành động của nó (như di chuyển sang trái, tạo mới).
Ví dụ minh họa: Code Jave của chức năng thêm ống khói import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Graphics; import java.awt.Color; import java.util.ArrayList;
// Lớp Pipe đại diện cho ống khói trong trò chơi class Pipe { int x, y, width, height;
public Pipe(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; }
// Cập nhật vị trí của ống khói public void update() {
x -= 2; // di chuyển ống khói sang trái }
// Vẽ ống khói lên màn hình
public void draw(Graphics g) { g.setColor(Color.GREEN);
g.fillRect(x, y, width, height); } lOMoARcPSD| 10435767 }
// Lớp GamePanel là nơi vẽ lên màn hình trò chơi
class GamePanel extends JPanel { ArrayList pipes; public GamePanel() { pipes = new ArrayList();
pipes.add(new Pipe(600, 300, 50, 200)); // Thêm ống khói vào trò chơi } @Override
public void paintComponent(Graphics g) { super.paintComponent(g); // Vẽ nền g.setColor(Color.CYAN);
g.fillRect(0, 0, getWidth(), getHeight());
// Cập nhật và vẽ các ống khói for (Pipe pipe : pipes) { pipe.update(); pipe.draw(g); } } }
// Lớp Game chứa cửa sổ trò chơi public class Game {
public static void main(String[] args) {
JFrame window = new JFrame("Flappy Bird"); window.setSize(800, 600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.add(new GamePanel()); window.setVisible(true); lOMoARcPSD| 10435767 } }
Ví dụ hình ảnh minh họa:
2.8 Chức năng tạo sự lặp lại cho ống khói
Chức năng “Tạo sự lặp lại ống khói” trong trò chơi Flappy Bird bằng ngôn
ngữ Java liên quan đến việc tạo ra một chuỗi liên tục của các ống khói mà con
chim cần phải bay qua. Điều này thường được thực hiện bằng cách tạo ra một ống
khói mới ở phía bên phải của màn hình mỗi khi một ống khói di chuyển ra khỏi
phía bên trái của màn hình.
Ví dụ minh họa: Code Jave của chức năng tạo sự lặp lại cho ống khói lOMoARcPSD| 10435767 import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Graphics; import java.awt.Color; import java.util.ArrayList; // Lp Pi
pe đi din cho ốống khói trong trò chi class Pipe { int x, y, width, height;
public Pipe(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; } // Cp n ht v t rí ca ốống khói public void update() { x -= 2; // di chuyn ốố ng khói sang trái }
// Veẽ ốống khói lên màn hình
public void draw(Graphics g) { g.setColor(Color.GREEN);
g.fillRect(x, y, width, height); } } // Lp Game Panel là ni veẽ lên màn hình trò chi
class GamePanel extends JPanel { ArrayList pipes; lOMoARcPSD| 10435767 public GamePanel() { pipes = new ArrayList();
pipes.add(new Pipe(600, 300, 50, 200)); // Thêm ốống khói đấều tiên vào trò ch i } @Override
public void paintComponent(Graphics g) { super.paintComponent(g); // Veẽ nêền g.setColor(Color.CYAN);
g.fillRect(0, 0, getWidth(), getHeight()); // Cp n
ht và veẽ các ốống khói for (Pipe pipe : pipes) { pipe.update(); pipe.draw(g);
// Nêốu ốống khói đã di chuyn ra khi màn hình
if (pipe.x + pipe.width < 0) {
pipe.x = getWidth(); // Di chuyn ốố
ng khói vêề phía bên phi c a m àn hình
pipe.y = (int)(Math.random() * getHeight()); // Đt v t rí y ca ốốn g khói mt v trí ngấẽu nhiên } } } } // Lp Game cha ca s trò chi public class Game {
public static void main(String[] args) {
JFrame window = new JFrame("Flappy Bird"); window.setSize(800, 600); lOMoARcPSD| 10435767
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.add(new GamePanel()); window.setVisible(true); } }
Ví dụ hình ảnh minh họa:
2.9 Chức năng thua khi chạm ống khói
Chức năng “Thua khi chạm ống khói” trong trò chơi Flappy Bird bằng ngôn
ngữ Java liên quan đến việc xử lý va chạm giữa con chim và các ống khói. Khi
con chim va chạm vào một ống khói, trò chơi sẽ kết thúc và người chơi sẽ thua.
Để thực hiện chức năng này, chúng ta cần kiểm tra va chạm giữa con chim
và các ống khói sau mỗi khung hình. Nếu một va chạm được phát hiện, bạn sẽ kết thúc trò chơi. lOMoARcPSD| 10435767
Ví dụ minh họa: Code Java của chức năng thua khi chạm ống khói import javax.swing.*; import java.awt.*; import java.util.ArrayList; // Lp B
ird đi din cho con chim trong trò chi class Bird { int x, y, width, height;
public Bird(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; } // Kim tra va chm gia
con chim và mt ốống khói
public boolean collidesWith(Pipe pipe) {
Rectangle birdRect = new Rectangle(x, y, width, height);
Rectangle pipeRect = new Rectangle(pipe.x, pipe.y, pipe.width, pipe.height);
return birdRect.intersects(pipeRect); } } // Lp Pi
pe đi din cho ốống khói trong trò chi class Pipe { int x, y, width, height;
public Pipe(int x, int y, int width, int height) { lOMoARcPSD| 10435767 this.x = x; this.y = y; this.width = width; this.height = height; } } // Lp Game Panel là ni veẽ lên màn hình trò chi
class GamePanel extends JPanel { Bird bird; ArrayList pipes; public GamePanel() {
bird = new Bird(100, 300, 20, 20); pipes = new ArrayList();
pipes.add(new Pipe(600, 300, 50, 200)); } // Kim tra va chm gia
con chim và các ốống khói
public void checkCollisions() { for (Pipe pipe : pipes) {
if (bird.collidesWith(pipe)) { gameOver(); } } }
// Kêốt thúc trò chi khi ng i chi th ua public void gameOver() {
JOptionPane.showMessageDialog(this, "Game Over", "Game Over", JOptionPane.YES_NO_OPTION); System.exit(0); } lOMoARcPSD| 10435767 } // Lp Game cha ca s trò chi public class Game {
public static void main(String[] args) {
JFrame window = new JFrame("Flappy Bird"); window.setSize(800, 600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.add(new GamePanel()); window.setVisible(true); } }
Ví dụ hình ảnh minh họa:
2.10 Chức năng tính điểm
Chức năng điểm số giúp theo dõi và hiển thị điểm số của người chơi trong quá trình chơi game. lOMoARcPSD| 10435767
Khi người chơi điều khiển con chim bay qua 1 cặp cột nước mà không va
chạm, họ sẽ được cộng thêm 1 điểm. Điểm số sẽ được cập nhật tức thì trên màn hình.
Ví dụ minh họa: Code Java của chức năng tính điểm. public class FlappyBird { private int score; public FlappyBird() { this.score = 0; }
public void incrementScore() { this.score += 1; } public int getScore() { return this.score; }
public static void main(String[] args) {
FlappyBird game = new FlappyBird();
game.incrementScore(); // Con chim bay qua mt c t
game.incrementScore(); // Con chim bay qua mt c t kh ác
System.out.println("Đim hin ti: " + game
.getScore()); // In ra đim hin t i } } Ví dụ hình ảnh minh họa: lOMoARcPSD| 10435767
2.11 Chức năng thêm màu nền
Chức năng “Thêm màu nền” trong trò chơi Flappy Bird bằng ngôn ngữ Java
liên quan đến việc thiết lập màu sắc cho nền của trò chơi. Màu nền có thể tạo ra
một không gian chơi phù hợp và tăng tính thẩm mỹ cho trò chơi.
Trong Java, chúng ta có thể sử dụng lớp java.awt.Color để tạo và quản lý các
màu sắc. Để thiết lập màu nền cho cửa sổ trò chơi, chúng ta có thể sử dụng phương
thức setBackground(Color c) của lớp java.awt.Component, mà cửa sổ trò chơi
(thường là một đối tượng của lớp javax.swing.JFrame hoặc java.awt.Frame) kế thừa.
Ví dụ minh họa: Code Java của chức năng thêm màu nền import javax.swing.JFrame; public class Game {
public static void main(String[] args) {
JFrame window = new JFrame("Flappy Bird"); window.setSize(800, 600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.getContentPane().setBackground(Color.CYAN); // thiết lập màu nền window.setVisible(true); } import java.awt.Color; }
Ví dụ hình ảnh minh họa: lOMoARcPSD| 10435767
2.12 Chức năng cho ống khói xuất hiện ngẫu nhiên
Chức năng “cho ống khói xuất hiện ngẫu nhiên” trong trò chơi Flappy Bird
bằng ngôn ngữ Java liên quan đến việc tạo ra các ống khói ở các vị trí ngẫu nhiên
trên màn hình. Điều này tạo ra sự không lường trước được và thách thức cho người
chơi, khiến trò chơi trở nên hấp dẫn hơn.
Để thực hiện chức năng này, chúng ta cần tạo ra các ống khói mới ở các vị
trí ngẫu nhiên sau mỗi khoảng thời gian nhất định hoặc sau khi một ống khói cụ
thể đã di chuyển qua màn hình. Chúng ta có thể sử dụng lớp java.util.Random
trong Java để tạo ra các số ngẫu nhiên, và sử dụng chúng để xác định vị trí của các ống khói mới.
Ví dụ minh họa: Code Java của chức năng cho ống khói xuất hiện ngẫu nhiên lOMoARcPSD| 10435767 import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Graphics; import java.awt.Color; import java.util.ArrayList; import java.util.Random; // Lp Pi
pe đi din cho ốống khói trong trò chi class Pipe { int x, y, width, height;
public Pipe(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; } // Cp n ht v t rí ca ốống khói public void update() { x -= 2; // di chuyn ốố ng khói sang trái }
// Veẽ ốống khói lên màn hình
public void draw(Graphics g) { g.setColor(Color.GREEN);
g.fillRect(x, y, width, height); } } lOMoARcPSD| 10435767 // Lp Game Panel là ni veẽ lên màn hình trò chi
class GamePanel extends JPanel { ArrayList pipes; Random random; public GamePanel() { pipes = new ArrayList(); random = new Random();
pipes.add(new Pipe(600, random.nextInt(400), 50, 200)); // Thêm ốống khói vi v trí y
ngấẽu nhiên vào trò chi } @Override
public void paintComponent(Graphics g) { super.paintComponent(g); // Veẽ nêền g.setColor(Color.CYAN);
g.fillRect(0, 0, getWidth(), getHeight()); // Cp n
ht và veẽ các ốống khói for (Pipe pipe : pipes) { pipe.update(); pipe.draw(g);
// Nêốu ốống khói đã di chuyn ra khi màn hình
if (pipe.x + pipe.width < 0) {
pipe.x = getWidth(); // Di chuyn ốố
ng khói vêề phía bên phi c a m àn hình
pipe.y = random.nextInt(400); // Đt v
trí y ca ốố ng khói mt v trí n gấẽ u nhiên } } } } lOMoARcPSD| 10435767 // Lp Game cha ca s trò chi public class Game {
public static void main(String[] args) {
JFrame window = new JFrame("Flappy Bird"); window.setSize(800, 600);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.add(new GamePanel()); window.setVisible(true); } }
Ví dụ hình ảnh minh họa: KẾT LUẬN Ưu điểm:
- Đơn giản và dễ chơi: Trò chơi Flappy Bird được lập trình bằng Java cógiao
diện đơn giản, dễ nhìn và cách chơi dễ hiểu. Người chơi chỉ cần điều khiển con
chim bay qua các cặp cột nước mà không va chạm.
- Tính thách thức cao: Mặc dù cách chơi đơn giản nhưng trò chơi lại
mangtính thách thức cao, tạo sự hấp dẫn cho người chơi. lOMoARcPSD| 10435767
- Tùy chỉnh linh hoạt: Trò chơi cho phép người chơi tùy chỉnh các thiết
lậpnhư âm thanh, độ khó,..... Giúp người chơi có thể tận hưởng trò chơi theo cách của mình.
- Bảng xếp hạng: Người chơi có thể so sánh điểm số của mình với ngườichơi
khác thông qua bảng xếp hạng, tạo thêm động lực để người chơi cố gắng đạt điểm số cao hơn. Hạn chế:
- Đồ họa đơn giản: Trò chơi có đồ họa 2D đơn giản, không phong phú vàchi
tiết như các trò chơi hiện đại khác.
- Chức năng giới hạn: Số lượng và độ phức tạp giữ các chức năng trong
tròchơi khá giới hạn. Trò chơi chỉ tập trung vào việc điều khiển con chim bay qua các cặp cột nước.
- Không có nhiều màn chơi: Trò chơi không có nhiều màn chơi khác nhauđể
người chơi khám phá. Mỗi lần chơi, người chơi sẽ lặp đi lặp lại cùng 1 màn chơi.
TÀI LIỆU THAM KHẢO 1.
Cuốn sách Java: A Beginner’s Guide, Eighth Edition bởi Herbert Schildt. 2.
Cuốn sách Beginning Java Game Development with LibGDX bởi LeeStemkoski. 3.
Cuốn sách Code Complete: A Practical Handbook of
SoftwareConstruction, Second Edition bởi Steve McConnell. 4.
Các diễn đàn và cộng đồng trực tuyến như Stack Overflow, GitHub, hoặcReddit.