你如何在C中独立完成两个人

时间:2013-08-02 06:20:59

标签: timer while-loop do-while arrow-keys

我尝试创建类似于“在迁移中迷失”的东西,作为我的决赛项目,但我在随机化和计时器方面遇到了麻烦

如何在彼此独立的情况下运行两个

计时器不应该消失,并且必须保持运行直到时间到了,必须独立运行

随机化不得影响计时器

错误 输入方向键不显示结果

while(计时器)一次并进入do while(随机化)并将继续循环“randomize”并且不会回到while(计时器)

while(计时器)受影响bu getch()和getche()暂停

 #include<stdio.h>
 #include<conio.h>
 #include<stdlib.h>
 #include<windows.h>
 #include<time.h>

//******************************************//
//       DEFAULT BUILT-IN CLOCK             //
//******************************************//

void Wait(int seconds)
{
   clock_t end wait;
   endwait = clock () + seconds * CLK_TCK;
   while (clock() < end wait) {}
}

//***********************************************************//
//                    DIRECTIONAL KEYS                       //
//***********************************************************//

#define LEFT 75
#define RIGHT 77
#define UP 72
#define DOWN 80

int rdtsc()
{
as m volatile("rdtsc");
}

int main()
{
    char ans;
    int image;
    int loop=1;    
    int correct=0, total=0;
    int sec=0, min=0;

//***********************************************************//
//                       TIMER                               //
//***********************************************************//
int x=1;
while(1==1)
{
    Wait(1);
    sec++;
    if(sec==46)
    {
           loop=0;
    }

    printf("%i:%i\n\n", min, sec);

//***********************************************************//
//                RANDOMIZED IMAGES                          //
//***********************************************************//


fflush(st din);
srand(rdtsc());
image=rand()%4;

do
{

    if(image==0)
    {
    printf(">>IMAGE 1 CORRECT LEFT<<");    
    ans=getche();                    
                    if(ans==LEFT)
                    {        
                    printf("\n\ncorrect!");           
                    }
                    else
                    if(ans!=LEFT)
                    {
                    printf("\n\nwrong!");
                    }   
    }
    else
    if(image==1)
    {
    printf(">>IMAGE 2 CORRECT UP<<");
    ans=getche();
                    if(ans==UP)
                    {         
                    printf("\n\ncorrect!");           
                    }
                    else
                    if(ans!=UP)
                    {
                    printf("\n\nwrong!");
                    }   
    }
    else
    if(image==2)
    {
    printf(">>IMAGE 3 CORRECT DOWN<<");
    ans=getche();
                    if(ans==DOWN)
                    {
                    printf("\n\ncorrect!");                     
                    }
                    else
                    if(ans!=DOWN)
                    {
                    printf("\n\nwrong!");
                    }        
    }
    else
    if(image==3)
    {
    printf(">>IMAGE 4 CORRECT RIGHT<<");
    ans=getche();
                    if(ans==RIGHT)
                    {      
                    printf("\n\ncorrect!");           
                    }
                    else
                    if(ans!=RIGHT)
                    {
                    printf("\n\nwrong!");
                    }           
    }    
getch();
system("cls");
}
while(loop==1);

}

getch();
}

1 个答案:

答案 0 :(得分:0)

  • 为您要完成的两项任务中的每项创建一台状态机。
  • 使用switch语句编写代码以实现每个状态机。
  • 将它们顺序放在外循环中。

    for(int i = 0; i&lt; 100; i ++) {

    开关(state1)   {      案例0:        //为任务1做任何你需要的事情   }

    开关(state2)   {      案例0:        //为任务2做任何你需要的事情   }

    }