GithubHelp home page GithubHelp logo

sdl_2048's Introduction

2048

  • Họ và tên: Ngô Thảo Hương
  • MSV: 21020338

Mục lục

  1. Hướng dẫn cài đặt
  2. Mô tả chung về trò chơi, các ý tưởng chính
  3. Mô tả các chức năng đã cài đặt
  4. Các kỹ thuật lập trình được sử dụng trong chương trình
  5. Kết luận, hướng phát triển và các điều tâm đắc rút ra được sau khi hoàn thiện chương trình

Hướng dẫn cài đặt

Cài đặt MinGW-W64 (64bit)

  • Giải nén file x86_64-7.3.0-release-win32-seh-rt_v5-rev0.7z
  • Copy thư mục mingw64 vào (Ví dụ D:\software)
  • Cài đặt đường dẫn PATH đến \mingw64\bin
  • Kiểm tra bằng cách gọi g++ và mingw32-make trong terminal

Clone repository về máy

  • Mở một trình Terminal và nhập lần lượt các lệnh
    $ git clone https://github.com/nghinn1012/SDL_2048
    $ cd SDL_2048

Chạy chương trình

  • Chạy các lệnh sau
    $ mingw32-make
    $ ./sdl2048.exe

Mô tả chung về trò chơi, các ý tưởng chính

  • Game được lấy cảm hứng từ 2048 cổ điển, viết bằng ngôn ngữ C++ và sử dụng thư viện SDL2

Luật chơi của game

  • Người chơi sẽ được cấp cho một bảng kích cỡ 4x4 với 2 ô số mở đầu, những ô có cùng giá trị sẽ sát nhập vào nhau và tạo ra một ô có giá trị gấp đôi. Nhiệm vụ của người chơi là sát nhập các ô một cách khéo léo để tạo ra ô chiến thắng 2048. Bằng cách
  • Nhấn [UP] để dồn các ô lên phía trên

  • Nhấn [DOWN] để dồn các ô xuống phía dưới

  • Nhấn [LEFT] để dồn các ô sang bên trái

  • Nhấn [RIGHT] để dồn các ô sang bên phải

  • Nhấn [9] để tạm dừng nhạc

  • Nhấn [0] để tiếp tục nhạc

  • Mỗi khi 2 ô cùng giá trị và được sát nhập điểm của người chơi sẽ được công thêm bằng đúng giá trị của ô mới được tạo ra từ việc sát nhập

Mô tả các chức năng đã cài đặt

Màn hình chính của game với board 4x4

  • Cửa sổ chơi cùng tên game "2048"
  • Board game 4x4 giống với game 2048 cổ điển
  • Các ô điểm mang giá trị 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048 với các màu khác nhau

Âm thanh

  • Âm thanh sinh động, có thể dừng âm bằng nút 9 và resume bằng nút 0

Ghi lại điểm

  • Hiện điểm hiện tại, cập nhật sau mỗi lần thao tác
  • Lưu điểm cao nhất

Nút Newgame

  • Có thể chuyển qua New Game trong khi đang chơi hoặc tự động chuyển khi thua

Thông báo thắng/thua

  • Thắng sẽ in ra "You Win"
  • Thua sẽ in ra "You Lose" và tự động chuyển về NewGame sau đó

Video: https://www.youtube.com/watch?v=0KYItvqyT_s

Các kỹ thuật lập trình được sử dụng trong chương trình

  • Xử lí sự kiện chuột, bàn phím

  • Sử dụng các extension của thư viện để tạo màn hình game

  • Render chữ lên màn hình với SDL_ttf

  • Chèn âm thanh với SDL_mixer

  • Giải phóng bộ nhớ

  • Sinh số giả ngẫu nhiên

  • Các thư viện chuẩn của C++

  • Sử dụng mảng, con trỏ, string.

  • Sử dụng Class

  • Cách cấp phát động và quản lí bộ nhớ

  • Nhập xuất file

  • Tách file và quản lý file trong project

Kết luận, hướng phát triển và các điều tâm đắc rút ra được sau khi hoàn thiện chương trình

Kết luận

  • Làm game cần đầu tư nhiều thời gian, công sức để tạo ra một game hoàn chỉnh
  • Cần chú trọng phát triển những ý tưởng có khả năng, vì có nhiều ý tưởng hay nhưng khó thực thi
  • Ngôn ngữ lập trình và thư viện đồ hoạ cơ bản cũng có thể tạo ra game tốt nếu mình biết cách sử dụng

Hướng phát triển

  • Thêm các kích thước mới nxn cho game
  • Thêm cửa sổ lúc vào chơi, hình ảnh cho game
  • Lưu lại tên, điểm số của từng người chơi
  • Tạo thêm các nút pause, nút tắt âm thanh, nút next level mới
  • Cải thiện lại giao diện cho game
  • Tạo thêm nút undo lại 1 hoặc nhiều bước trước đó
  • Thử sức với các thư viện đồ hoạ khác, cũng như tối ưu lại code

Những điều tâm đắc rút ra

2048 là tựa game kinh điển đã xuất hiện cách đây khá lâu, và giờ em đã được thử sức làm lại nó với C++ và SDL_2. Mặc dù chưa được hoàn chỉnh các chức năng nhưng em nhận thấy được rằng ngôn ngữ trong lập trình không quá quan trọng, quan trọng là cần hiểu vấn đề cặn kẽ và sử dụng các công cụ một cách hợp lý. Quan trọng hơn trong quá trình làm game là ta cần biết cách tổ chức, xử lý thành những phần nhỏ để giúp quá trình kiểm tra lại trở nên dễ dàng hơn. Qua đó ta sẽ học được cách tư duy, hiểu được quá trình xây dựng, hoàn thiện game.

Nguồn tham khảo

sdl_2048's People

Contributors

nghinn1012 avatar

Stargazers

Trần Duy Khánh avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.