[#1] Ogolne zagadnienie programistyczne - jak napisac mordobicie
Chce napisac mordobicie w stylu Mortal Kombat. Moje pytanie brzmi: czy da sie to jakos napisac strukturalnie czy latwiej bedzie obiektowo. Jeszcze nie myslalem jak moglaby wygladac struktura takiej gry a chce wiedziec czy jak zaczne pisac strukturalnie w C to po dlugim czasie nie dojde do wniosku ze to jednak lipa i nic z tego nie wyjdzie. Natomiast jestem cieniutki z programowania obiektowego wiec nie chce sie porywac z przyslowiowa motyka na przyslowiowe slonce. Jakies rady?

[#2] Re: Ogolne zagadnienie programistyczne - jak napisac mordobicie

@Lorak, post #1

Po pierwsze - w ramach rekompensaty od C++ w C również można stosować coś na kształt klas z metodami. Używa się w tym celu np. adresy funkcji zawarte w zmiennych, więc jeśli zaczniesz pisać w C to po dłuższym czasie nie rozczarujesz się.

Po drugie - polecam Ci książki o C++ lub po prostu programowanie proceduralne. Tracisz tylko abstrakcyjne środowisko (klasy, metody, dziedziczenie itp.) znane z C++, ale w C łatwo można to zastąpić.
np.
klasyczne C:

struct Warrior
{
int strength; // sila wojownika
int hittype; // rodzaj biezacego ciosu
};

własności C++: Metody działają na zmiennych klasy.

class Warrior
{
private: // dane prywatne
int strength; // sila wojownika
int hittype; // rodzaj biezacego ciosu
public: // akcesory publiczne
void damage(int dmg); // oslabienie wojownika
void attack(int type); // przeprowadzenie ataku
};

C z wskaźnikami do funkcji. W przeciwieństwie do C++ te elementy muszą być zainicjowane i mogą być modyfikowane. W C++ po prostu definiujemy jedną funkcję - metodę na stałe przypisaną do klasy poprzez:
void Warrior::damage(int dmg) {}

struct Warrior
{
int strength; // sila wojownika
int hittype; // rodzaj biezacego ciosu
void (*damage)(int dmg);
void (*attack)(int type);
};

Masz jakieś dodatkowe pytania?
Pozdrawiam



Ostatnia modyfikacja: 04.05.08 17:56
[#3] Re: Ogolne zagadnienie programistyczne - jak napisac mordobicie

@Minniat, post #2

ogolnie to sciagnij sobie jakies kody zrodlowe gier na poczatek jakies proste zebys za szybko sie nie zniechecil a co do pisania to tylu ilu jest programistow tyle jest rozwiazan
[#4] Zlew na misia. /bt

@SzaryWilk, post #3

.
[#5] Re: Zlew na misia. /bt

@Daclaw, post #4

Ostrzeżenie od moderatora i 48 godzin ostrzegawczego bana. Totalny offtopic i próba zatrollowania.

[#6] Re: Ogolne zagadnienie programistyczne - jak napisac mordobicie

@Lorak, post #1

Kurde, przyznam się szczerze, że programuję już sporo latek. Nie jestem w tym dobry, ot, przeciętnie-dobry, niewybitnie błyskotliwy ale pomysłowy i ambitny choć te ambicje to mógłbym se w kieszeń włożyć :P. Od dłuższego czasu siedzę w PHP, wcześniej był AmigaE trochę, więcej Blitz2, trochę Amosa, komodowych bejzoli wszelakich. Nie ważne.. Powiedzmy, że potrafię sobie wyobrazić dany projekt, gdy go piszę, choćby praca nad zawiłym Ondorr Drakmo. I wiesz co, Lorak? Ja nie wiem czy ja to piszę obiektowo czy strukturalnie? Jest późno, popatrzyłem na Wikipedię.. nie kumam tego za bardzo w odniesieniu do własnych projektów. Dajcie mi przykład pisania pod PHP obiektowo i strukturalnie a powiem Wam jaka ze mnie programistyczna lama :).

Loraku, gdybym miał pisać mordobicie, zrobiłbym to tak:

1)
każdy przeciwnik opisany w osobnym pliku, system odczytuje dane takie jak prędkość, specjalne ciosy, wygląd, energię czy co tam, defence

2)
pole walki to oczywiście też jakieś bitmapy

to wszystko podpięte jest do silnika więc silnik wie jakie są postaci i pola walki.

Teraz samo w mordę bicie:
każdy cios to oczywiście osobna funkcja, jeżeli robimy kombinację klawiszy w jakiejś kolejności, za każdym naciśnięciem klawisza sprawdzane jest w funkcji (nazwijmy ją sequence() ) np: 5 ostatnich naciśniętych klawiszy. Jeżeli ułożą się w kombinację to następuje wywołanie zdarzeń w if-ach. If może prowadzić do funkcji jakiegoś ciosu, np: bigpig() bądź po prostu być zagnieżdżonym w tej funkcji sequence() pod ifami. Ja chyba strukturalnie programuję, sobie uświadamiam to ale nie wiem tego do końca :). To coś jak GOTO!!

To czy wygramy czy nie, sprawdzane jest po każdym uderzeniu poszczególnego jegomościa (my/przeciwnik):

If ($yourhp-$hit<=0){
gameover();
}

Sory, że po angielsku, ale nie lubię pisać zmiennych, etc. po polsku, bue :)

Ruchy przeciwnika/nasze to przerwania w pętli programu taktowane jakimś czasem milesekund. No jakaś pętla musi być.

Oczywiście to wszystko jest oczywiste, ale ja to tak sobie wyobrażam :). BASIC na całego, co nie? :)



