2016-05-16 2 views
-6

Я пытаюсь сделать викторину с типом времени, где вам дается некоторое количество времени (например, 20-30 секунд), и вы должны отвечать на вопросы тем временем.C++/Timer, loop in a loop

Я написал код, который отсчитывает время назад: `

int main() 
 
{ 
 
int miliseconds=0; 
 
int seconds =20; 
 
int f=0; 
 
for(;;){ 
 

 
if(miliseconds==0){ 
 
seconds = seconds -1; 
 
miliseconds=10; 
 
} 
 

 
system("cls"); 
 
if(seconds>9) 
 
cout<<"Time - "<<"00:"<<seconds; 
 
else 
 
cout<<"Time - "<<"00:0"<<seconds; 
 
miliseconds=miliseconds-1; 
 
Sleep(100); 
 

 
if(seconds == 0 && miliseconds ==0) 
 
goto pabaiga; 
 
} 
 

 

 

 
end: 
 
system("cls"); 
 
cout<<"You have ran out of time"; 
 
return 0; 
 

 
}

` 

Однако, когда я пытался реализовать код в моей викторины игры, она не работает , поскольку он встречает петлю в петле:

k=0;f=0; 
 
seconds = 15; 
 
miliseconds = 0; 
 

 
for(;;){ 
 

 
if(seconds>9) 
 
cout<<"Time - "<<"00:"<<seconds; 
 
else 
 
cout<<"Time - "<<"00:0"<<seconds; 
 
miliseconds--; 
 
Sleep(100); 
 

 
if(seconds == 0 && miliseconds ==0 || f==50) 
 
return 0; 
 

 

 
    if(miliseconds==0){ 
 
seconds = seconds -1; 
 
miliseconds=10; 
 
} 
 

 

 

 

 
    bool loopas=true; 
 
     f++; 
 
     system("cls"); 
 
     if(seconds>9){ 
 
gotoXY(1,0);cout<<"Laikas - "<<"00:"<<seconds;} 
 
else{ 
 
gotoXY(1,0);cout<<"Laikas - "<<"00:0"<<seconds;} 
 
     pakartojam2: 
 
     int skaicius=rand()%50; 
 

 
     if(masyvas2[skaicius][0]!="tuscia"){ 
 

 
      nr1=1+rand()%3; 
 
      numeris22: 
 
      nr2=1+rand()%3; 
 
      numeris32: 
 
      if(nr2!=nr1) 
 
       nr3=1+rand()%3; 
 
       else goto numeris22; 
 
      if(nr1!=nr3 && nr2!=nr3) 
 
     {gotoXY(1,2); cout<<"-"<<masyvas2[skaicius][0]<<endl; 
 
    gotoXY(2,4); SetColor(12);cout<<"->";SetColor(0); 
 

 
i=0; int pele=4,c=12,c1=0,c2=0,q=0; 
 
while(loopas){ 
 

 
gotoXY(4,4); SetColor(c); cout<<masyvas2[skaicius][nr1]; 
 
gotoXY(4,5); SetColor(c1); cout<<masyvas2[skaicius][nr2]; 
 
gotoXY(4,6); SetColor(c2); cout<<masyvas2[skaicius][nr3]; SetColor(0); 
 

 
system("pause>nul"); 
 

 
if(GetAsyncKeyState(VK_DOWN) &&  pele!=6){ 
 

 
gotoXY(2,pele); cout<<" "; 
 
pele++; 
 
gotoXY(2,pele); SetColor(12); cout<<"->"; 
 
i++; 
 
c=0; 
 
q++; 
 
if(q==1){ 
 
c1=12; 
 
c2=0; 
 
} 
 
else{ 
 
c1=0; 
 
c2=12; 
 
} 
 
continue; 
 
} 
 

 
if(GetAsyncKeyState(VK_UP) && pele !=4){ 
 

 
gotoXY(2,pele);cout<<" "; 
 
pele--; 
 
gotoXY(2,pele);SetColor(12);cout<<"->"; 
 
i--; 
 
c2=0; 
 
q--; 
 
if(q==0){ 
 
c=12; 
 
c1=0; 
 
} 
 
else{ 
 
c=0; 
 
c1=12; 
 
} 
 
continue; 
 
} 
 

 
if(GetAsyncKeyState(VK_RETURN)){ 
 

 

 
     masyvas2[skaicius][nr1]="a"; 
 
     masyvas2[skaicius][nr2]="b"; 
 
     masyvas2[skaicius][nr3]="c"; 
 
     answer = masyvas[skaicius][1]; 
 

 
switch(i){ 
 
    case 0: 
 
     pasirinktis="a"; 
 
      break; 
 
    case 1: 
 
     pasirinktis="b"; 
 
      break; 
 
    case 2: 
 
     pasirinktis="c"; 
 
      break; 
 

 
} 
 

 
if(pasirinktis==answer){ 
 
loopas=false; 
 
k++; 
 
} 
 
else{ 
 
    loopas=false; 
 
} 
 

 
} 
 

 

 
} 
 
masyvas2[skaicius][0]=tuscia; 
 
} 
 

 
      else goto numeris32;} 
 
     else goto pakartojam2; 
 

 

 
}

Я сделал что-то не так, или я должен посчитать время по-другому?

+5

Почтовый код, а не ссылки на код. И абсолютно не ссылки на фотографии кода. У вашего редактора есть команда «Копировать»; используй это. – molbdnilo

+1

Не могли бы вы опубликовать SSCCE - http://sscce.org/? –

+0

Исправлено, извините – Mecholaz

ответ

-2

Для задержки просто используйте функцию задержки, определенную в заголовке dos.h. Как это

 delay(1000); // in milliseconds 
     nextQuestion(); 

Или, если вы используете более новый компилятор Си ++ в окнах, то используйте функцию сна, определенный в windows.h. Нравится

 sleep(1000); // in milliseconds 
     nextQuestion(); 
+1

Это уже не 1990, Шахбаз. –

+0

Да, я знаю. Но Мехолаз не предоставил код. Поэтому я просто предполагаю, что он использует старый C++. Во всяком случае, все о логике. –

+2

Я не понимаю, почему вы предполагали, что кто-то использует 26-летний, специфичный для платформы, достандартный диалект языка. –