Skocz do zawartości

[C++] Licznik czasu w programie


Krzywilk

Polecane posty

Witam

Od jakiegoś czasu rozbudowuję sobie tą grę opartą na zasadach "Super master mind" i dziś wpadł mi do głowy pomysł zamieszczenia w niej licznika czasu który na bieżąco będzie liczył i wyświetlał czas i tu się pojawia problem, otóż nie wiem jak zamieścić go w ten sposób żeby ciągle był widzialny w prawym górnym rogu konsoli i "aktualizował" się na bieżąco.

Poniżej kod, zamieszczam go nie tyle po to by ktoś zamieścił ten licznik tam za mnie, a raczej po to by jasne było o co mi chodzi.

 

 

 

#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
typedef unsigned short USHORT;
HANDLE g_handle;
void SetPos(USHORT x,USHORT y)
{
  COORD cp = {x,y};
  SetConsoleCursorPosition(g_handle,cp);
}

int main()
{
int przedzial,proby,poprawne=0,niepoprawne=0,bledy=0;//Zmienne okreslone konkretna nazwa (zmienne liczb ktore sa w dobrym miejscu itp.).
int los[5],moje[5],nieodpowiednie[5],odpowiednie[5];//"Nieodpowiednie"-tablica pomocnicza w ktorej zapisywane sa dane na temat liczb ktore sa ale nie tam gdzie powinny, "odpowiednie"-tablica pomocnicza w ktorej zapisywane sa dane na temat liczb ktore sa tam gdzie powinny.
int i,j,w,k,c,z;//Zmienne nie okreslone konkretna nazwa (petle itp.).
char inne,zlecenie, pow;//Zmienne typu "char".
float czas;//Zmienna potrzebna do mierzenia czasu.

g_handle = GetStdHandle(STD_OUTPUT_HANDLE);
srand(time(0));
clock_t start, stop;
cout<<"Witamy w Super Hacker(Gra zainspirowana gra Super Master Mind z 1972r.)."<<"\n"<<"Sam ustal do ktorego skarbca chcesz sie wlamac."<<"\n"<<"Pamietaj ze ilosc zlota w skarbcu to przedzial liczb dzielony przez"<<"\n"<< "ilosc mozliwych prob, jezeli uda ci sie zlamac szyfr"<<"\n"<<"w 7 probach to wynik zostanie pomnozony przez 30*."<<"\n";
cout<<"*Tylko dla zaawansowanych szyfrantow, zakres>4."<<"\n";
SetPos(0,10);
for (i=0;i<5;i++)
{
	odpowiednie[i]=0;
	nieodpowiednie[i]=0;
}
tak:

cout<<"Jak duzy przedzial liczb ma zawierac tajny szyfr?"<<"\n";
cin>>przedzial;
cout<<"W ilu probach go zlamiesz?"<<"\n";
cin>>proby;
int szyfry[proby][5]; //Ta tablica wyjatkowo pojawia sie nie w wierszu 10, poniewaz zimenia sie w zaleznosci od ilosci mozliwych prob, a gdy jest wczesniej wariuje.

if (przedzial==0||proby==0)
{
	cout<<"Szukam odpowiedniego zlecenia";Sleep(1000);cout<<".";Sleep(1000);cout<<".";Sleep(1000);cout<<"."<<"\n";
	cout<<"Niestety, w naszej bazie danych nie ma takiego zlecenia"<<"\n";
	cout<<"Chcesz podjac sie innego?t/n"<<"\n";
	zlo:

	inne=getch();

	switch (inne)
	{
 	case 116:
 	{
  	goto tak;
  	break;
 	}
 	case 110:
 	{
goto nie;
  	break;
 	}
 	default:
 	{
  	cout<<"Zly klawisz, prosze wybrac t/n"<<"\n";
  	goto zlo;
     	break;
 	}
 }
}

cout<<"Szukam odpowiedniego zlecenia";Sleep(1000);cout<<".";Sleep(1000);cout<<".";Sleep(1000);cout<<"."<<"\n";Sleep(1000);
cout<<"Przechwytuje dane";Sleep(1000);cout<<".";Sleep(1000);cout<<".";Sleep(1000);cout<<"."<<"\n";

start=clock();

for (i=0;i<5;i++)
{
	los[i]=rand()%przedzial;
}
for (i=0;i<proby;i++)
{
 if (i>0)
 {
  cout<<"Chcesz zobaczyc swoje poprzednie szyfry?t/n"<<"\n";

  pow=getch();

  switch (pow)
  {
zlo2:

case 116:
{
	for (c=0;c<i;c++)
	{
 	cout<<"Szyfr nr."<<c+1<<" to ";
 	for(z=0;z<5;z++)
 	{
  	cout<<szyfry[c][z]<<" ";
 	}
 	cout<<endl;  
	} 
break;
}   
case 110:
  	{    
   	break;
  	}
  	default:
  	{
   	cout<<"Zly klawisz, prosze wybrac t/n"<<"\n";
   	goto zlo2;
      	break;
  	}
  }
 }
	for (j=0;j<5;j++)
	{  
    	cout<<"Podaj "<<j+1<<" liczbe szyfru!"<<"\n";
    	cin>>moje[j];       
	}
	for (j=0;j<5;j++)
	{
  	szyfry[i][j]=moje[j];
	}
 for (j=0;j<5;j++)
 {
 	if (los[j]==moje[j])
 	{
     	poprawne++;
     	odpowiednie[j]=1;
 	}
 }
 for (w=0;w<5;w++)
 {   for (k=0;k<5;k++)
 	{
     	if (moje[w]==los[k]&&odpowiednie[k]==0&&k!=w&&odpowiednie[w]==0)
         	{
             	if (nieodpowiednie[k]==1)
             	{
                 	continue;
             	}
          	nieodpowiednie[k]=1;
          	niepoprawne++;
          	break;
         	}
 	}
 }
 if (poprawne==5)
 {
  stop=clock();
cout<<"Sprawdzam zgodnosc";;Sleep(500);cout<<".";Sleep(500);cout<<".";Sleep(500);cout<<"."<<"\n";
	cout<<"Wylaczam alarm";Sleep(300);cout<<".";Sleep(300);cout<<".";Sleep(300);cout<<"."<<"\n";
 	cout<<"Alarm zostal wylaczony, skarbiec sie otwiera."<<"\n";
 	break;
 }
 if (poprawne!=5)
 {
 	cout<<"Sprawdzam zgodnosc";Sleep(500);cout<<".";Sleep(500);cout<<".";Sleep(500);cout<<"."<<"\n";
 	cout<<"Dobrze ustawionych liczb jest "<<poprawne<<"."<<"\n"<<"Pojawiajacych sie ale nie w odpowiednim miejscu liczb jest "<<niepoprawne<<"."<<"\n";

  niepoprawne=0;
 	poprawne=0;
 }
 for (w=0;w<5;w++)
 {
 	nieodpowiednie[w]=0;
 	odpowiednie[w]=0;
 }
 	bledy++;
}

if (i==proby)
{
	cout<<"Alarm niespodziewanie sie uruchomil, zostales zlapany!"<<"\n";
}

if (poprawne==5)
{
	if (bledy<7 && przedzial>4)
	{
 	czas=(stop - start);
    	cout<<"Uciekasz i nikt poza toba nie wie kto ukradl "<<((float)przedzial/(float)proby)*30<<" kg zlota."<<"\n";
    	cout<<"Czas który na to potrzebowales to "<<czas<<"ms"<<"\n";
	}
 else
 {
  czas=(stop - start);
  cout<<"Uciekasz i nikt poza toba nie wie kto ukradl "<<(float)przedzial/(float)proby<<" kg zlota."<<"\n";
 	cout<<"Czas który na to potrzebowales to "<<czas<<"ms"<<"\n";
 }
}

cout<<"Czy chcesz podjac inne zlecenie?t/n"<<"\n";

zlecenie=getch();

switch (zlecenie)
	{
 	case 116:
 	{
  	goto tak;
  	break;
 	}
 	case 110:
 	{
goto nie;
  	break;
 	}
 	default:
 	{
  	cout<<"Zly klawisz, prosze wybrac t/n"<<"\n";
  	goto zlo;
     	break;
 	}
 }

 nie:

	cout<<"Zapraszam wiec w innym terminie";
getch();
}

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...