Witam, napisałem ten kod poniżej i skompilowałem do programu konsolowego.
To jest taki mój testowy kod dla gierki strategicznej. Trzeba tam wybrać pole podając koordynaty X oraz Y. Pola są zmiennymi typu int, które mogą reprezentować puste pole (0) lub pole z numerem pionka (1-25).
Jak to powinno działać?
Kiedy wybiorę int area[x][y] wpisując koordynaty, program sprawdza wartość tego pole. Jeśli jest puste (0), program wyświetla mi błąd i powtarza pytanie o koordynaty. Jeśli wartość jest od 1 do 25, program sprawdza puste pola dookoła tego wybranego i prosi mnie o wybranie pustego pola obok, do którego ma przenieść się mój pionek.
Jak to aktualnie działa?
Jeśli wybiorę area[x][y], program informuje mnie o błędzie niezależnie od tego, czy wybrane pole wynosi 0, czy 1-25.
Z góry dzięki za pomoc. :)
Poniższy kod:
#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <time.h>
#include <stdio.h>
#include <iomanip>
#include <conio.h>
using namespace std;
int area[15][15];
int armour[15][15];
int damage[15][15];
int soldier[5];
int vehicle[5];
int tank[5];
int cannon[5];
int rocket[5];
int counter, i, x, y;
bool up;
bool down;
bool l;
bool r;
bool lup;
bool rup;
bool ldown;
bool rdown;
int main()
{
for (counter = 0; counter <= 4; counter += 1)
{
soldier[counter] = counter + 1;
vehicle[counter] = counter + 6;
tank[counter] = counter + 11;
cannon[counter] = counter + 16;
rocket[counter] = counter + 21;
}
for (x = 0; x <= 14; x += 1)
{
area[x][13] = 1;
}
for (x = 0; x <= 2; x += 1)
{
area[x][14] = 6;
}
for (x = 3; x <= 4; x += 1)
{
area[x][14] = 11;
}
for (x = 5; x <= 6; x += 1)
{
area[x][14] = 16;
}
area[7][14] = 21;
for (x = 8; x <= 9; x += 1)
{
area[x][14] = 16;
}
for (x = 10; x <= 11; x += 1)
{
area[x][14] = 11;
}
for (x = 12; x <= 14; x += 1)
{
area[x][14] = 6;
}
for (y = 0; y <= 14; y += 1)
{
if (y < 10)
{
cout << "| Y" << y << " |";
}
else
{
cout << "| Y" << y << " |";
}
for (x = 0; x <= 14; x += 1)
{
if (area[x][y] < 10)
{
cout << "| " << area[x][y] << " |";
}
else
{
cout << "| " << area[x][y] << " |";
}
}
cout << endl;
}
cout << endl << " ";
for (x = 0; x <= 14; x += 1)
{
if (x < 10)
{
cout << "| X" << x << " |";
}
else
{
cout << "| X" << x << "|";
}
}
cout << endl << endl;
for (y = 0; y <= 14; y += 1)
{
for (x = 0; x <= 14; x += 1)
{
if (area[x][y] = 0)
{
armour[x][y] = 0;
damage[x][y] = 0;
}
else if (area[x][y] >= 1 && area[x][y] <= 5)
{
armour[x][y] = area[x][y];
damage[x][y] = area[x][y];
}
else if (area[x][y] >= 6 && area[x][y] <= 10)
{
armour[x][y] = (area[x][y] - 6) * 2;
damage[x][y] = (area[x][y] - 6) * 2;
}
else if (area[x][y] >= 11 && area[x][y] <= 15)
{
armour[x][y] = (area[x][y] - 11) * 3;
damage[x][y] = (area[x][y] - 11) * 3;
}
else if (area[x][y] >= 16 && area[x][y] <= 20)
{
armour[x][y] = (area[x][y] - 16) * 4;
damage[x][y] = (area[x][y] - 16) * 4;
}
else if (area[x][y] >= 21 && area[x][y] <= 25)
{
armour[x][y] = (area[x][y] - 21) * 5;
damage[x][y] = (area[x][y] - 21) * 5;
}
}
}
cout << "Choose area (X): ";
cin >> x;
cout << endl;
cout << "Choose area (Y): ";
cin >> y;
cout << endl << endl;
while (area[x][y] == 0)
{
cout << "ERROR! Chosen area can not be equal to 0!" << endl << endl;
cout << "Choose area (X): ";
cin >> x;
cout << endl;
cout << "Choose area (Y): ";
cin >> y;
cout << endl << endl;
}
if (area[x][y] > 0 && area[x][y] <= 20)
{
up = false;
down = false;
l = false;
r = false;
lup = false;
rup = false;
ldown = false;
rdown = false;
if (area[x][y-1] == 0)
{
up = true;
}
if (area[x+1][y-1] == 0)
{
rup = true;
}
if (area[x+1][y] == 0)
{
r = true;
}
if (area[x+1][y+1] == 0)
{
rdown = true;
}
if (area[x][y+1] == 0)
{
down = true;
}
if (area[x-1][y+1] == 0)
{
ldown = true;
}
if (area[x-1][y] == 0)
{
l = true;
}
if (area[x-1][y-1] == 0)
{
lup = true;
}
}
cout << "You can move: " << endl;
if (up == true)
{
cout << "up" << endl;
}
if (rup == true)
{
cout << "up right" << endl;
}
if (r == true)
{
cout << "right" << endl;
}
if (rdown == true)
{
cout << "down right" << endl;
}
if (down == true)
{
cout << "down" << endl;
}
if (ldown == true)
{
cout << "down left" << endl;
}
if (l == true)
{
cout << "left" << endl;
}
if (lup == true)
{
cout << "up left" << endl;
}
return 0;
}
Dodatkowe info:
Środowisko programowania: Code::Blocks v20.03
Język: C++
Kompiler: GNU GCC Compiler