cmd简单游戏代码(电脑简单游戏代码)
cmd常用代码
1,列出所有任务及进程号,杀进程
tasklist
tasklist /? 获取使用帮助
taskkill
taskkill /? 获取使用帮助
2,cd 切换目录
cd /? //获取使用帮助
cd \ //跳转到硬盘的根目录
cd C:\WINDOWS //跳转到当前硬盘的其他文件
d: //跳转到其他硬盘
cd /d e:\software //跳转到其他硬盘的其他文件夹
注意此处必须加/d参数。否则无法跳转。
cd.. //跳转到上一层目录
3,netstat 查看网络连接状态
显示协议统计信息和当前 TCP/IP 网络连接。该命令可以查看当前机器建立的所有网络链接状态,以及对应哪个进程。
netstat -help 获取命令行使用帮助信息
netstat -ano //查看网络连接、状态以及对应的进程id
4,find
find /?获取使用帮助
netstat -ano|find ".8" //使用管道符,进行模糊查询
5,ping
ping -help
6,tracert
求CMD指令一些好玩的东西。。
开始-运行-命令大全
1. gpedit.msc-----组策略
2. sndrec32-------录音机
3. Nslookup-------IP地址侦测器
4. explorer-------打开资源管理器
5. logoff---------注销命令
6. tsshutdn-------60秒倒计时关机命令
7. lusrmgr.msc----本机用户和组
8. services.msc---本地服务设置
9. oobe/msoobe /a----检查XP是否激活
10. notepad--------打开记事本
11. cleanmgr-------垃圾整理
12. net start messenger----开始信使服务
13. compmgmt.msc---计算机管理
14. net stop messenger-----停止信使服务
15. conf-----------启动netmeeting
16. dvdplay--------DVD播放器
17. charmap--------启动字符映射表
18. diskmgmt.msc---磁盘管理实用程序
19. calc-----------启动计算器
20. dfrg.msc-------磁盘碎片整理程序
21. chkdsk.exe-----Chkdsk磁盘检查
22. devmgmt.msc--- 设备管理器
23. regsvr32 /u *.dll----停止dll文件运行
24. drwtsn32------ 系统医生
25. rononce -p ----15秒关机
26. dxdiag---------检查DirectX信息
27. regedt32-------注册表编辑器
28. Msconfig.exe---系统配置实用程序
29. rsop.msc-------组策略结果集
30. mem.exe--------显示内存使用情况
31. regedit.exe----注册表
32. winchat--------XP自带局域网聊天
33. progman--------程序管理器
34. winmsd---------系统信息
35. perfmon.msc----计算机性能监测程序
36. winver---------检查Windows版本
37. sfc /scannow-----扫描错误并复原
38. taskmgr-----任务管理器(2000/xp/2003
39. winver---------检查Windows版本
40. wmimgmt.msc----打开windows管理体系结构(WMI)
41. wupdmgr--------windows更新程序
42. wscript--------windows脚本宿主设置
43. write----------写字板
44. winmsd---------系统信息
45. wiaacmgr-------扫描仪和照相机向导
46. winchat--------XP自带局域网聊天
47. mem.exe--------显示内存使用情况
48. Msconfig.exe---系统配置实用程序
49. mplayer2-------简易widnows media player
50. mspaint--------画图板
51. mstsc----------远程桌面连接
52. mplayer2-------媒体播放机
53. magnify--------放大镜实用程序
54. mmc------------打开控制台
55. mobsync--------同步命令
56. dxdiag---------检查DirectX信息
57. drwtsn32------ 系统医生
58. devmgmt.msc--- 设备管理器
59. dfrg.msc-------磁盘碎片整理程序
60. diskmgmt.msc---磁盘管理实用程序
61. dcomcnfg-------打开系统组件服务
62. ddeshare-------打开DDE共享设置
63. dvdplay--------DVD播放器
64. net stop messenger-----停止信使服务
65. net start messenger----开始信使服务
66. notepad--------打开记事本
67. nslookup-------网络管理的工具向导
68. ntbackup-------系统备份和还原
69. narrator-------屏幕“讲述人”
70. ntmsmgr.msc----移动存储管理器
71. ntmsoprq.msc---移动存储管理员操作请求
72. netstat -an----(TC)命令检查接口
73. syncapp--------创建一个公文包
74. sysedit--------系统配置编辑器
75. sigverif-------文件签名验证程序
76. sndrec32-------录音机
77. shrpubw--------创建共享文件夹
78. secpol.msc-----本地安全策略
79. syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
80. services.msc---本地服务设置
81. Sndvol32-------音量控制程序
82. sfc.exe--------系统文件检查器
83. sfc /scannow---windows文件保护
84. tsshutdn-------60秒倒计时关机命令
85. tourstart------xp简介(安装完成后出现的漫游xp程序)
86. taskmgr--------任务管理器
87. eventvwr-------事件查看器
88. eudcedit-------造字程序
89. explorer-------打开资源管理器
90. packager-------对象包装程序
91. perfmon.msc----计算机性能监测程序
92. progman--------程序管理器
93. regedit.exe----注册表
94. rsop.msc-------组策略结果集
95. regedt32-------注册表编辑器
96. rononce -p ----15秒关机
97. regsvr32 /u *.dll----停止dll文件运行
98. regsvr32 /u zipfldr.dll------取消ZIP支持
99. cmd.exe--------CMD命令提示符
100. chkdsk.exe-----Chkdsk磁盘检查
101. certmgr.msc----证书管理实用程序
102. calc-----------启动计算器
103. charmap--------启动字符映射表
104. cliconfg-------SQL SERVER 客户端网络实用程序
105. Clipbrd--------剪贴板查看器
106. conf-----------启动netmeeting
107. compmgmt.msc---计算机管理
108. cleanmgr-------垃圾整理
109. ciadv.msc------索引服务程序
110. osk------------打开屏幕键盘
111. odbcad32-------ODBC数据源管理器
112. oobe/msoobe /a----检查XP是否激活
113. lusrmgr.msc----本机用户和组
114. logoff---------注销命令
115. iexpress-------木马捆绑工具,系统自带
116. Nslookup-------IP地址侦测器
117. fsmgmt.msc-----共享文件夹管理器
118. utilman--------辅助工具管理器
119. gpedit.msc-----组策略
求一个用C语言编写的小游戏代码
#include graphics.h
#include conio.h
#include time.h
/////////////////////////////////////////////
// 定义常量、枚举量、结构体、全局变量
/////////////////////////////////////////////
#define WIDTH 10 // 游戏区宽度
#define HEIGHT 22 // 游戏区高度
#define SIZE 20 // 每个游戏区单位的实际像素
// 定义操作类型
enum CMD
{
CMD_ROTATE, // 方块旋转
CMD_LEFT, CMD_RIGHT, CMD_DOWN, // 方块左、右、下移动
CMD_SINK, // 方块沉底
CMD_QUIT // 退出游戏
};
// 定义绘制方块的方法
enum DRAW
{
SHOW, // 显示方块
HIDE, // 隐藏方块
FIX // 固定方块
};
// 定义七种俄罗斯方块
struct BLOCK
{
WORD dir[4]; // 方块的四个旋转状态
COLORREF color; // 方块的颜色
} g_Blocks[7] = { {0x0F00, 0x4444, 0x0F00, 0x4444, RED}, // I
{0x0660, 0x0660, 0x0660, 0x0660, BLUE}, // 口
{0x4460, 0x02E0, 0x0622, 0x0740, MAGENTA}, // L
{0x2260, 0x0E20, 0x0644, 0x0470, YELLOW}, // 反L
{0x0C60, 0x2640, 0x0C60, 0x2640, CYAN}, // Z
{0x0360, 0x4620, 0x0360, 0x4620, GREEN}, // 反Z
{0x4E00, 0x4C40, 0x0E40, 0x4640, BROWN}}; // T
// 定义当前方块、下一个方块的信息
struct BLOCKINFO
{
byte id; // 方块 ID
char x, y; // 方块在游戏区中的坐标
byte dir:2; // 方向
} g_CurBlock, g_NextBlock;
// 定义游戏区
BYTE g_World[WIDTH][HEIGHT] = {0};
/////////////////////////////////////////////
// 函数声明
/////////////////////////////////////////////
void Init(); // 初始化游戏
void Quit(); // 退出游戏
void NewGame(); // 开始新游戏
void GameOver(); // 结束游戏
CMD GetCmd(); // 获取控制命令
void DispatchCmd(CMD _cmd); // 分发控制命令
void NewBlock(); // 生成新的方块
bool CheckBlock(BLOCKINFO _block); // 检测指定方块是否可以放下
void DrawBlock(BLOCKINFO _block, DRAW _draw = SHOW); // 画方块
void OnRotate(); // 旋转方块
void OnLeft(); // 左移方块
void OnRight(); // 右移方块
void OnDown(); // 下移方块
void OnSink(); // 沉底方块
/////////////////////////////////////////////
// 函数定义
/////////////////////////////////////////////
// 主函数
void main()
{
Init();
CMD c;
while(true)
{
c = GetCmd();
DispatchCmd(c);
// 按退出时,显示对话框咨询用户是否退出
if (c == CMD_QUIT)
{
HWND wnd = GetHWnd();
if (MessageBox(wnd, _T("您要退出游戏吗?"), _T("提醒"), MB_OKCANCEL | MB_ICONQUESTION) == IDOK)
Quit();
}
}
}
// 初始化游戏
void Init()
{
initgraph(640, 480);
srand((unsigned)time(NULL));
// 显示操作说明
setfont(14, 0, _T("宋体"));
outtextxy(20, 330, _T("操作说明"));
outtextxy(20, 350, _T("上:旋转"));
outtextxy(20, 370, _T("左:左移"));
outtextxy(20, 390, _T("右:右移"));
outtextxy(20, 410, _T("下:下移"));
outtextxy(20, 430, _T("空格:沉底"));
outtextxy(20, 450, _T("ESC:退出"));
// 设置坐标原点
setorigin(220, 20);
// 绘制游戏区边界
rectangle(-1, -1, WIDTH * SIZE, HEIGHT * SIZE);
rectangle((WIDTH + 1) * SIZE - 1, -1, (WIDTH + 5) * SIZE, 4 * SIZE);
// 开始新游戏
NewGame();
}
// 退出游戏
void Quit()
{
closegraph();
exit(0);
}
// 开始新游戏
void NewGame()
{
// 清空游戏区
setfillstyle(BLACK);
bar(0, 0, WIDTH * SIZE - 1, HEIGHT * SIZE - 1);
ZeroMemory(g_World, WIDTH * HEIGHT);
// 生成下一个方块
g_NextBlock.id = rand() % 7;
g_NextBlock.dir = rand() % 4;
g_NextBlock.x = WIDTH + 1;
g_NextBlock.y = HEIGHT - 1;
// 获取新方块
NewBlock();
}
// 结束游戏
void GameOver()
{
HWND wnd = GetHWnd();
if (MessageBox(wnd, _T("游戏结束。\n您想重新来一局吗?"), _T("游戏结束"), MB_YESNO | MB_ICONQUESTION) == IDYES)
NewGame();
else
Quit();
}
// 获取控制命令
DWORD m_oldtime;
CMD GetCmd()
{
// 获取控制值
while(true)
{
// 如果超时,自动下落一格
DWORD newtime = GetTickCount();
if (newtime - m_oldtime = 500)
{
m_oldtime = newtime;
return CMD_DOWN;
}
// 如果有按键,返回按键对应的功能
if (kbhit())
{
switch(getch())
{
case 'w':
case 'W': return CMD_ROTATE;
case 'a':
case 'A': return CMD_LEFT;
case 'd':
case 'D': return CMD_RIGHT;
case 's':
case 'S': return CMD_DOWN;
case 27: return CMD_QUIT;
case ' ': return CMD_SINK;
case 0:
case 0xE0:
switch(getch())
{
case 72: return CMD_ROTATE;
case 75: return CMD_LEFT;
case 77: return CMD_RIGHT;
case 80: return CMD_DOWN;
}
}
}
// 延时 (降低 CPU 占用率)
Sleep(20);
}
}
// 分发控制命令
void DispatchCmd(CMD _cmd)
{
switch(_cmd)
{
case CMD_ROTATE: OnRotate(); break;
case CMD_LEFT: OnLeft(); break;
case CMD_RIGHT: OnRight(); break;
case CMD_DOWN: OnDown(); break;
case CMD_SINK: OnSink(); break;
case CMD_QUIT: break;
}
}
// 生成新的方块
void NewBlock()
{
g_CurBlock.id = g_NextBlock.id, g_NextBlock.id = rand() % 7;
g_CurBlock.dir = g_NextBlock.dir, g_NextBlock.dir = rand() % 4;
g_CurBlock.x = (WIDTH - 4) / 2;
g_CurBlock.y = HEIGHT + 2;
// 下移新方块直到有局部显示
WORD c = g_Blocks[g_CurBlock.id].dir[g_CurBlock.dir];
while((c 0xF) == 0)
{
g_CurBlock.y--;
c = 4;
}
// 绘制新方块
DrawBlock(g_CurBlock);
// 绘制下一个方块
setfillstyle(BLACK);
bar((WIDTH + 1) * SIZE, 0, (WIDTH + 5) * SIZE - 1, 4 * SIZE - 1);
DrawBlock(g_NextBlock);
// 设置计时器,用于判断自动下落
m_oldtime = GetTickCount();
}
// 画方块
void DrawBlock(BLOCKINFO _block, DRAW _draw)
{
WORD b = g_Blocks[_block.id].dir[_block.dir];
int x, y;
int color = BLACK;
switch(_draw)
{
case SHOW: color = g_Blocks[_block.id].color; break;
case HIDE: color = BLACK; break;
case FIX: color = g_Blocks[_block.id].color / 3; break;
}
setfillstyle(color);
for(int i=0; i16; i++)
{
if (b 0x8000)
{
x = _block.x + i % 4;
y = _block.y - i / 4;
if (y HEIGHT)
{
if (_draw != HIDE)
bar3d(x * SIZE + 2, (HEIGHT - y - 1) * SIZE + 2, (x + 1) * SIZE - 4, (HEIGHT - y) * SIZE - 4, 3, true);
else
bar(x * SIZE, (HEIGHT - y - 1) * SIZE, (x + 1) * SIZE - 1, (HEIGHT - y) * SIZE - 1);
}
}
b = 1;
}
}
// 检测指定方块是否可以放下
bool CheckBlock(BLOCKINFO _block)
{
WORD b = g_Blocks[_block.id].dir[_block.dir];
int x, y;
for(int i=0; i16; i++)
{
if (b 0x8000)
{
x = _block.x + i % 4;
y = _block.y - i / 4;
if ((x 0) || (x = WIDTH) || (y 0))
return false;
if ((y HEIGHT) (g_World[x][y]))
return false;
}
b = 1;
}
return true;
}
// 旋转方块
void OnRotate()
{
// 获取可以旋转的 x 偏移量
int dx;
BLOCKINFO tmp = g_CurBlock;
tmp.dir++; if (CheckBlock(tmp)) { dx = 0; goto rotate; }
tmp.x = g_CurBlock.x - 1; if (CheckBlock(tmp)) { dx = -1; goto rotate; }
tmp.x = g_CurBlock.x + 1; if (CheckBlock(tmp)) { dx = 1; goto rotate; }
tmp.x = g_CurBlock.x - 2; if (CheckBlock(tmp)) { dx = -2; goto rotate; }
tmp.x = g_CurBlock.x + 2; if (CheckBlock(tmp)) { dx = 2; goto rotate; }
return;
rotate:
// 旋转
DrawBlock(g_CurBlock, HIDE);
g_CurBlock.dir++;
g_CurBlock.x += dx;
DrawBlock(g_CurBlock);
}
// 左移方块
void OnLeft()
{
BLOCKINFO tmp = g_CurBlock;
tmp.x--;
if (CheckBlock(tmp))
{
DrawBlock(g_CurBlock, HIDE);
g_CurBlock.x--;
DrawBlock(g_CurBlock);
}
}
// 右移方块
void OnRight()
{
BLOCKINFO tmp = g_CurBlock;
tmp.x++;
if (CheckBlock(tmp))
{
DrawBlock(g_CurBlock, HIDE);
g_CurBlock.x++;
DrawBlock(g_CurBlock);
}
}
// 下移方块
void OnDown()
{
BLOCKINFO tmp = g_CurBlock;
tmp.y--;
if (CheckBlock(tmp))
{
DrawBlock(g_CurBlock, HIDE);
g_CurBlock.y--;
DrawBlock(g_CurBlock);
}
else
OnSink(); // 不可下移时,执行“沉底方块”操作
}
// 沉底方块
void OnSink()
{
int i, x, y;
// 连续下移方块
DrawBlock(g_CurBlock, HIDE);
BLOCKINFO tmp = g_CurBlock;
tmp.y--;
while (CheckBlock(tmp))
{
g_CurBlock.y--;
tmp.y--;
}
DrawBlock(g_CurBlock, FIX);
// 固定方块在游戏区
WORD b = g_Blocks[g_CurBlock.id].dir[g_CurBlock.dir];
for(i = 0; i 16; i++)
{
if (b 0x8000)
{
if (g_CurBlock.y - i / 4 = HEIGHT)
{ // 如果方块的固定位置超出高度,结束游戏
GameOver();
return;
}
else
g_World[g_CurBlock.x + i % 4][g_CurBlock.y - i / 4] = 1;
}
b = 1;
}
// 检查是否需要消掉行,并标记
int row[4] = {0};
bool bRow = false;
for(y = g_CurBlock.y; y = max(g_CurBlock.y - 3, 0); y--)
{
i = 0;
for(x = 0; x WIDTH; x++)
if (g_World[x][y] == 1)
i++;
if (i == WIDTH)
{
bRow = true;
row[g_CurBlock.y - y] = 1;
setfillstyle(WHITE, DIAGCROSS2_FILL);
bar(0, (HEIGHT - y - 1) * SIZE + SIZE / 2 - 2, WIDTH * SIZE - 1, (HEIGHT - y - 1) * SIZE + SIZE / 2 + 2);
}
}
if (bRow)
{
// 延时 200 毫秒
Sleep(200);
// 擦掉刚才标记的行
IMAGE img;
for(i = 0; i 4; i++)
{
if (row[i])
{
for(y = g_CurBlock.y - i + 1; y HEIGHT; y++)
for(x = 0; x WIDTH; x++)
{
g_World[x][y - 1] = g_World[x][y];
g_World[x][y] = 0;
}
getimage(img, 0, 0, WIDTH * SIZE, (HEIGHT - (g_CurBlock.y - i + 1)) * SIZE);
putimage(0, SIZE, img);
}
}
}
// 产生新方块
NewBlock();
}
贪吃蛇cmd代码
在命令提示符下cd到C++代码link生成的exe文件所在的debug目录,然后直接输入exe文件名比如说,你的cpp文件路径为D:\...\example.cpp,那么你在命令提示符下输入d:回车cd d:\...\debug回车example回车这样就可以了
有没有可以帮我写c语言贪吃蛇的代码 cmd运行的
//code?by?wlfryq??71693456@qq.com
#include?stdio.h
#include?stdlib.h
#include?conio.h
#include?windows.h
#include?time.h
#include?direct.h
#include?stdbool.h
#define?W?80????//屏幕宽度?
#define?H?37????//屏幕高度?
#define?SNAKE_ALL_LENGTH?200???//蛇身最长为?
void?CALLBACK?TimerProc(
HWND?hwnd,???????
????????UINT?message,?????
????????UINT?idTimer,?????
????????DWORD?dwTime);
void?start();
struct?MYPOINT
{
int?x;
int?y;
}?s[SNAKE_ALL_LENGTH]?,?head,?end,?food;
int?max_count=0;?//历史最高分,如果countmax_count,?则max_count=count
int?old_max_count=0;??//历史最高分,不会变动,?用于死亡时判断max_count是否大于old_max_count,如果大于,则写入文件?
int?count=0;??//得分?
int?len=20;???//当前蛇身长度?
int?direct=0;?//方向:?0-向右,?1-向下,?2-向左,?3-向上
int?speed=200;??//速度:毫秒?
bool?isfood=false;?//食物是否存在
int?timerID;
bool?stop=false;???//暂停?
char*?ini_path;????//数据文件绝对路径?
void?setxy(int?x,?int?y)??//设置CMD窗口光标位置
{
???COORD?coord?=?{x,?y};
???SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),?coord);
}
void?hide_cursor()?//隐藏CMD窗口光标
{
CONSOLE_CURSOR_INFO?cci;
cci.bVisible?=?FALSE;
cci.dwSize?=?sizeof(cci);
HANDLE?handle?=?GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorInfo(handle,?cci);
}
void?set_food()??????//设置食物坐标?
{
if(isfood==true)
{
return;
}
int?x,y,i;
bool?flag=false;
while(1)
{
flag=false;
x=rand()%(W-14)+6;
y=rand()%(H-12)+6;
for(i=0;ilen;i++)??????//判断食物是否落在蛇身上?
{
if(s[i].x==x??s[i].y==y)
{
flag=true;
break;
}
}
if(flag==true)
{
continue;
}
else
{
food.x=x;
food.y=y;
break;
}
}
setxy(food.x,food.y);
printf("*");
isfood=true;
}
void?check_board()????//检测蛇身是否越界和相交?
{
int?i;
if(s[0].x=W-3?||?s[0].x=2?||?s[0].y=H-1?||?s[0].y=2)
{
setxy(W/2-5,0);
printf("game?over\n");
stop=true;
if(old_max_countmax_count)
{
char?t[5]={'\0'};
sprintf(t,"%d",max_count);
WritePrivateProfileString("MAX_COUNT","max_count",t,ini_path);
}
}
for(i=1;ilen;i++)
{
if(s[i].x==s[0].x??s[i].y==s[0].y)
{
setxy(W/2-5,0);
printf("game?over\n");
stop=true;
if(old_max_countmax_count)
{
char?t[5]={'\0'};
sprintf(t,"%d",max_count);
WritePrivateProfileString("MAX_COUNT","max_count",t,ini_path);
}
break;
}
}
if(stop==true)
{
KillTimer(NULL,timerID);
int?c;
while(1)
{
fflush(stdin);
c=_getch();
if(c=='n'?||?c=='N')
{
start();
}
else?if(c=='q'?||?c=='Q')
{
exit(0);
}
else?continue;
}
}
}
void?printf_body(bool?is_first)??//打印蛇身?
{
if(is_first==true)?????//如果是第一次打印蛇身?
{
int?i;
for(i=0;ilen;i++)
{
setxy(s[i].x,s[i].y);
printf("O");
}
}
else??????????????????//如果不是第一次打印蛇身?
{
setxy(end.x,end.y);
printf("?");
setxy(s[0].x,s[0].y);
printf("O");
}
if(food.x==s[0].x??food.y==s[0].y)??//如果吃到食物?
{
count++;
isfood=false;?????????????????????//重置食物?
set_food();
len++;
KillTimer(NULL,timerID);
if(speed100)?speed-=10;
else?if(speed50)?speed-=5;
else?if(speed30)?speed-=2;
else?if(speed16)?speed-=1;
else?;
setxy(0,0);
if(max_countcount) max_count=count;
printf("??speed?:?%d?ms?????score?:?%d???????????????????????????????????best?score:%d??",speed,count,max_count);
timerID=SetTimer(NULL,001,speed,TimerProc);
}
}
void?change_body_pos(int?x,?int?y)???//改变蛇身的坐标数据?
{
end.x=s[len-1].x;
end.y=s[len-1].y;
int?i;
for(i=len-1;i0;i--)
{
s[i].x=s[i-1].x;
s[i].y=s[i-1].y;
}
s[0].x=x;
s[0].y=y;
}
void?CALLBACK?TimerProc(
HWND?hwnd,???????
????????UINT?message,?????
????????UINT?idTimer,?????
????????DWORD?dwTime)
{
switch(direct)
{
case?0:
head.x++;
change_body_pos(head.x,head.y);
printf_body(false);
check_board();
break;
case?1:
head.y++;
change_body_pos(head.x,head.y);
printf_body(false);
check_board();
break;
case?2:
head.x--;
change_body_pos(head.x,head.y);
printf_body(false);
check_board();
break;
case?3:
head.y--;
change_body_pos(head.x,head.y);
printf_body(false);
check_board();
break;
}
}
void?start()
{
int?i;
KillTimer(NULL,timerID);
count=0;??//得分?
len=20;???//当前蛇身长度?
direct=0;?//方向:?0-向右,?1-向下,?2-向左,?3-向上
speed=200;??//速度:毫秒?
isfood=false;?//食物是否存在
stop=false;???//停止?
system("cls");
setxy(1,4);
printf("┌─────────────────────────────────────┐\n");
for(i=0;i33;i++)
{
printf("?│??????????????????????????????????????????????????????????????????????????│\n");
}
printf("?└─────────────────────────────────────┘");
head.x=len-1+5;
head.y=H/2;
for(i=0;ilen;i++)
{
s[i].x=head.x-i;
s[i].y=head.y;
}
setxy(0,0);
printf("??speed?:?%d:ms?????score?:?%d???????????????????????????????????best?score:%d??",speed,count,max_count);
printf_body(true);
set_food();
timerID=SetTimer(NULL,001,speed,TimerProc);
int?c;
MSG?msg;
while(GetMessage(msg,NULL,0,0))
{
if(stop==true) break;
if(_kbhit())???//如果按下的是方向键或功能键,?_getch()要调用两次,第一次返回0XE0或0?
{
fflush(stdin);
c=_getch();???//上:?72?下:80??左:75??右:77?
if(c==0XE0?||?c==0)
{
c=_getch();
if(c==72??direct!=1??direct!=3)
{
direct=3;
}
else?if(c==80??direct!=1??direct!=3)
{
direct=1;
}
else?if(c==75??direct!=0??direct!=2)
{
direct=2;
}
else?if(c==77??direct!=0??direct!=2)
{
direct=0;
}
}
else?if(c=='?')
{
setxy(W/2-10,0);
system("pause");
setxy(W/2-10,0);
printf("????????????????????");
}
}
if(msg.message==WM_TIMER)
{
DispatchMessage(msg);
}
}
}
int?main()
{
ini_path=(char*)malloc(sizeof(char)*50);
srand((unsigned)time(0));
getcwd(ini_path,50);//取得当前程序绝对路径
ini_path=strcat(ini_path,"snake.dat");
max_count=GetPrivateProfileInt("MAX_COUNT","max_count",0,ini_path);
old_max_count=max_count;
char?cmd[50];
sprintf(cmd,"mode?con?cols=%d?lines=%d\0",W,H);
system(cmd);//改变CMD窗口大小
hide_cursor();
start();
return?0;
}