很好,下面是增加开始菜单界面的代码:

#include <stdio.h> #include <stdlib.h> #include <Windows.h>//windows编程头文件 #include <time.h> #include <conio.h>//控制台输入输出头文件

#ifndef __cplusplus

typedef char bool; #define false 0 #define true 1

#endif

//将光标移动到控制台的(x,y)坐标点处 void gotoxy(int x, int y) { COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); }

#define SNAKESIZE 100//蛇的身体最大节数 #define MAPWIDTH 78//宽度 #define MAPHEIGHT 24//高度

//食物的坐标 struct { int x; int y; }food;

//蛇的相关属性 struct { int speed;//蛇移动的速度 int len;//蛇的长度 int x[SNAKESIZE];//组成蛇身的每一个小方块中x的坐标 int y[SNAKESIZE];//组成蛇身的每一个小方块中y的坐标

}snake;

//绘制游戏边框 void drawMap(); //随机生成食物 void createFood(); //按键操作 void keyDown(); //蛇的状态 bool snakeStatus(); //从控制台移动光标 void gotoxy(int x, int y); //开始菜单 void startMenu(); //游戏帮助 void gameHelp(); //关于游戏 void aboutGame();

int key = 72;//表示蛇移动的方向,72为按下“↑”所代表的数字

//用来判断蛇是否吃掉了食物,这一步很重要,涉及到是否会有蛇身移动的效果以及蛇身增长的效果 int changeFlag = 0;

int score = 0;//记录玩家的得分

int i;

void startMenu() { int choice = 1;//当前选中的菜单项 while (1) { system("cls");//清屏 printf("\n\n\n\n"); printf("\t\t\t\t贪吃蛇小游戏\n\n"); printf("\t\t\t\t1. 开始游戏\n"); printf("\t\t\t\t2. 游戏帮助\n"); printf("\t\t\t\t3. 关于游戏\n"); printf("\t\t\t\t4. 退出游戏\n\n");

    switch (choice)
    {
    case 1:
        printf("\t\t\t\t>>>开始游戏<<<\n");
        break;
    case 2:
        printf("\t\t\t\t>>>游戏帮助<<<\n");
        break;
    case 3:
        printf("\t\t\t\t>>>关于游戏<<<\n");
        break;
    case 4:
        printf("\t\t\t\t>>>退出游戏<<<\n");
        break;
    }

    int temp = _getch();//读取用户输入的按键值
    if (temp == 224)//说明是方向键
    {
        temp = _getch();//读取方向键的具体值
        switch (temp)
        {
        case 72://上
            if (choice > 1) choice--;
            break;
        case 80://下
            if (choice < 4) choice++;
            break;
        }
    }
    if (temp == 13)//回车
    {
        switch (choice)
        {
        case 1:
            drawMap();
            return;
        case 2:
            gameHelp();
            break;
        case 3:
            aboutGame();
            break;
        case 4:
            exit(0);
        }
    }
}

}

void gameHelp() { system("cls");//清屏 printf("\n\n\n\n"); printf("\t\t\t\t游戏帮助\n\n"); printf("\t\t\t\t操作说明:\n"); printf("\t\t\t\t使用方向键控制蛇的移动\n"); printf("\t\t\t\t吃到食物可以增加分数和蛇身长度\n\n"); printf("\t\t\t\t按任意键返回主菜单\n"); _getch(); }

void aboutGame() { system("cls");//清屏 printf("\n\n\n\n"); printf("\t\t\t\t关于游戏\n\n"); printf("\t\t\t\t游戏版本:1.0\n"); printf("\t\t\t\t开发者:XXX\n"); printf("\t\t\t\t联系方式:XXX\n\n"); printf("\t\t\t\t按任意键返回主菜单\n"); _getch(); }

void drawMap() { //打印上下边框 for (i = 0; i <= MAPWIDTH; i += 2)//i+=2是因为横向占用的是两个位置 { //将光标移动依次到(i,0)处打印上边框 gotoxy(i, 0); printf("■"); //将光标移动依次到(i,MAPHEIGHT)处打印下边框 gotoxy(i, MAPHEIGHT); printf("■"); }

//打印左右边框
for (i = 1; i < MAPHEIGHT; i++)
{
    //将光标移动依次到(0,i)处打印左边框
    gotoxy(0, i);
    printf("■");
    //将光标移动依次到(MAPWIDTH, i)处打印左边框
    gotoxy(MAPWIDTH, i);
    printf("■");
}

//随机生成初试食物
while (1)
{
    srand((unsigned int)time(NULL));
    food.x = rand() % (MAPWIDTH - 4) +
#include stdioh#include stdlibh#include Windowshwindows编程头文件#include timeh#include conioh控制台输入输出头文件#ifndef __cplusplustypedef char bool;#define false 0#define true 1#endif将光标移动到控制台的xy坐标点处void gotoxyi

原文地址: https://www.cveoy.top/t/topic/gI1u 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录