[C++] Gra "Wieża"

 
Napisz nowy tematOdpowiedz do tematu    Forum programistyczne Programmers Zone Strona Główna -> Pokaż się!
Autor Wiadomość
Leogict
~user




Dołączył: 21 Lut 2009
Posty: 152


PostWysłany: 15-01-10 18:28 Zacytuj zaznaczone Odpowiedz z cytatem

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
Zobacz profil autora Wyślij prywatną wiadomość Numer GG Jabber
timpler
+Przyjaciel P-ZONE




Dołączył: 13 Mar 2008
Posty: 762
Skąd: Wrocław
Pomógł: 51

PostWysłany: 15-01-10 23:10 Zacytuj zaznaczone Odpowiedz z cytatem

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
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email Odwiedź stronę autora Numer GG
Leogict
~user




Dołączył: 21 Lut 2009
Posty: 152


PostWysłany: 16-01-10 02:30 Zacytuj zaznaczone Odpowiedz z cytatem

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
Zobacz profil autora Wyślij prywatną wiadomość Numer GG Jabber
aduch
~user




Dołączył: 05 Sty 2008
Posty: 161
Skąd: Krk
Pomógł: 20

PostWysłany: 16-01-10 02:40 Zacytuj zaznaczone Odpowiedz z cytatem

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 Wink
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
Zobacz profil autora Wyślij prywatną wiadomość Numer GG
Na'vi
~user




Dołączył: 08 Lut 2010
Posty: 38


PostWysłany: 09-02-10 21:30 Zacytuj zaznaczone Odpowiedz z cytatem

Gratuluje napisania tak fajnej gry Wink

Dodaj tylko legende i będzie git, bo tak to niezabardzo wiadomo o co kaman Very Happy

_________________
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Wyświetl posty z ostatnich:   
Napisz nowy tematOdpowiedz do tematu    Forum programistyczne Programmers Zone Strona Główna -> Pokaż się! Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
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

Mapa
Powered by phpBB © 2001, 2005 phpBB Group

 Polecane strony