2013-08-02 2 views
0

im essayant de créer quelque chose de similaire à « perdu dans la migration » comme un projet pour mes finales mais im ayant des problèmes avec la randomisation et la minuteriecomment voulez-vous exécuter deux WHILE indépendamment en C

Comment exécuter deux faire en indépendamment les uns des autres

minuterie ne doit pas disparaître, et doivent continuer à temps est écoulé, doit fonctionner indépendamment

randomisation ne doit pas affecter la minuterie

bogues di de imputation clé rectionnel ne montre pas le résultat

while (minuterie) une fois et aller au do while (randomisation) et gardera en boucle à « randomiser » et ne sera pas revenir au temps (timer)

while (minuterie) est affecté bu getch() et getche() pause il

#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(); 
} 

Répondre

0
  • Créer une machine d'état pour chacune des deux tâches que vous essayez d'accomplir.
  • Écrivez le code pour implémenter chaque machine d'état en utilisant une instruction switch.
  • Placez-les de manière séquentielle dans une boucle externe.

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

    interrupteur (state1) { case 0: // faire tout ce que vous avez besoin pour la tâche 1 }

    commutateur (état2) { case 0: // faire tout ce dont vous avez besoin pour la tâche 2 }

    }

Questions connexes