⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainloop.c

📁 在图形模式下
💻 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 + -