#include stdioh#include stdlibh#include Windowshwindows编程头文件#include timeh#include conioh控制台输入输出头文件#ifndef __cplusplustypedef char bool;#define false 0#define true 1#endif将光标移动到控制台的xy坐标点处void gotoxyi
很好,下面是增加开始菜单界面的代码:
#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) +
原文地址: https://www.cveoy.top/t/topic/gI1u 著作权归作者所有。请勿转载和采集!