Skip to content

University Programming Course Practical Assignment 1: Console-based Snake Game

Notifications You must be signed in to change notification settings

007WS-cry/HDU-Homework-Snake

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Snake

项目结构

Snake/
│
├── main.c # 主程序入口
├── snake.h # 头文件,包含结构体定义和函数声明
└── snake.c # 游戏核心逻辑实现

设计思路

数据结构

  1. 蛇身采用单向链表实现:

    • SnakeNode: 存储蛇身每个节点的坐标
    • Snake: 包含蛇的整体信息(头节点、方向、状态等)
  2. 游戏状态:

    • 使用枚举类型表示蛇的移动方向和游戏状态
    • 使用二维数组 SnakeMap 记录地图信息

核心功能实现

  1. 初始化

    • 初始化控制台窗口和游戏参数
    • 随机生成墙壁
    • 初始化蛇的位置和长度
  2. 移动机制

    • 通过键盘方向键控制蛇的移动方向
    • 使用链表操作实现蛇的移动
    • 在头部添加新节点,尾部删除节点
  3. 食物系统

    • 随机生成食物位置
    • 不同食物具有不同分值
    • 吃到食物后增加蛇的长度
  4. 碰撞检测

    • 检测是否撞墙
    • 检测是否撞到自身
    • 根据碰撞结果更新游戏状态
  5. 分数系统

    • 记录当前得分
    • 保存历史最高分
    • 显示分数排行榜

操作说明

  • ↑↓←→ 方向键控制蛇的移动
  • 空格键暂停游戏
  • ESC键退出游戏

编译环境

  • Windows操作系统
  • C语言编译器(如GCC)
  • 支持Unicode字符显示

注意事项

  1. 游戏仅支持Windows平台
  2. 需要控制台支持Unicode字符显示
  3. 游戏界面使用了Windows API进行控制台操作

目前出现的bug

  • 吃到超过10分的食物后,蛇尾部增加的节点可能会与蛇身脱节
  • 结束游戏后可能会自动重新开始,自动重新开始前一局的积分会被自动放在积分榜的最后一个位置而不是参与排名
  • 结束游戏后出现的重新开始(y/n)的提示的后面,会有前几次游戏结束后出现的重新开始(y/n)的提示的字符残留

About

University Programming Course Practical Assignment 1: Console-based Snake Game

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages