| Autor |
Wiadomość |
Leogict ~user

Dołączył: 21 Lut 2009 Posty: 152
|
|
Witam, napisałem grę w C++ polegająca na dojściu od startu do mety.
Tryb tekstowy. Rozmiar planszy dowolny (ale może się krzaczyć wyświetlanie jak wpiszemy duży rozmiar planszy bo za małe okienko konsoli jest i brzydko to wygląda powyżej ok. 30). Program napisany obiektowo.
Plansza jest listą 4-kierunkową (np. pole wewnątrz planszy ma wskaźniki do lewego elementu, prawego, górnego i dolnego).
Sterowanie: WSAD, można wpisać całą sekwencję ruchów naraz (np sssdd oznacza 3 ruchy w dół i 2 w prawo), do gry dorobiłem drobną fabułę, przejścia między polami są punktowane (od każdego pola w 4 strony nie liczba skrajnych pól gdzie można iść w 2 lub 3 kierunkach). Jak wyjdziemy poza planszę, to game over. Jak 2 razy wejdziemy na to samo pole, to game over (jak w snake'u), ruchy w górę i w lewo są punktowane podwójnie (utrudnienie bo meta jest w prawym dolnym rogu i żeby zdobyć dużo pkt trzeba się trochę nakombinować).
Kod źródłowy
Binarka
Czekam na komentarze, oceny, uwagi, ogólnie chciałbym wiedzieć co robię źle, co można poprawić (może nie tyle w samej grze ale jeżeli chodzi o mój styl pisania bo wiem że jest daleki od ideału), będę bardzo wdzięczny za wszelkie wskazówki.
Pozdrawiam.
|
|
| Powrót do góry |
|
|
timpler +Przyjaciel P-ZONE
Dołączył: 13 Mar 2008 Posty: 762 Skąd: Wrocław Pomógł: 51
|
|
mysle ze moze przydac Ci sie ponizsza instrukcja ( uzyj jej w funkcji system) do zarzadzania wielkoscia okna konsoli, skoro wszyscy SIE UPARLISCIE do robienia gier tekstowych:
| Cytat: | | mode con:Cols=XX Lines=YY |
_________________ Pozdro.
Programista to osoba wytrwała psychicznie, dążąca do swojego celu i nie poddająca się! Nie każdy może nazywać się programistą, ja na szczęście mogę...
 |
|
| Powrót do góry |
|
|
Leogict ~user

Dołączył: 21 Lut 2009 Posty: 152
|
|
Kilka poprawek:
- poprawione odświeżanie (czyszczenie ekranu po każdym ruchu);
- dodane pułapki na 10% pól;
- zapętlenie gry;
Kod źródłowy
Binarka
|
|
| Powrót do góry |
|
|
aduch ~user
Dołączył: 05 Sty 2008 Posty: 161 Skąd: Krk Pomógł: 20
|
|
To znowu ja sie przyczepię =P
Dalej traktujesz klasę jak strukturę, nie ma tutaj w zasadzie enkapsulacji. Skorzystałeś z innego rodzaju upublicznienia (zaprzyjaźnienia - teoretycznie selektywny public). To klasa powinna zarządzać swoimi danymi, dostawać wejście i oddawać wyjście. Tutaj masz program proceduralny, z "klasa" która działa jak struktura z dodatkowym bajerem
no i korzystaj ze skrótów, po co :
wynik=wynik+pozycja->gora_wartosc;
jak można :\
wynik+=pozycja->gora_wartosc;
Do tego za duże switche, masz takie ogromne drabiny.
Albo po co :
| c++: |
kulka *lewo;
kulka *prawo;
kulka *dol;
kulka *gora;
int lewo_wartosc, prawo_wartosc, dol_wartosc, gora_wartosc; // wagi
|
jak można wygodniej to tablicować i mieć wygodniejsze funkcjonowanie :
| c++: |
enum DirId {
Lewo = 0,
Prawo,
Dol,
Gora,
DirNo
}
kulka *directions[4];
int wartosc[4];
|
Z taką strukturą łatwo przebudujesz całą konstrukcje switcha na mniejszą, pomyśl ;p
No i nie stracisz czytelnosci kodu jak będziesz chciał robić coś bezpośrednio :
kulka->directions[Gora] = NULL
Jak jeszcze nie pisałem to, koniecznie kup :
http://komputeks.pl/product_info.php/products_id/1624
Ważne żeby podtytuł był "wzorce projektowe", jedna z lepszych książek moim zdaniem =P
|
| Użytkownik otrzymał punkt pomocy za ten post. |
|
|
| Powrót do góry |
|
|
Na'vi ~user

Dołączył: 08 Lut 2010 Posty: 38
|
|
Gratuluje napisania tak fajnej gry
Dodaj tylko legende i będzie git, bo tak to niezabardzo wiadomo o co kaman 
_________________
 |
|
| Powrót do góry |
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
MapaPowered by phpBB © 2001, 2005 phpBB Group
|
|