Krzywilk Napisano Maj 14, 2013 Zgłoś Share Napisano Maj 14, 2013 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 More sharing options...
Jason Napisano Maj 15, 2013 Zgłoś Share Napisano Maj 15, 2013 http://cpp0x.pl/kursy/Kurs-New-Curses-C++/19 Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.