?? mainloop.c
字號:
//in this file,I want to deal with the user's iuput
//The user can choose what he want to do by pushing "UP","DOWN",and "ENTER" key.
//void nextselect
int get_key()
{
union REGS rg;
rg.h.ah=0;
int86(0x16,&rg,&rg);
return rg.h.ah;
}
void firstthing(void)
{
int key,x=1,y=1,x0,y0;
int flag=0;//0---not to change x or y,1---to change x or y.
int score;//current score
char str[10];
drawchild_1();
score=SCORE[0][0];
sprintf(str,"%d%c",score,95);
fillblank(1,1,str,15,4);
while(1)
{
key=getch();//get_key();
x0=x,y0=y;
switch(key)
{
case DOWN:y++;y=y>10?1:y;flag=1;break;
case UP :y--;y=y<1?10:y;flag=1;break;
case LEFT:x--;x=x<1?5:x;flag=1;break;
case RIGHT:x++;x=x>5?1:x;flag=1;break;
case F10:SCORE[y-1][x-1]=score; //return to menu
sprintf(str,"%d",score);
fillblank(x,y,str,15,1);
return;
default :flag=0;
}
if(flag==1)//need to change x or y;
{
sprintf(str,"%d",score);
fillblank(x0,y0,str,15,1);
SCORE[y0-1][x0-1]=score;
score=SCORE[y-1][x-1];
sprintf(str,"%d%c",score,95);
fillblank(x,y,str,15,4);
}
else if(flag==0)
{
if(key>=48&&key<=57&&score<3275)//0,1,2,3,4,5,6,7,8,9
{
score=score*10+key-'0';
sprintf(str,"%d%c",score,95);
fillblank(x0,y0,str,14,4);
SCORE[y0-1][x0-1]=score;
}
if(key==8)//backspace
{
score/=10;
if(score>0)sprintf(str,"%d%c",score,95);
else sprintf(str,"%c",95);
fillblank(x0,y0,str,14,4);
SCORE[y0-1][x0-1]=score;
}
}
}
}
void secondthing(void)
{
drawchild_2();
}
void thirdthing(void)
{
drawchild_3();
}
void fourththing(void)
{
drawchild_4();
}
void fifththing(void)
{
drawchild_5();
}
void sixththing(void)
{
drawchild_6();
}
void mainloop(void)
{
int input_key;
int currentselect=0;
char *buttonbuffer=malloc(imagesize(15,100,155,130));
int flag=0;//whether need to change button state
getimage(15,80,155,110,buttonbuffer);
putimage(15,80,buttonbuffer,4);
while(1) //waiting for input
{
input_key=get_key();
switch(input_key)
{
case ENTER : putimage(15,80+currentselect*50,buttonbuffer,0);
switch(currentselect)
{
case 0: firstthing();break;
case 1: secondthing();break;
case 2: thirdthing();break;
case 3: fourththing(); break;
case 4: fifththing();break;
case 5: sixththing();break;
case 6: return; //ESC has been pressed
}
putimage(15,80+currentselect*50,buttonbuffer,4);
flag=0;
break;
case DOWN : putimage(15,80+currentselect*50,buttonbuffer,0);
currentselect++;
flag=1;
break;
case UP : putimage(15,80+currentselect*50,buttonbuffer,0);
currentselect--;
flag=1;
break;
default:flag=0;continue;//other key has been pressed!do nothing!
}
if(flag==1)
{
currentselect=currentselect>6?0:currentselect;
currentselect=currentselect<0?6:currentselect;
getimage(15,80+currentselect*50,155,110+currentselect*50,buttonbuffer);
putimage(15,80+currentselect*50,buttonbuffer,4);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -