Ja na Twoim miejscu najpierw zrobiłbym sobie tablicę która będzie odpowiednikiem klawiatury, np. tak:
#include
const short PION = 4;
const short POZIOM = 10;
int main()
{
using namespace std;
char tab1[PION][POZIOM] = {
{ '1', '2', '3', '4', '5', '6', '7' },
{ 'q', 'w', 'e', 'r', 't', 'y', 'u' },
{ 'a', 's', 'd', 'f', 'g', 'h', 'j' },
{ 'z', 'x', 'c', 'v', 'b', 'n', 'm' },
};
cout << "Klawiatura - podgląd" << endl;
cout << "| " << tab1[0] << " | "<< endl;
cout << "| " << tab1[1] << " | "<< endl;
cout << "| " << tab1[2] << " | "<< endl;
cout << "| " << tab1[3] << " | ";
return 0;
}
Oczywiście nie jest do końca wypełniona i idealnie nie odzwierciedla układu, ale do Twojego pomysły powinno wystarczyć. Potem losujesz sobie znak z tej tablicy i porównujesz go z wprowadzonym przez kogoś znakiem. Jak się zgodzi to sprawa prosta. Jak nie, to już troszkę trudniej. Musisz napisać kod, który najpierw sprawdzi gdzie w tablicy znajduje się wprowadzona litera (znak) a potem ustalić w jakim kierunku od wylosowanego się znajduje. Koledzy programiści na pewno znajdą jakieś bardziej wydajne i prostsze rozwiązanie, ale do tego czasu możesz spróbować tego pomysłu. ---------EDIT----------------- Nie mogę spać więc skleiłem takie coś. Co prawda nie ma zabezpieczenia przed wpisywaniem kilku liter na raz oraz przed podaniem innych znaków niż dozwolone.
#include
#include
#include
using namespace std;
const short PION = 4;
const short POZIOM = 11;
//Funckja losuje znak z klawiatury w zaleznosci od poziomu
//nalezy podac wybrany poziom w formie liczby calkowitej oraz referencje do zmiennych calkowitych
void losuj(int poziom, int &k, int &w )
{
srand( time( NULL ) );
switch (poziom)
{
//poziom latwy - same male litery
case 0:
k = (rand()%3)+1;
switch(k)
{
case 1:
w = rand()%10;
break;
case 2:
w = rand()%9;
break;
case 3:
w = rand()%7;
break;
}
break;
//poziom normalny - male litery i cyfry
case 1:
k = rand()%4;
switch(k)
{
case 0:
w = rand()%10;
break;
case 1:
w = rand()%10;
break;
case 2:
w = rand()%9;
break;
case 3:
w = rand()%7;
break;
}
break;
default:
cout << "Wybrales zly poziom! Automatycznie przydzielilismy poziom latwy." << endl;
k = (rand()%3)+1;
switch(k)
{
case 1:
w = rand()%10;
break;
case 2:
w = rand()%9;
break;
case 3:
w = rand()%7;
break;
}
break;
}
}
int main()
{
int poziom;
//zmienne przechowuja numer kolomny i wiersza wylosowanego znaku z tabeli
int k=0,w=0;
cout << "Wybierz poziom: " << endl
<< "[0] Latwy" << endl
<< "[1] Normalny" << endl
<< "Wybor: ";
//sprawdzenie czy wpisano cyfre
while(!(cin>>poziom))
{
cin.clear();
cin.sync();
}
//wywolanie funkcji losujacej
losuj(poziom,k,w);
//zmienne przechowuja wylosowany znak (x) oraz znak wprowadzany przez użytkownika
char x,in;
//zmienne przechowujace numer kolumny i wiersza wprowadzonego znaku w tabeli
int wyb_k, wyb_w;
//zmienna przechowuje liczbe prob
int licz=0;
//tabela imitujaca klawiature
char tab1[PION][POZIOM] = {
{ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', },
{ 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p' },
{ 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l',char(59)},
{ 'z', 'x', 'c', 'v', 'b', 'n', 'm',char(44),char(46),char(47) },
};
cout << "Klawiatura - podglad" << endl;
cout << "| " << tab1[0] << " | "<< endl;
cout << "| " << tab1[1] << " | "<< endl;
cout << "| " << tab1[2] << " | "<< endl;
cout << "| " << tab1[3] << " | "<< endl;
x = tab1[k][w];
cout << x << endl;
do
{
cout << "Zgadnij znak" << endl;
cin >> in;
for (int i=0; i
{
for (int j=0; j
{
if (tab1[i][j] == in)
{
wyb_k = i;
wyb_w = j;
}
}
}
if (!(wyb_k==k))
{
if (wyb_k < k) {cout << "Nizej" << endl;}
else {cout << "Wyzej" << endl;}
}
if (!(wyb_w==w))
{
if (wyb_w > w) {cout << "W lewo" << endl;}
else {cout << "W prawo" << endl;}
}
licz++;
}
while (!(x==in));
cout << "BRAWO! Udalo Ci sie za: " << licz << " razem!" << endl;
return 0;
}