gotoxy(X+3,Y+3); prt(\菜单选项一\prt(\ 菜单选项二\ gotoxy(X+3,Y+3+2+2); prt(\ 退出\
gotoxy(X+3,Y+3+2);
gotoxy(0,0); }
int selmenu_Num=0; int selmenu(void) { //0,1,2
//如果按下↓selmenu_Num++; 如果>2 selmenu_Num=0; //如果按下↑selmenu_Num--; 如果<0 selmenu_Num=2;
int ch=0; while(1) {
ch=getch(); //gotoxy(0,0); //prt(\ if (ch==13) {
return selmenu_Num; }
switch(ch) {
case 72://上光标
selmenu_Num--; if (selmenu_Num<0) {
selmenu_Num=2; }
break;
case 80: //下光标
46
selmenu_Num++; if (selmenu_Num>2) {
selmenu_Num=0; }
break; }
gotoxy(0,0);
// prt(\
//动态菜单
switch(selmenu_Num) {
case 0:
gotoxy(X+3,Y+3); prt(\
gotoxy(X+3,Y+3+2); prt(\ \
gotoxy(X+3,Y+3+2+2); prt(\ \ gotoxy(0,0); break; case 1:
gotoxy(X+3,Y+3); prt(\ \
gotoxy(X+3,Y+3+2); prt(\
gotoxy(X+3,Y+3+2+2); prt(\ \ gotoxy(0,0); break; case 2:
gotoxy(X+3,Y+3); prt(\ \
gotoxy(X+3,Y+3+2);
47
prt(\ \
gotoxy(X+3,Y+3+2+2); prt(\ gotoxy(0,0); break; }
} //end while
return selmenu_Num; }
//doMenu
void doMenu(void) { int sel;
sel= selmenu(); switch(sel) {
case 0: //菜单一 gotoxy(0,0);
prt(\菜单一功能\\n\
break; case 1: gotoxy(0,0); prt(\菜单二功能\\n\
break;
case 2: //退出
exit(1); break; } }
DWORD WINAPI ThreadProc1(
LPVOID lpParameter 第4个参数
48
// 接收 CreateThread的
{ int i=0; while(1)
)
//添加线程代码
{ i++;
EnterCriticalSection(&cs); gotoxy(0,1);
printf(\ //下移一格棋子
if (CheckDownBorder(oneChess)||CheckDownChess(oneChess)) {
Add1Chess(oneChess); ShowChessBoard();
//重新赋值OneChess进行新的一轮棋子掉落 //随机初始化
rx=rand()%5; ry=0;
oneChess=DownChessData[rx][ry]; oneChess.rx=rx; oneChess.ry=ry;
ShowChess(oneChess);
} else {
MoveDown(&oneChess); }
LeaveCriticalSection(&cs); Sleep(speed); }
return 1; }
49
DWORD WINAPI ThreadProc2(
LPVOID lpParameter // 接收 CreateThread )
的第4个参数 {
while(1) {
//随机初始化 rx=rand()%2; ry=rand()%4;
Sleep(100); }
return 1; }
int main(void) {
//Y行 X列
// fillchar(' ',3000);
InitializeCriticalSection(&cs);
InitializeCriticalSection(&cs_puts); system(\
system(\ /* drawM(); drawmenu(); doMenu();*/
SetWindowPos(GetConsoleWindow(),HWND_NOTOPMOST,133,100,800,600,SWP_SHOWWINDOW); DrawChessMap();
//添加线程代码
//开始游戏
th1=CreateThread(NULL,0,ThreadProc1,NULL,0,NULL); //创建线
50