Ostatnia modyfikacja: 08.05.08 00:25
[#7] Re: Ogolne zagadnienie programistyczne - jak napisac mordobicie

@BagoZonde, post #6

Chciałbym opisać różnicę między programowaniem proceduralnym i obiektowym:

Programowanie strukturalnie i proceduralnie to działanie na strukturach i procedurach globalnych (wszystkie zmienne oraz procedury są dostępne z dowolnego miejsca w programie)

struct moja_struktura
{
int moja_zmienna;
} egzemplarz;

moja_zmienna jest dostępna od zewnątrz.

void dzialaj_na_mojej_strukturze()
{
struct moja_struktura *egzemplarz_2;
egzemplarz_2 = malloc(sizeof (struct moja_struktura));
egzemplarz_2->moja_zmienna = 123;
egzemplarz.moja_zmienna = 456;
...
free(egzemplarz_2);
}

powyższą funkcję można wywołać z dowolnego miejsca w programie

Programowanie obiektowe to programowanie na klasach, w których zmienne składowe i procedury składowe (tzw. metody) są dostępne tylko lokalnie dla klasy, chyba że są typu public: i dostępne od zewnątrz.

class moja_klasa
{
private:
int moja_zmienna; // moja_zmienna prywatna - dostęp przez akcesor
public:
void ustaw_moja_zmienna(int); // publiczny akcesor do moja_zmienna.
} egzemplarz;

By dostać się do zmiennej moja_zmienna trzeba użyć publicznego akcesora w tej klasie, przykład akcesora poniżej:

moja_klasa::ustaw_moja_zmienna(int i)
{
moja_zmienna = i;
}

Jak widać wszystkie zmienne i procedury (zwane metodami) są zawarte lokalnie w klasie tworząc obiekt lub rzecz.

Pisz śmiało jak coś nie jest jasne. Polecam książkę "C++ dla każdego" wydawnictwa Helion.



Ostatnia modyfikacja: 08.05.08 20:03
[#8] Re: Ogolne zagadnienie programistyczne - jak napisac mordobicie

@Minniat, post #7

Acha.. Rozumiem ale w sumie jeżeli o mordobicie chodzi, czy ma to jakieś znaczenie? W tym przypadku chyba zależy jak kto woli pisać..

Lorak, kiedy zaczniesz "szarżować">? Nie mogę się doczekać choćby próbek..

pozdrawiam alles!!



Ostatnia modyfikacja: 09.05.08 01:36
[#9] Re: Ogolne zagadnienie programistyczne - jak napisac mordobicie

@BagoZonde, post #8

jesli chodzi o mordobicie to mozesz to napisac jak chcesz,w mordobicu najlepiej podzielic postac na nogi glowe tulow rece i kazda z tych czesci ciala stworzyc za pomoca osobnych spritow i teraz musisz tylko wykryc ktory sprit zetknal sie z ktora czescia ciala przeciwniki itd
[#10] Re: Zlew na misia. /bt

@Grzegorz Kraszewski, post #5

> Totalny offtopic i próba zatrollowania

Nie, to wyraz frustracji polaczonej z gestem znanym szerzej jako "no rece opadaja", w odpowiedzi na blyskowtliwe porady Szarego... ;)

[#11] Re: Zlew na misia. /bt

@Grzegorz Kraszewski, post #5

yeah

[#12] Re: Zlew na misia. /bt

@_arti, post #10


Hmm, tak, po więcej "konkretnych" informacji można się udać na:



http://www.arturgrala.webpark.pl/



[#13] Re: Zlew na misia. /bt

@Hugen, post #12

tam za duzo niema,niestety z glupoty wiekszosc moich prac i danych stracilem i teraz pracuje nad tym zeby to wszystko od nowa zrobic,ale nie za bardzo mi sie chce za stary jestem he he he.A z tym mordobiciem to powaznie pisalem ja wlasnie w ten sposob napisalem takie male mordobicie gdzie wojownicy byli podzieleni na sprity glowy tulowia rak i nog i wtedy wystarczylo tylko sprawdzic ktory duszek zetknal sie z ktorym i bylo wiadomo jak np jak duszek jednego wojownika reki zetknal sie z glowa drugiego to wtedy odejmowales energie temu drugiemu itd.
[#14] Re: Zlew na misia. /bt

@Hugen, post #12

Gość normalnie wymiata jeśli chodzi o swoją wiedzę!
Tyle języków i technologii które zna, tyle wiedzy ile posiada!
Czapki z głów!

;)

[#15] Re: Zlew na misia. /bt

@MinisterQ, post #14

Ciągniecie panowie offtopica. Proszę tę dyskusję kontynuować w HydeParku.

[#16] Re: Ogolne zagadnienie programistyczne - jak napisac mordobicie

@BagoZonde, post #8

Lorak, kiedy zaczniesz "szarżować">? Nie mogę się doczekać choćby próbek..
Oj chyba jeszcze daleka droga... Dopiero nauczylem sie wyswietlac grafike. Na razie mam 3-planowe scrollowan tlo, prymitywna animacje i pare p****** w stylu Fade In i innych bajerow. Teraz patrze czy bedzie dzialalo to to z muzyka. Ale wciaga to pisanie jak cholera. Pewnie polegne jak bede mial przygotowac grafike dla postaci ale na razie i tak musze sprobowac zrobic jakis silnik. Pozdr..:)

[#17] Re: Ogolne zagadnienie programistyczne - jak napisac mordobicie

@Lorak, post #16

No to poproś ludzi o zbiórkę społeczną w formie przekazywania grafiki, muzyki, etc. Takie małe open source Autorzy wykorzystanych elementów staną się współtfurcami
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem