Kolejny raz zmieniłem warunek na:
for(int m=1;m<=n;m++)
{
if(i==p[m].x && j==p[m].y)
{
cout.width(4);
cout << "[#]";
continue;
}
}
Tym razem wszystko wydaje się działać, gdyby nie to że powyższy kod tworzy nowe pole, a nie zmienia pustego tj. "[ ]". Poniżej zamieszczam cały kod dla lepszego zobrazowania problemu.
#include <iostream>
#include "plansza.h"
using namespace std;
int main()
{
srand ( time(NULL) );
vector2 ruch;
char wybor;
cout << "MENU:\n";
ruch.tworzenie_planszy();
ruch.losowy_pkt();
losujPunkty2D(10, points);
czytajPunkty2D(10, points);
while(true)
{
cout << "1.Wyswietl wspolrzedne\n2.Przemieszczenie\n3.Ruch\n4.Wyjscie\n\n";
cin >> wybor;
switch(wybor)
{
case '1':
ruch.wyswietl_wspolrzedne();
break;
case '2':
ruch.podaj_wspolrzedne();
break;
case '3':
ruch.sterowanie(points);
break;
case '4':
return 0;
default:
break;
}
}
}
#ifndef PLANSZA_H_INCLUDED
#define PLANSZA_H_INCLUDED
#define rozmiar 10
using namespace std;
struct p2d;
class vector2
{
private:
int x,y;
public:
int pol_x, pol_y;
int wymiar;
int x_1, y_1;
int x_2[rozmiar],y_2[rozmiar];
char kursor;
bool deklaracja_pozycji;
////////////////////////////////////////////
void rysuj(p2d *);
void tworzenie_planszy(void);
void losowy_pkt(void);
void losowe_pkt(void);
void wyswietl_wspolrzedne(void);
void podaj_wspolrzedne(void);
void sterowanie(p2d *);
void wybor(void);
void nakladanie(void);
};
struct p2d
{
int x,y;
};
p2d points[10];
void losujPunkty2D(int wymiar, p2d *p)
{
for(int i = 0; i < wymiar; i++)
{
p[i].x = rand() % wymiar;
p[i].y = rand() % wymiar;
}
}
void czytajPunkty2D(int wymiar, p2d *p)
{
for(int i = 0; i < wymiar; i++)
{
cout << "Punkt[" << i << "] - X: " << p[i].x << ", Y:" << p[i].y << "\n";
}
}
void vector2::rysuj(p2d *p)
{
int k=0;
int n=wymiar;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
/* if(i==p[].x && j==p[].y)
{
cout.width(4);
cout << "[#]";
continue;
}*/
for(int m=1;m<=n;m++)
{
if(i==p[m].x && j==p[m].y)
{
cout.width(4);
cout << "[#]";
continue;
}
}
if(i==pol_x && j==pol_y)
{
cout.width( 4 );
cout << "[x]";
continue;
}
if(i==x_1 && j==y_1)
{
cout.width(4);
cout << "[o]";
continue;
}
cout.width( 4 );
cout << "[ ]";
}
cout << "\n";
}
}
void vector2::losowy_pkt(void)
{
x_1 = (rand() % wymiar) + 1;
y_1 = (rand() % wymiar) + 1;
}
void vector2::losowe_pkt(void)
{
for(int i=1;i<=rozmiar;i++)
{
x_2[i] = (rand() % wymiar) + 1;
y_2[i] = (rand() % wymiar) + 1;
}
}
void vector2::tworzenie_planszy(void)
{
cout << "Podaj rozmiar planszy:\n";
while(true)
{
cin >> wymiar;
if(wymiar <=18)
break;
else
cout << "Wymiar planszy nie moze przekraczac 18\n";
}
int plansza[wymiar][wymiar];
cout << endl;
}
void vector2::wyswietl_wspolrzedne(void)
{
cout << "x = " << x << endl;
cout << "y = " << y << endl;
}
void vector2::podaj_wspolrzedne(void)
{
deklaracja_pozycji = true;
cout << "Podaj wspolrzedne: x i y:\n";
cin >> x;
cin >> y;
pol_x = x;
pol_y = y;
rysuj(points);
if(pol_x==x_1 && pol_y==y_1)
nakladanie();
}
void vector2::sterowanie(p2d *p)
{
if(deklaracja_pozycji != true)
pol_x = 1,pol_y = 1;
rysuj(points);
cout << "Uzyj WSAD, by sie przemiescic. By zakonczyc wcisnij 'z;':\n";
while(true)
{
cin >> kursor;
wybor();
if(pol_x==x_1 && pol_y==y_1)
nakladanie();
for(int i=0;i<rozmiar;i++)
{
if(pol_x==p[i].x && pol_y==p[i].y)
nakladanie();
}
if(kursor == 'z' )
break;
}
}
void vector2::wybor(void)
{
switch(kursor)
{
case 's':
case 'S':
if(pol_x >=wymiar)
break;
pol_x=pol_x+1 ;
break;
case 'w':
case 'W':
if(pol_x <=1)
break;
pol_x=pol_x-1 ;
break;
case 'a':
case 'A':
if(pol_y <=1)
break;
pol_y=pol_y-1 ;
break;
case 'd':
case 'D':
if(pol_y >=wymiar)
break;
pol_y=pol_y+1 ;
break;
}
rysuj(points);
}
void vector2::nakladanie(void)
{
cout << "bazinga" << endl;
}
#endif // PLANSZA_H_INCLUDED