贪吃蛇项目面试C语言,【游戏数组面试题】面试问题:C语言贪吃蛇(… - 看准网...
// 贪吃蛇.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include
#include
#include "iostream"
#pragma comment(lib,"winmm.lib")
typedef struct COORDS {
int xx;
int yy;
} COORDS, *PCOORDS;
#define 上 1
#define 下 2
#define 左 3
#define 右 4
#define 保存 5
#define 退出 6
#define 草丛 -2
#define UP 10
#define DOWN 11
#define LEFT 12
#define RIGHT 13
#define MAP_X 30
#define MAP_Y 30
#define 空地 0
#define 食物 1
#define 障碍物 2
#define P1 3
#define P2 4
#define 奖品 5 // 特殊食物
COORD g_Snake[100]; //第一条蛇的长度数组
COORDS g2_Snake[100]; //第二条蛇的长度数组
int g_nlenth = 4; //第一条蛇的长度
int g2_nlenth = 4; //第二条蛇的长度
int g_Dir = 右; //第一条蛇初始方向 右
int g2_Dir ; //第二条蛇的初始方向 左
int g_Map[MAP_X][MAP_Y] = {};
int g_FoodExist = 0; //基本食物
int g_Food = -1; // 加分不加身子
int g_SFood = -2; //对方加长度
int len = 0;
int len2 = 0;
int a = 200;// 初始速度
int n = 1; // 为下面做暂停定义的
int mem = 1;
#define KEY_DOWN(key) GetAsyncKeyState(key)==(SHORT)0x8001?1:0
#define MP mer.dwMousePosition
char ch;
int hp = 10; //第一个蛇的生命
int hp2 = 10; //第二个蛇的生命
using namespace std;
int waitKey(){
if (_kbhit()) //判断此用户是否按键,
return _getch(); //接受用户按键,并将按键返回
return 0; //没有按键,返回0
}
int waitKey2(){
if (_kbhit()) //判断此用户是否按键,
return _getch(); //接受用户按键,并将按键返回
return 0; //没有按键,返回0
}
/**********蛇的初始位置**************/
void InitGame()
{
g_Snake[0].X = 10;
g_Snake[0].Y = 3;
g_Snake[1].X = 10;
g_Snake[1].Y = 4;
g_Snake[2].X = 10;
g_Snake[2].Y = 5;
g_Snake[3].X = 10;
g_Snake[3].Y = 6;
for (int i = 0; i < MAP_X; i++)
{
for (int j = 0; j < MAP_Y; j++)
{
if (i == 0 || j == 0 || i == MAP_X - 1 || j == MAP_Y - 1) //定义的障碍物
{
g_Map[i][j] = 障碍物;
}
else
{
g_Map[i][j] = 空地;
}
}
}
}
void InitGame2()
{
g2_Snake[0].xx = 24;
g2_Snake[0].yy = 23;
g2_Snake[1].xx = 24;
g2_Snake[1].yy = 24;
g2_Snake[2].xx = 24;
g2_Snake[2].yy = 25;
g2_Snake[3].xx = 24;
g2_Snake[3].yy = 26;
for (int i = 0; i < MAP_X; i++)
{
for (int j = 0; j < MAP_Y; j++)
{
if (i == 0 || j == 0 || i == MAP_X - 1 || j == MAP_Y - 1) //定义的障碍物
{
g_Map[i][j] = 障碍物;
}
else
{
g_Map[i][j] = 空地;
}
}
}
}
/************************************************************************/
void WriteChar(int x, int y, const char* szStr, int color = 10 | 8)
{
// 1句柄代表的就是某一个实体
// 输出句柄代表的就是控制台输出相关的东西
// 使用控制台函数,需要先获得句柄
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = { x * 2, y };
SetConsoleTextAttribute(hOut, color);
SetConsoleCursorPosition(hOut, pos);
printf(szStr);
}
#define KEY_DOWN(key) GetAsyncKeyState(key)==(SHORT)0x8001?1:0
#define MP mer.dwMousePosition
void KeyEventProc(KEY_EVENT_RECORD ker)
{
COORD m = { 0, 0 };
if (ker.bKeyDown)
{
ch = ker.uChar.AsciiChar;
}
/*else
Draw_postion(m, "键盘弹起", 0x50);*/
}
void MouseEventProc(MOUSE_EVENT_RECORD mer, int c)
{
if (mer.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)
{
if (MP.X > 1 && MP.X < 60 && MP.Y>0 && MP.Y < 30)
{
switch (c)
{
case 1:WriteChar(mer.dwMousePosition.X / 2, mer.dwMousePosition.Y, "□", 15);
g_Map[mer.dwMousePosition.X / 2][mer.dwMousePosition.Y] = 2; break;
case 2:WriteChar(mer.dwMousePosition.X / 2, mer.dwMousePosition.Y, "※", 10);
g_Map[mer.dwMousePosition.X / 2][mer.dwMousePosition.Y] = -2; break;
case 3:WriteChar(mer.dwMousePosition.X / 2, mer.dwMousePosition.Y, "■", 15);
g_Map[mer.dwMousePosition.X / 2][mer.dwMousePosition.Y] = 0; break;
}
}
}
}
int flag = 1;
int MessageLoop()
{
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
INPUT_RECORD stcRecord = { 0 };
DWORD dwRead;
SetConsoleMode(hStdin, ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT);
while (flag)
{
//等待事件
ReadConsoleInput(hStdin, &stcRecord, 1, &dwRead);
/*char flag = waitkey();*/
int c = 1;
switch (ch)
{
case '1':
c = 1; break;
case '2':
c = 2; break;
case '3':
c = 3; break;
case '4':
flag = 0; break;
default:
break;
}
/*MouseEventProc(stcRecord.Event.MouseEvent, c);*/
处理事件
if (stcRecord.EventType == KEY_EVENT)
{
KeyEventProc(stcRecord.Event.KeyEvent);
}
else
{
MouseEventProc(stcRecord.Event.MouseEvent, c);
}
if (flag == 0)
{
//system("cls");
cout << "保存成功" << endl;
}
}
return 0;
}
/************************欢迎结束界面***********/
void welcome()
{
PlaySoundA("lalala.wav", NULL, SND_ASYNC | SND_NODEFAULT);
WriteChar(15, 10, "", 3 | 10);
printf("/**********************************************/");
WriteChar(15, 20, "", 3 | 10);
printf("/**********************************************/");
WriteChar(17, 13, "", 3 | 10);
printf("WELCOME TO THE GAME OF RETRO SNAKE");
WriteChar(17, 16, "", 3 | 10);
printf("*请在英文输入法中操作*,wasd控制p暂停\n");
WriteChar(20, 19, "", 3 | 10);
system("pause");
system("cls");
}
void Finish()
{
system("cls");
WriteChar(15, 10, "", 3 | 10);
printf("/**********************************************/");
WriteChar(15, 20, "", 3 | 10);
printf("/**********************************************/");
WriteChar(18, 14, "", 3 | 10);
printf("GAME OVER o(* ̄▽ ̄*)o");
WriteChar(20, 16, " ", 3 | 10);
WriteChar(18, 18, " ", 3 | 10);
printf("游戏结束,下次努力");
WriteChar(0, 27, "", 3 | 10);
system("pause");
}
void Finish2()
{
system("cls");
WriteChar(15, 10, "", 3 | 10);
printf("/**********************************************/");
WriteChar(15, 20, "", 3 | 10);
printf("/**********************************************/");
WriteChar(18, 14, "", 3 | 10);
printf("GAME OVER o(* ̄▽ ̄*)o");
WriteChar(20, 16, " ", 3 | 10);
WriteChar(18, 18, " ", 3 | 10);
printf("玩家1胜利!!!!");
WriteChar(0, 27, "", 3 | 10);
system("pause");
}
/************地图的绘制*********/
void DrwsMap()
{
int XX = rand() % 28 + 1;
int YY = rand() % 28 + 1;
for (int i = 0; i < MAP_X; i++)
{
for (int j = 0; j < MAP_Y; j++)
{
if (g_Map[i][j] == 障碍物)
{
WriteChar(i, j, "□", 15);
}
else
{
WriteChar(i, j, "■", 14);
}
}
}
for (int i = 0; i < 20; i++)
{
XX = rand() % 28 + 1;
YY = rand() % 28 + 1;
if (g_Map[XX][YY] == 空地) //地图上的这一点是不是空地,如果是空地就附为障碍物,画出来
{
g_Map[XX][YY] = 障碍物;
WriteChar(XX, YY, "□", 15);
}
}
}
/*****************草丛********************/
void Thick()//草丛
{
WriteChar(25, 26, "※", 10);
g_Map[12][14] = 草丛;
WriteChar(12, 14, "※", 10);
g_Map[12][15] = 草丛;
WriteChar(12, 15, "※", 10);
g_Map[12][16] = 草丛;
WriteChar(12, 16, "※", 10);
WriteChar(25, 26, "※", 10);
g_Map[12][17] = 草丛;
WriteChar(12, 17, "※", 10);
g_Map[12][18] = 草丛;
WriteChar(12, 18, "※", 10);
g_Map[12][19] = 草丛;
WriteChar(12, 19, "※", 10);
WriteChar(15, 26, "※", 10);
g_Map[26][14] = 草丛;
WriteChar(26, 14, "※", 10);
g_Map[26][15] = 草丛;
WriteChar(26, 15, "※", 10);
g_Map[26][16] = 草丛;
WriteChar(26, 16, "※", 10);
g_Map[26][17] = 草丛;
WriteChar(26, 17, "※", 10);
g_Map[26][18] = 草丛;
WriteChar(26, 18, "※", 10);
g_Map[26][19] = 草丛;
WriteChar(26, 19, "※", 10);
}
/****************手工绘制地图***********/
int DrewMap()
{
DrwsMap();
Thick();
WriteChar(36, 17, "按1:绘制障碍物", 3 | 0);
WriteChar(36, 18, "按2:绘制草地", 9 | 0);
WriteChar(36, 19, "按3:清除", 4 | 2);
WriteChar(36, 20, "按4:保存", 4 | 2);
MessageLoop();
getchar();
return 0;
}
/***********信息显示***********/
void Tips()
{
WriteChar(MAP_X + 3, 1, "", 10);//显示信息
printf("hello Welcome To Play");
WriteChar(MAP_X + 3, 2, "", 10);
printf("按 W S A D 移动方向\n");
WriteChar(MAP_X + 3, 3, " ", 10);
printf("按P暂停\n");
}
void P1State()
{
WriteChar(MAP_X + 3, 4, " ", 10);
printf("得分:", &len);
WriteChar(MAP_X + 3, 5, " ", 10);
printf_s("我的生命:", &hp);
}
void P2State()
{
WriteChar(MAP_X + 3, 9, " ", 10);
printf("得分:", &len2);
WriteChar(MAP_X + 3, 10, " ", 10);
printf_s("我的生命:", &hp2);
}
/************游戏保和读取*************/
void Save()
{
FILE * PFile = NULL;
//打开存档文件
if (fopen_s(&PFile, "G:\\123.txt", "w+") != 0)
{
fprintf(stderr, "Can't open memory.txt!\n");
exit(1);
}
//保存地图
fwrite(g_Map, sizeof(g_Map), 1, PFile);
//保存蛇长度
fwrite(&g_nlenth, sizeof(int), 1, PFile);
//保存方向
fwrite(&g_Dir, sizeof(g_Dir), 1, PFile);
//保存食物坐标(结构体是值类型)
fwrite(&g_FoodExist, sizeof(g_FoodExist), 1, PFile);
//保存积分
fwrite(&len, sizeof(int), 1, PFile);
//保存生命
fwrite(&hp, sizeof(int), 1, PFile);
//保存蛇坐标
fwrite(g_Snake, sizeof(g_Snake), 1, PFile);
fclose(PFile);
WriteChar(MAP_X + 6, 15, " ", 11);
printf("保存成功");
fclose(PFile);
}
void Read()
{
FILE * PFile = NULL;
//打开存档文件
if (fopen_s(&PFile, "G:\\123.txt", "r+") != 0)
{
fprintf(stderr, "Can't open memory.txt!\n");
exit(1);
}
fread(g_Map, sizeof(g_Map), 1, PFile);
//保存蛇长度
fread(&g_nlenth, sizeof(int), 1, PFile);
//保存方向
fread(&g_Dir, sizeof(g_Dir), 1, PFile);
//保存食物坐标(结构体是值类型)
fread(&g_FoodExist, sizeof(g_FoodExist), 1, PFile);
//保存积分
fread(&len, sizeof(int), 1, PFile);
//保存生命
fread(&hp, sizeof(int), 1, PFile);
//保存蛇坐标
fread(g_Snake, sizeof(g_Snake), 1, PFile);
fclose(PFile);
}
/***********用户操作输入*****************/
void GetPlayerInput()
{
int Oper = 0;
//接收用户的输入,修改蛇的方向
Oper = waitKey();
//根据蛇的方向去移动蛇
switch (Oper)
{
case 'w':case'W':
if (g_Dir != 下)
{
g_Dir = 上;
}
break;
case 's':case 'S':
if (g_Dir != 上)
{
g_Dir = 下;
}
break;
case 'a':case 'A':
if (g_Dir != 右)
{
g_Dir = 左;
}
break;
case 'd':case'D':
if (g_Dir != 左)
{
g_Dir = 右;
}
break;
case 'p':case 'P':
n = -n;
break;
case 'b':case 'B':
Save();
break;
case 'e':case 'E':
g_Dir = 退出;
break;
}
}
void GetPlayerInput2() //P2控制
{
int Oper = 0;
//接收用户的输入,修改蛇的方向
Oper = waitKey2();
//根据蛇的方向去移动蛇
switch (Oper)
{
case 'i':case'I':
if (g_Dir != DOWN)
{
g_Dir = UP;
}
break;
case 'k':case 'K':
if (g_Dir != UP)
{
g_Dir = DOWN;
}
break;
case 'j':case 'J':
if (g_Dir != RIGHT)
{
g_Dir = LEFT;
}
break;
case 'l':case'L':
if (g_Dir != LEFT)
{
g_Dir = RIGHT;
}
break;
}
}
/***************双蛇的清理*************/
void ClearSnake()
{
//根据蛇现在的坐标,将其在屏幕上清除
for (int i = 0; i < g_nlenth; i++)
{
WriteChar(g_Snake[i].X, g_Snake[i].Y, "■", 14); //清除蛇尾巴的点
g_Map[g_Snake[i].X][g_Snake[i].Y] = 空地; //清除蛇尾巴的点,取消自己的点
}
}
void ClearSnake2()
{
//根据蛇现在的坐标,将其在屏幕上清除
for (int i = 0; i < g2_nlenth; i++)
{
WriteChar(g2_Snake[i].xx, g2_Snake[i].yy, "■", 14); //清除蛇尾巴的点
g_Map[g2_Snake[i].xx][g2_Snake[i].yy] = 空地; //清除蛇尾巴的点,取消自己的点
}
}
/***************画蛇*************/
void DrawSnake()
{
for (int i = 0; i < g_nlenth; i++)
{
WriteChar(g_Snake[i].X, g_Snake[i].Y, "", 15); //描绘蛇身
g_Map[g_Snake[i].X][g_Snake[i].Y] = P1; //将整个蛇身,定义给自己,确定位置
if (i == 0)
{
printf("○");
}
else if (i == g_nlenth - 1)
{
printf("¤");
}
else
{
printf("⊙");
}
}
}
void DrawSnake2()
{
for (int i = 0; i < g2_nlenth; i++)
{
WriteChar(g2_Snake[i].xx, g2_Snake[i].yy, "", 2); //描绘蛇身
g_Map[g2_Snake[i].xx][g2_Snake[i].yy] = P2; //将整个蛇身,定义给自己,确定位置
if (i == 0)
{
printf("○");
}
else if (i == g2_nlenth - 1)
{
printf("¤");
}
else
{
printf("⊙");
}
}
}
/*******双蛇的移和吃东西********************/
int MoveSnake()
{
int nTempX = g_Snake[0].X;
int nTempY = g_Snake[0].Y;
switch (g_Dir)
{
case 上:
nTempY--;
break;
case 下:
nTempY++;
break;
case 左:
nTempX--;
break;
case 右:
nTempX++;
break;
}
if (g_Map[nTempX][nTempY] == 空地)
{
}
else if (g_Map[nTempX][nTempY] == 食物)
{
g_nlenth++;
len++;
g_Map[nTempX][nTempY] = 空地;
g_FoodExist = 0;
WriteChar(MAP_X + 6, 4, "", 15);
printf("%d", len);
}
else if (g_Map[nTempX][nTempY] == 奖品)
{
g_nlenth;
len++;
if (g_nlenth <= 0)
{
return 0;
}
g_Map[nTempX][nTempY] = 空地;
g_Food = -1;
WriteChar(MAP_X + 6, 4, "", 15);
printf("%d", len);
}
else if (g_Map[nTempX][nTempY] == 障碍物)
{
//g_Map[nTempX][nTempY] = 障碍物;
--hp;
if (hp <= 0)
{
return 0;
}
WriteChar(MAP_X + 8, 5, "", 7);
printf("%d", hp);
return true;
}
else
{
if (g_Map[nTempX][nTempY] == P1)
{
return 0;
}
}
ClearSnake(); //根据蛇现在的坐标,将其在屏幕上清除掉
for (int i = g_nlenth - 1; i >= 0; i--)
{
g_Snake[i + 1].X = g_Snake[i].X;
g_Snake[i + 1].Y = g_Snake[i].Y;
}
g_Snake[0].X = nTempX;
g_Snake[0].Y = nTempY;
DrawSnake(); //根据新坐标将蛇绘制出来
Thick();
return 1;
}
int MoveSnake2() //2p移动
{
int nTempX = g2_Snake[0].xx;
int nTempY = g2_Snake[0].yy;
switch (g2_Dir)
{
case UP:
nTempY--;
break;
case DOWN:
nTempY++;
break;
case LEFT:
nTempX--;
break;
case RIGHT:
nTempX++;
break;
}
if (g_Map[nTempX][nTempY] == 空地)
{
}
else if (g_Map[nTempX][nTempY] == 食物)
{
g2_nlenth++;
len2++;
g_Map[nTempX][nTempY] = 空地;
g_FoodExist = 0;
WriteChar(MAP_X + 6, 4, "", 15);
printf("%d", len2);
}
else if (g_Map[nTempX][nTempY] == 奖品)
{
g2_nlenth--;
len2++;
if (g2_nlenth <= 0)
{
return 0;
}
g_Map[nTempX][nTempY] = 空地;
g_Food = -1;
WriteChar(MAP_X + 6, 4, "", 15);
printf("%d", len2);
}
else if (g_Map[nTempX][nTempY] == 障碍物)
{
--hp2;
if (hp2 <= 0)
{
return 0;
}
WriteChar(MAP_X + 8, 5, "", 7);
printf("%d", hp2);
return true;
}
else
{
if (g_Map[nTempX][nTempY] == P1)
{
return 0;
}
}
ClearSnake2(); //根据蛇现在的坐标,将其在屏幕上清除掉
for (int i = g2_nlenth - 1; i >= 0; i--)
{
g2_Snake[i + 1].xx = g2_Snake[i].xx;
g2_Snake[i + 1].yy = g2_Snake[i].yy;
}
g2_Snake[0].xx = nTempX;
g2_Snake[0].yy = nTempY;
DrawSnake2(); //根据新坐标将蛇绘制出来
return 1;
}
/*******两种食物******************/
void Food()
{
while (true)
{
int FoodX = rand() % 28 + 1;
int FoodY = rand() % 28 + 1;
if (g_Map[FoodX][FoodY] == 空地) //地图上的这一点是不是空地,如果是空地就附为食物,画出来
{
g_Map[FoodX][FoodY] = 食物;
WriteChar(FoodX, FoodY, "●", 12);
g_FoodExist = 1;
break;
}
}
}
void SuperFood()
{
while (true)
{
int FoodX = rand() % 28 + 1;
int FoodY = rand() % 28 + 1;
if (g_Map[FoodX][FoodY] == 空地) //地图上的这一点是不是空地,如果是空地就附为食物,画出来
{
g_Map[FoodX][FoodY] = 奖品;
WriteChar(FoodX, FoodY, "*", 12);
g_Food = 1;
break;
}
}
}
/**********简单模式*************/
void Easy()
{
if (flag)
{
InitGame();//根据蛇现在的坐标
}
DrwsMap(); //画地图
Tips();
P1State();
int nLive = 1;
while (nLive)
{
GetPlayerInput();//获取用户输入
if (n < 0)
{
continue;
}
nLive = MoveSnake(); //根据蛇的方向去移动蛇
if (g_FoodExist == 0)
{
Food();
}
else if (g_Food == -1)
{
SuperFood();
}
Sleep(abs(200 - 5 * len));
//Thick();
}
Save();
Finish();
}
/**********有难度的模式************/
void Difficult()
{
if (flag)
{
InitGame();//根据蛇现在的坐标
}
DrwsMap(); //画地图
Tips();
P1State();
int nLive = 1;
while (nLive)
{
GetPlayerInput();//获取用户输入
if (n < 0)
{
continue;
}
nLive = MoveSnake(); //根据蛇的方向去移动蛇
if (g_FoodExist == 0)
{
Food();
}
else if (g_Food == -1)
{
SuperFood();
}
Sleep(abs(100 - 5 * len));
//Thick();
}
Save();
Finish();
}
/**********双蛇大战****************/
void Double()
{
InitGame();
InitGame2();//根据蛇现在的坐标
DrwsMap(); //画地图
Tips();
P1State();
P2State();
int nLive = 1;
while (nLive)
{
Thick();
GetPlayerInput();
GetPlayerInput2();//获取用户输入
if (n < 0)
{
continue;
}
nLive = MoveSnake(); //根据蛇的方向去移动蛇
nLive = MoveSnake2();
if (g_FoodExist == 0)
{
Food();
}
else if (g_Food == -1)
{
SuperFood();
}
Sleep(abs(200 - 1 * len));
}
Finish2();
Save();
}
/**********游戏结束窗口******************/
void First()
{
int i = 0;
printf(" \n");
printf(" \n");
printf(" \n");
printf(" \n");
printf(" \n");
printf(" \n");
printf(" ■ ■ ■ ■\n");
printf(" ■ ■ ■■■ ■■■■ ■ ■ ■ ■■■■■ \n");
printf(" ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■\n");
printf(" ■ ■ ■ ■ ■ ■■■ ■ ■ ■ ■ ■\n");
printf(" ■■■■■ ■ ■ ■ ■ ■ ■ ■ ■\n");
printf(" ■ ■ ■ ■■■ ■ ■ ■ ■ ■ ■ \n");
printf(" ■ ■ ■ ■ ■ ■ ■ ■ ■ \n");
printf(" ■ ■ ■ ■ ■ ■ ■ ■\n");
printf(" ■ ■ ■ ■ ■ ■ ■ ■\n");
printf(" ■ ■ ■■■■ ■■■■■ ■■■■\n");
WriteChar(20, 20, "1 简单\n", 3 | 10);
WriteChar(20, 21, "2 困难\n", 3 | 10);
WriteChar(20, 22, "", 3 | 10);
printf("请输入你的选择:\n");
WriteChar(28, 22, "", 3 | 10);
scanf_s("%d", &i);
switch (i)
{
case 1:
system("cls");
Easy();
break;
case 2:
system("cls");
Difficult();
break;
}
}
/*********游戏退出*****************/
void QUIT()
{
mem = 0;
}
/********* 选择模式*****************/
void Choince()
{
while (mem)
{
system("cls");
int ch = 0;
WriteChar(15, 10, "*", 3 | 10);
printf("/**********************************************/");
WriteChar(15, 20, "*", 3 | 10);
printf("/**********************************************/");
WriteChar(20, 12, "*", 3 | 10);
printf("请选择你的游戏\n");
WriteChar(20, 14, "", 3 | 10);
printf("1、新游戏\n");
WriteChar(20, 15, "", 3 | 10);
printf("2、保存的游戏\n");
WriteChar(20, 16, "", 3 | 10);
printf("3、自定义游戏\n");
WriteChar(20, 17, "", 3 | 10);
printf("4、双蛇对战\n");
WriteChar(20, 18, "", 3 | 10);
printf("5、退出游戏\n");
WriteChar(20, 19, "", 3 | 10);
printf("请输入你的选择:");
scanf_s("%d", &ch);
WriteChar(20, 30, "", 3 | 10);
switch (ch)
{
case 1:
{
system("cls");
First();
}
break;
case 2:
{
system("cls");
Read();
}
break;
case 3:
{
system("cls");
DrewMap();
}
break;
case 4:
{
system("cls");
Double();
}
break;
case 5:
{
QUIT();
}
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
welcome();
Choince();
return 0;
}
//主函数
贪吃蛇项目面试C语言,【游戏数组面试题】面试问题:C语言贪吃蛇(… - 看准网...相关推荐
- 京东网站具有的服务器,【京东后台服务器开发面试】问的都是比较基础,但个人准备不够充分-看准网...
1.简历内容介绍,会问比较详细 工具实现思路,主要做什么 2.http 请求格式 请求行 请求头 各个头作用 :useragent:为了识别浏览器的类型版本,操作系统及版本等信息的 :cookie : ...
- 贪吃蛇项目面试C语言,【游戏数组面试题】面试问题:c语言版贪吃蛇… - 看准网...
主要运用了光标的移动-.- 教程会在一个月内发布-.-最近考试好多...... 看代码应该能看懂.... 3.1 规则模块与动画模块 1)函数原型:void gui( );void dong( ); ...
- C语言 编程判断花瓶是谁打碎的,【数组编程面试题】面试问题:C语言解决是谁… - 看准网...
逛贴吧偶遇一道很新颖的C语言编程题,想到自己的C语言荒废了很久,便决定花点时间解决一下练练手. 具体题目如下: 实验题目(4)[见实验教材实验五的题目6]:编写程序exp5_6.c,请判断花瓶是谁打碎 ...
- java语言的数组描述_下列关于Java语言的数组描述中,错误的是()。_学小易找答案...
[单选题]下面()是正确的main()方法说明. [填空题]Java规定,如果子类中定义的成员方法与父类中定义的成员方法同名,并且参数的( )和类型以及( )的类型也相同,则父类中的同名成员方法被屏蔽 ...
- c语言中数组的概念及作用,C语言数组的定义及其使用方法
什么是数组? 在我们学习数组前先让我们介绍一下c语言中数组是什么?数组就是一个个元素按照一定顺序排列的集合.它将数据从最低的内存地址保存到最高的内存地址. 声明一个数组 c语言规定了声明数组的格式: ...
- c语言比较数组中的元素大小,C语言之数组的冒泡排序
原标题:C语言之数组的冒泡排序 在实际开发中,有很多场景需要我们将数组元素按照从大到小(或者从小到大)的顺序排列,这样在查阅数据时会更加直观,例如: l 一个保存了班级学号的数组,排序后更容易分区好学 ...
- 英业达软件测试工程师,「天津英业达软件测试工程师」面试招聘|工资待遇 - 看准网...
校招,一共两轮面试,过去先笔试,然后面试官拿着笔试卷子和简历进行面试,问的主要是简历里项目的一些细节第一轮笔试试题: 1.web项目中用到过的前端技术列举: 2.数据库索引,事务,锁的概念: 3.li ...
- 字节跳动python面试_【字节跳动Python面试】生平遇到最好的面试体验-看准网
总的来说面试并不难,面试主要围绕自身背景,所做过的项目,考察SQL能力以及一些结合产品来分析的贴近现实的题目.面试官是个帅帅的小帅哥(感觉很年轻),人很好.Zoom面试,这里一定要指出,面试前最好准备 ...
- 多益网络社招iq_【多益网络技术面试】岗位就不说了,社招网申填简历。-看准网...
先说下面试过程吧,下午3点准时qq视频面试,首先是常规的自我介绍,然后就让你介绍下现在做的项目经验,说了一下自己正在负责的项目之后就开始问一些项目上的细节,如项目的开发流程是什么样的如何确定需求-原型 ...
- java技术主管的岗位职责_【JAVA项目经理/技术负责人职责】2021年利必达电商JAVA项目经理/技术负责人岗位职责-看准网...
本人机械方向大三学生,参加了17年5月底的大疆提前批校招,应聘机械工程师职位,经过了两轮简历筛选.一轮网测.一次电话初面和一次视频面试,因为自身能力不够,视频面试表现不好,应该拿不到最后的offer了 ...
最新文章
- Java项目:CRM客户管理系统(java+SSM+jsp+mysql+maven)
- mysql查询各个知识点
- YII2 载入默认值 loadDefaultValues
- Python练习_三级菜单
- php计算昨天,php时间计算,明天,昨天,前天,上周,本周,上月等等
- python入门第四章十大歌手 手机通讯录 神奇魔方阵 青春有你
- php限制接口访问次数_令牌桶限流思路分享(PHP+Redis实现机制)
- 15. (附加)链表是否有环(C++版本)
- 计算机控制器的简写,工业控制常用英语及缩写
- Eclipse中文版之完美汉化教程(详细图解)
- 矩阵和向量的范式(Norms for Vectors and Matrices)
- Linux文件打包与解压缩
- 搜狗输入法自动打开问题
- HTML(进阶核心标签)
- HorizontalScrollview+recycleview实现横向滑动
- 《Parallel batch k-means for Big data clustering》 SCI (聚类k-means)
- 2019蓝桥杯B组省赛反思总结
- 基于JavaScript的问卷调查系统
- dnf 服务器喇叭怎么制作,一个服务器喇叭的独白 - DNF玩家交流 - 地下城与勇士 - DNF-游久网(UUU9)DNF资料站...
- 网页中的th/th是什么意思
热门文章
- 基于idea-SSM的房产中介房屋租赁出租出售交易平台(javaweb-php-asp.netC#-j2ee-springboot)
- 扩展运算符的作用及使用场景
- 演讲时,如何提高逻辑思维能力
- java手机号、身份证信息脱敏
- Mysql 唯一索引的字段值 允许多个NULL值存在吗
- wget 正在连接 127.0.0.1:36627... 失败:拒绝连接
- openfire android 发送图片,基于openfire+smack开发Android即时聊天应用[四]-单人聊天、群聊、发送接收文件等...
- 某公司软件开发工程师孙工,作息规律为上三天班,休息一天,经常不确定休 息日是否周末,为此,请你开发一个程序,当孙工输入年及月,以日历方式显示对 应月份的休息日,用中括号进行标记.同时,统计出本月有几天
- 今天来干一件大事,安装微软正版WINPE.
- OD代码滚动变化的原因和解决方法