Leogict Opublikowano 27 Listopada 2009 Zgłoś Opublikowano 27 Listopada 2009 Witam, napisałem w C++ grę w statki obiektowo. 1 gracz, komputer ustawia losowo statki a my strzelamy. Plansza: 16x16, rozmieszczanie statków: losowe (w dużej części udało mi się uniknąć krzyżowania i stykania statków), chociaż warunki na krzyżowanie i stykanie nie sa jeszcze idealne, sporadycznie programowi zdarza się stykać statki... Statki: 2 czteromasztowce i 2 trójmasztowce, więcej nie dałem ze względu na rozbudowane warunki dot. nie krzyżowania się statków każdego z każdym... Osobna klasa na maszty (każdy maszt wie, jakiego jest typu), plansze, 4-masztowce i 3-masztowce Gra działa pod Windowsem i Linuxem (wystarczy zmienić jedna zmienna boolowską - ta pod "using namespace...") Opcja testowania (widac statki) i gry (nie widać statków) - również zmiana jednej zmiennej na początku kodu. Graficzna sygnalizacja trafienia (zmiana znaku masztu na "o") oraz zatopienia statku (zmiana znaków w obrębie statku na "\" ) Zabezpieczenie przed wprowadzeniem złych współrzędnych. Program po każdym ruchu odświeża plansze i wypisuje ilość pływających statków. Warunek końca programu: wszystkie statki zestrzelone lub użytkownik wciśnie "0". Po zatopieniu wszystkich statków program wyświetla liczbę wykonanych ruchów (strzał 2 razy w to samo pole traktowany jest jako 2 ruchy itd). Numerowanie linii w pionie i poziomie. Szansa na trafny strzał: ok. 5,5% (obsadzenie planszy: 14/256 pol) Szczątkowy polimorfizm. Kod: http://wklej.org/id/217640/ Binarka: http://www.sendspace.pl/file/1860026a91867a9452c7f1b (skompilowane pod kątem Windowsa, na Linuxie wyświetlanie może się rozjeżdżać - trzeba by przekompilować ze zmianą zmiennej w 27 linii kodu). Czekam na opinie :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Drainer Opublikowano 28 Listopada 2009 Zgłoś Opublikowano 28 Listopada 2009 (edytowane) Leogict napisał(a): (skompilowane pod kątem Windowsa, na Linuxie wyświetlanie może się rozjeżdżać - trzeba by przekompilować ze zmianą zmiennej w 27 linii kodu). #ifdef linux//kod dla linuxa#else//kod dla nielinuxa#endif tablice wskaznikow usuwa sie przez delete []: plansza::~plansz(): // ... delete [] wsk[i]; // ... tablice masztow } delete [] wsk; // ... i tablice tablic if(!Linux) system("pause"); ja bym calosc pocial jeszcze na kilka plikow, ale to ja edit: mozna by jeszcze zrobic klase 'gra' i wsadzic tam pancernik Orzel, Jastrzab; // dwa cztermosztowcetorpedowiec Hawk,Eagle; // dwa trojmasztowce funkcje, i ten kod z maina, zastapic np statki.graj(); Edytowane 28 Listopada 2009 przez Drainer Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...