Skip to content

About

cpp大作业

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SnakeGame

一个基于 C++17 的 Windows 控制台贪吃蛇小游戏。项目用于 C++ 课程大作业,重点展示面向对象设计、继承与多态,以及常用现代 C++ 写法。

功能

  • W/A/S/D 控制蛇移动
  • P 暂停或继续
  • Q 退出游戏
  • 吃到食物后加分并增长蛇身
  • 撞墙、撞障碍物或撞到自身时失败
  • 达到目标分数后胜利
  • 游戏结束后可按 R 重新开始

运行截图

运行中 暂停
running paused
失败 胜利
lost win

项目结构

.
├── CMakeLists.txt
├── readme.md
├── docs/
│   └── screenshots/      # 运行截图
├── include/              # 头文件
│   ├── Game.h
│   ├── Gameobjects.h
│   ├── Input.h
│   ├── Renderer.h
│   ├── Snake.h
│   └── Types.h
└── src/                  # 源文件
    ├── Game.cpp
    ├── Gameobjects.cpp
    ├── Input.cpp
    ├── Renderer.cpp
    ├── Snake.cpp
    └── main.cpp

环境要求

  • Windows 10/11
  • CMake 3.16 或更高版本
  • 支持 C++17 的 MinGW g++
  • MinGW 构建工具 mingw32-make

编译运行

推荐使用 CMake:

cmake -S . -B build -G "MinGW Makefiles" -DCMAKE_CXX_COMPILER=g++
cmake --build build
.\build\SnakeGame.exe
g++ -std=c++17 -Wall -Wextra -Wpedantic -Iinclude src\main.cpp src\Game.cpp src\Gameobjects.cpp src\Input.cpp src\Renderer.cpp src\Snake.cpp -o SnakeGame.exe
.\SnakeGame.exe

设计说明

  • Game 负责游戏主循环、状态切换、碰撞判断和胜负判断。
  • Snake 保存蛇身位置,并处理移动、转向、自身碰撞。
  • Gameobjects 是游戏对象基类,Food 和 Obstacle 继承它并重写 symbol(),体现继承与多态。
  • Input 封装键盘读取,避免游戏主流程直接调用底层输入函数。
  • Renderer 负责控制台绘制,使用字符串后备缓冲区先生成完整画面,再一次性输出,减少闪烁。

使用到的现代 C++

  • std::vector 管理蛇身和障碍物集合
  • std::unique_ptr 管理多态游戏对象
  • std::optional 表示当前是否有键盘输入
  • enum class 表示方向和游戏状态
  • 范围 for、初始化列表、auto 等写法提升代码简洁性

About

cpp大作业

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages