Witam.
Niedawno zacząłem uczyć się języka C++. Zacząłem robić prosty program, lecz w pewnym momencie napotkałem na błąd. Wszystko odbywa się poprzez konsolę, zrobiłem ekran logowania i wszystko działało, ale stwierdziłem, że fajnie byłoby, gdyby hasła nie było widać. Za pierwszym razem wszystko działa, ale przy próbie ponownego wpisania hasła (jeśli poprzednie było błędne ) można wpisać tylko login i program od razu stwierdza, że hasło jest niepoprawne. Dzieje się tak, także podczas uruchomienia programu w trybie Release, tylko tu od razu. Większość pisałem samemu używając różnych for itp. Komentarze dodałem sobie dla utrzymania porządku i łatwiejszej orientacji.
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <conio.h>
#include <time.h>
#include <cstdio>
#include <iomanip>
#define _WIN32_WINNT 0x0500
using namespace std;
string login, nr;
string strPass = "";
int powtorzenia, i(4), t, wynik ;
int cntStar;
HANDLE hOut;
void PIK (string txt)
{
cout<<txt;
Sleep(t);
for(int a=0; a<txt.size(); a++)
cout<<"\b \b";
}
int main()
{WYSWIETLANIE:
{ //LOSOWE LICZBY
srand(time(NULL));
t=rand()%4300+500;
}
{LOGIN: //ETAP LOGOWANIA
i=i-1;
{hOut= GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hOut, FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED);
cout<<endl<<" Login: ";
cin>>login;
cout<<" Haslo: ";
{
char c;
int StarNum = 0;
while (c != 13)
{
c = (char)getch();
if(c == 13){ break; }
if(c == 8)
{
strPass = strPass.substr(0, strPass.length() -1);
StarNum--;
cntStar = StarNum;
system("cls");
while (cntStar > 0){ cout << "*"; cntStar--;}
}
else
{
StarNum++;
strPass += c;
cout << "*";
}
}
}
system("break");
while(true)
{
if(GetAsyncKeyState(13))
{
if ((login=="Proskate") && (strPass=="programtest")) //SPRAWDZANIE POPRAWNOSCI LOGINU
{i=3;
goto ZALOGOWANO;}
else
goto NIEZALOGOWANO;
}
}
cin>>strPass;
}
}
{ZALOGOWANO: //ETAPY W MOMENCIE ZALOGOWANIA
{
hOut= GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hOut, FOREGROUND_BLUE);
cout<<endl<<endl<<endl;
PIK(" Waiting for Server...");
PIK(" Connecting...");
PIK(" Checking Password...");
SetConsoleTextAttribute(hOut, FOREGROUND_GREEN);
PIK(" Password Accepted!");
system("cls");
system("cls");
goto MENU;
}
}
{NIEZALOGOWANO: //ETAPY W MOMENCIE NIEZALOGOWANIA //MENU PO ZALOGOWANIU
{
hOut= GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hOut, FOREGROUND_BLUE);
cout<<endl<<endl<<endl;
PIK(" Waiting for server...");
PIK(" Connecting...");
PIK(" Checking Password...");
SetConsoleTextAttribute(hOut, FOREGROUND_RED);
PIK(" Wrong Password!");
system("cls");
SetConsoleTextAttribute(hOut, FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSITY);
cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<" POZOSTALO CI "<<i<<" PROB.";
cout<<endl<<endl<<" Wcisnij ENTER, aby ponowic probe.";
{
for(; getch() != 13;); //CZY ENTER JEST NACISNIETY?
system("cls");
if (i<1) //ZAMKNIECIE PO 3 PROBACH
exit (0);
goto LOGIN;
}
}
}
{MENU: //MENU PO ZALOGOWANIU
{cout<<endl<<" 1.Fanpage."<<endl;
cout<<" 2.Blender."<<endl;
cout<<" Wybierz numer: ";
cin>>nr;
{
if (nr=="1")
{cout<< ShellExecute(NULL, "open","https://www.facebook.com/proskategrafika/", NULL, NULL, SW_SHOWNORMAL);
system("cls");
cout<<endl<<endl<<endl<<endl<<" Powodzenie!";
Sleep(2000);
system("cls");
goto MENU;}
if (nr=="logout")
{system("cls");
cout<<endl<<endl<<endl<<endl<<" Wylogowano!";
Sleep(2500);
system("cls");
goto LOGIN;}
if (nr=="2")
{
cout<< ShellExecute (NULL, "open", "steam://rungameid/365670", NULL, NULL, SW_SHOWNORMAL);
system("cls");
cout<<endl<<endl<<endl<<endl<<" Powodzenie!";
Sleep(2000);
system("cls");
goto MENU;
}
}
}
return 0;
}
}