// 贪吃蛇.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;
}
//主函数