}
prt(\━\
prt(\┛\
return ; }
//drawmenu
void drawmenu(void) {
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)
16
{
case 72://上光标
selmenu_Num--; if (selmenu_Num<0) {
selmenu_Num=2; }
break;
case 80: //下光标
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);
17
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); 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;
18
case 2: //退出
exit(1); break; } }
DWORD WINAPI ThreadProc1(
LPVOID lpParameter // 接收 CreateThread的)
第4个参数 { 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);
19
}
LeaveCriticalSection(&cs); Sleep(speed); }
return 1; }
DWORD WINAPI ThreadProc2( LPVOID lpParameter 的第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();
20
// 接收 CreateThread