Bài giảng Lập trình nâng cao - Chương 10: Snake game

pdf
Số trang Bài giảng Lập trình nâng cao - Chương 10: Snake game 56 Cỡ tệp Bài giảng Lập trình nâng cao - Chương 10: Snake game 346 KB Lượt tải Bài giảng Lập trình nâng cao - Chương 10: Snake game 13 Lượt đọc Bài giảng Lập trình nâng cao - Chương 10: Snake game 21
Đánh giá Bài giảng Lập trình nâng cao - Chương 10: Snake game
4.8 ( 20 lượt)
Nhấn vào bên dưới để tải tài liệu
Đang xem trước 10 trên tổng 56 trang, để tải xuống xem đầy đủ hãy nhấn vào bên trên
Chủ đề liên quan

Nội dung

Snake Game 9&10 - Danh sách liên kết https://github.com/tqlong/advprogram Nội dung ● Trò chơi: Snake ● Sân chơi ○ Mảng 2 chiều ● Con rắn ○ Danh sách liên kết có đuôi ● Bắt phím di chuyển rắn ○ SDL_PollEvent() ● Xử lý va chạm Trò chơi Snake ● Sân chơi hình chữ nhật ○ Trên sân chơi xuất hiện các quả cherry ngẫu nhiên ● Rắn lúc đầu ○ dài 01 ô (tính cả đầu), ở giữa màn hình, đi xuống ● Người chơi điều khiển rắn di chuyển bằng các phím mũi tên ● Mỗi lần rắn ăn 1 quả cherry thì dài thêm 1 ô ○ Thử sức: nhiều loại quả, mỗi loại một tác dụng ● Rắn va phải tường hoặc chính nó → thua ○ https://www.youtube.com/watch?v=kTIPpbIbkos Các tác vụ của trò chơi ● Khởi tạo: sân chơi, con rắn, vị trí quả ● Game loop, tại mỗi bước: ○ Xử lý sự kiện bàn phím để đổi hướng đi bước tiếp theo ○ Xử lý game logic: di chuyển rắn theo hướng đi hiện tại, va chạm tường, va chạm thân rắn, ăn quả dài thân và tăng điểm số ○ Hiển thị màn hình trò chơi Nội dung ● Trò chơi: Snake ● Sân chơi ○ Mảng 2 chiều ● Con rắn ○ Danh sách liên kết có đuôi ● Bắt phím di chuyển rắn ○ SDL_PollEvent() ● Xử lý va chạm Phân tích trạng thái trò chơi: Sân chơi ● Sân chơi là bảng hình chữ nhật, gồm các ô ○ Ô rỗng ○ Ô có rắn ○ Ô có quả ● Sân chơi còn có ○ Con rắn ■ và hướng đi ○ Quả cherry ■ vị trí cherry Phân tích trạng thái trò chơi: Sân chơi ● Sân chơi là bảng hình chữ nhật, gồm các ô ○ Ô rỗng ○ Ô có rắn ○ Ô có quả Mô tả các loại ô bằng enum enum CellType { CELL_EMPTY = 0, CELL_SNAKE, CELL_CHERRY }; các loại ô Phân tích trạng thái trò chơi: Sân chơi ● Sân chơi là bảng hình chữ nhật, gồm các ô ○ Ô rỗng ○ Ô có rắn ○ Ô có quả Một cách biểu diễn sân chơi j i std::vector< std::vector > squares; mỗi dòng là một vector squares[i][j] : trạng thái dòng i cột j một bảng gồm nhiều dòng (vector các vector) lấy phần tử thứ j của vector thứ i của bảng Phân tích trạng thái trò chơi: Sân chơi std::vector< std::vector > squares; int width; int height; // tạo bảng có height dòng, width c ột squares = vector< vector > ( đủ thông tin để vẽ sân chơi một cách đơn giản height, bằng cách đánh dấu ô chứa quả và các ô vector (width, CELL_EMPTY) chứa thân rắn ); Câu hỏi: để vẽ đầu rắn cần làm gì ? // quét bảng từ trên xuống, từ trái qua Đáp: Một phương án là thêm một loại ô, ví dụ for (int i = 0; i < height; i ++) { CELL_SNAKE_HEAD vào enum CellType, for (int j = 0; j < width; j++) { hoặc, // làm gì đó v ới squares[i][j] Hỏi sân chơi xem đầu rắn (hoặc toàn bộ thân rắn) ở đâu ? } } Bài tập: Khởi tạo sân chơi ● Bắt đầu tạo lớp sân chơi Game ● Làm hàm khởi tạo 2 tham số: chiều rộng, chiều cao class Game { public: const int width; const int height; private: std::vector< std::vector > squares; public: Game(int _width, int _height); };
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.