Skip to content

NgTienHungg/SimpleMaze

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SimpleMaze

1. Tổng quan

  • Cuộc thi: PROGAPP - ProPTIT

  • Thể loại: Puzzle

  • Sử dụng: Java

  • Demo: Video

    • Menu:

    image

    • Play:

    image

2. Đánh giá

  • Hoàn thành:

    • Học được cách xây dựng game với java

    • Giới hạn được FPSDeltaTime, Performance ổn

    • Sử dụng cơ bản Graphics2D

    • Xử lý với MouseAdapter, KeyAdapter

    • Load và quản lý ảnh với BufferedImage

    • Xong thuật toán sinh mê cung, gameplay

    • Làm được hiệu ứng chuyển GameScreen

  • Hạn chế:

    • GamePlay đơn giản, không hấp dẫn

    • UI đơn giản, đồ họa game không đẹp

    • Thuật toán sinh ngẫu nhiên, chưa kiểm soát được độ dễ khó của các level

3. Source

  • game.manager

    • Game

      • Thiết kế: Singleton

      • extends Canvas

      • Gồm JFrame là java app chứa Game

      • ImgManager để load và quản lý ảnh

      • ScreenChange để tạo hiệu ứng chuyển GameScreen

      • add thêm vào nó InputKeyInputMouse để xử lý các sự kiện từ chuột và bàn phím

      • run() giúp kiểm soát game với FPS mong muốn

        public void run() {
            create();
            long lastTime = System.nanoTime();
            double ns = 1000000000 / FPS;
            double delta = 0;
            while (true) {
                long now = System.nanoTime();
                delta += (now - lastTime) / ns;
                lastTime = now;
                while (delta >= 1) {
                    update();
                    render();
                    delta--;
                }
            }
        }
    • Global

      • Gồm các hàm và các biến static, sử dụng cho toàn bộ game
    • InputKeyInputMouse

      • Xử lý sự kiện với chuột, bàn phím và cập nhật vào các biến trong Global
  • game.image

    • ImgLoader

      • Load ảnh bằng URL, khá tiện
    • ImgManager

      • Load toàn bộ ảnh khi mới tạo game, và sử dụng chúng như Global

      • Thao tác với ảnh: tạo pixel, đổi alpha, đổi color

  • game.screen

    • MyGScreen

      • abstract class
    • GSManager

      • Quản lý các screengame
  • game.entity

    • GameObject

      • abstract class

      • Gồm những thuộc tính cơ bản của 1 game object: x, y, w, h, r, c

    • Animation

  • game.effect

    • ScreenEffect

      • Có 2 kiểu: Open hoặc Close

      • Gồm 2 tấm ảnh (xem trong resources) thay đổi x của nó tùy theo kiểu Open hay Close để tạo hiệu ứng tương ứng

  • game.enums