c++ statki

0

Mam do napisania grę "statki" na planszy 10x10 w konsoli oczywiście. Bez żadnych skomplikowanych klas i ich metod. Otóż nie mam pomysłu na to, jak ustawić statki komputera, w sposób losowy aby niebyły na ukos i się nie stykały. Z racji, że kod ma być prosty, myślałem o takim czymś(dla czteromasztowca - jednego):
1.) losuje literę A-J i liczbę 1-10 - X-wylosowana
2.) losuje liczbę 1-2: - Y - wylosowana
(1) losuj 1-7 switch() case 1 to x1,x2,x3,x4 case 2 x2,x3,x4,x5 case 3 x3,x4,x5,x6 ...
(2) if x>=D i x<=G wylosuj 1-2 switch() case 1 xy,x+1 y,x+2 y,x+3 y case 2 xy,x-1 y,x-2 y,x-3 y
if x<D to xy,x+1 y,x+2 y, x+3 y
if x>G xy,x-1 y, x-2 y, x-3 y
Dla trójmasztowca, położenie będzie zależne od wyboru czteromasztowca, bo nie mogą się stykać więc będzie trzeba rozważyć więcej możliwości, nie będę ich pisał, bo moje pytanie brzmi czy taki, prosty sposób losowania ułożenia statków komputera może być czy jest za długi i nieczytelny. Można prościej ? czy tak jest w miarę o.k ?

1

Klasy by Ci tutaj bardzo pomogly, ale jak wolisz. Jak dla mnie dobrym sposobem mogloby byc losowanie najpierw polozenia pierwszej "czesci" statku, a potem losujesz jedynie od 1-4 kierunek w ktorym bedzie stal i dalej juz ustawiasz go tak jak wylosowalo.. Musisz zapewnic jedynie aby przy sprawdzaniu kolejnych pol w zaleznosci od polozenia statku nie zetknal sie on z innym lub nie wyszedl poza kraniec mapy, to wystarczy zmienne bool. W klasie by to bylo prostsze bo bys mial statek i plansze jakby dane pole bylo zajete to odpowiednia metoda klasy Ci moze zwrocic Od razu true/false.

Sposobow bedzie wiele, tak mi na szybko wpadlo do glowy cos takiego.

0

dzięki za pomoc, trochę się wystraszyłem tego ale jakoś idzie.
Mam pytanie, może pokaże, będzie lepiej widać:

for (int i=0; i<5; ++i)
   {     
        cout<<"podaj wsplrzedne x(poziomo),y(pionowo) dla czteromasztowca"<<endl;
        cin>>x1>>y1;
        gotoxy(x0+x1,y0+y1);
        cout<<"4";
        x1=0,y1=0;
   }

Funkcja gotoxy() wrzuci mi na odpowiednie miejsce to co chcę, ale potem druga pętla, mianowicie jej napis wyświetla się od tego miejsca gdzie przeszło gotoxy(), czy jest sposób aby kursor wrócił w miejsce pierwotne, w sensie aby napis był tam gdzie za pierwszym razem ?

0

musisz użyć bardziej zaawansowanych bibliotek jak np. nCurses

0

nCurses nie jest w linuksie ?
no musi być jakiś sposób... zawsze jest alternatywa ...

1 użytkowników online, w tym zalogowanych: 0, gości: 1