Fork Copy Tạo trò chơi con rắn bằng C++. Trò chơi được hiển thị trên terminal. Sân chơi là một ma trận vuông nxn được bao quanh bởi các cạnh bên được biểu thị là '|' và cạnh dưới được biểu thị là '-'. Con rắn sẽ di chuyển trên dưới trái phải để ăn mục tiêu. Con rắn có đầu là 'o' thân là '#' và đuôi là '#', mỗi khi ăn được 1 mục tiêu thân '#' sẽ dài lên 1, ngoài ra nếu đầu 'o' bị đâm vào 4 cạnh của sân chơi hoặc đâm vào chính thân '#' của nó trò chơi sẽ kết thúc. Flow của code while(true) { WaitKey(); Update(); Draw(); } Objects(các đối tượng) Apple(mục tiêu) Snake(con rắn) Map(sân chơi) Wall(các cạnh của sân hay gọi là tường của sân) Direction(4 hướng di chuyển của con rắn gồm trên dưới trái phải) Point(điểm của người chơi được ghi nhận mỗi khi con rắn(Snake) ăn Apple(mục )) Sample Objects(Ví dụ về các đối tượng để tham khảo) Apple(){ - point: Point - display: char + Apple() + snake: friend class + checkEat(Point point): bool + setPoint(Point p): void + getPoint(): Point + setDisplay(char display): void + getDisplay(): char } Snake() { - location: Point[] - display: char - length: int - direction: int - speed: int + Snake() + setDirection(int direction): void + go(Point p): void + checkDie(Point p): bool + upgrade(Point p): void + eatApple(Apple apple): int + getLocation(): Point* + getLength(): int + getSpeed(): int + setDisplay(char display): void + getDisplay(): char } Sample functions(Một số hàm mẫu để tham khảo) #include Clear screen console: if (system("CLS")) system("clear"); #include Check key press: _kbhit() return true if have key press Get key press: _getch() return character of key press A: LEFT W: UP D: RIGHT S: DOWN #include //Put the cursor to the coordinates x y void gotoxy(int x, int y) { static HANDLE h = NULL; if(!h) h = GetStdHandle(STD_OUTPUT_HANDLE); COORD c = {x, y}; SetConsoleCursorPosition(h,c); } Wait time: Sleep(int time) #include //Play sound sf::SoundBuffer buffer; buffer.loadFromFile("sound.wav"); sf::Sound sound; sound.setBuffer(buffer); sound.play();