0

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

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

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

随机化不得影响计时器

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

while (timer) 一次并转到 do while (randomization) 并将继续循环“randomize”并且不会回到 while (timer)

while (timer) 受到影响 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();
}
4

1 回答 1

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

    for (int i = 0; i < 100; i++) {

    switch ( state1 ) { case 0: // 为任务 1 做任何你需要的事情 }

    switch ( state2 ) { case 0: // 为任务 2 做任何你需要的事情 }

    }

于 2013-10-18T18:53:08.877 回答