Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Jak zrobić funckję szczelania ?


Rekomendowane odpowiedzi

Opublikowano

zrób na timerach.

jeśli minie jakiś czas to uruchom animacje pocisku z cannona do celu. (na przykład trwającą 5-10 klatek w grze) i po jej zakończeniu zadawaj dmg objektowi w który miał cannon uderzyć

do zapisywania stanu animacji zrób sobie jakiś objekt, tablice

 

po wystrzale dodawaj do zmiennej OstaniaAnimacja++ i ustaw numer kroku animacji, pozycje startową, i końcową (za pomocą tego wyliczysz pozycje w danym kroku), i ewentualnie id objektu docelowego (jeśli ich id są zmieniane poodczas rozgrywki, to albo przy każdej zmianie przypisuj animacji je jeszcze raz albo znajdziemy inny sposób ), dmg też możesz zapisać. To będzie już nie tyle animacja co pocisk ;d odszedłem trochę od początkowej idei

jak się skończy np trzecia w tablicy (if (Animacje[3] >= 10)//animacja w fazie końca), to przenieś w jej miejsce ostatni element w tablicy i OstaniaAnimacja-- i zadaj dmg

Opublikowano

zrób np. pocisk, który leci z szybkością 5fps/s, i gdy będzie kolizja twojego modelu(strzału) z punktem b wtedy odejmij wartość, jeżeli punkt b posiada mesh, możesz zrobić punkty takie jak głowa ręka itd.

Opublikowano

zrobiłem sobie tablicę: int wyrzutnia[][1]; , w której będę przechowywał informacje o wyrzutniach takie jak hp (wyrzutnia [id][0]), ilość energi(wyrzutnia [id][1]), frame(wyrzutnia [id][2]) (czyli aktualna klatka pocisku) itd., tylko teraz nie wiem jak generować id, chcę aby znając pozycje działa znać id. więc muszę je jakoś generować na podstawie pozycji działa.Id musi być unikalne więc nie mogę sobie dodać pozycje i mieć id bo takie samo id będą mogły miec 2 działa :P

 

@up

mesh w grze defence, hmm dobry pomysł ! serio.Wtedy trzeba będzie inteligentnie ustawiać działa żeby celowały w głowę.

 

@edit

W grze jest 20x15 pól. Pozycję danego pola obliczam y=mouse_y/32 , tak samo z x. Więc na mapie mogę mieć max 300 rzeczy, więc id musi mieć 0-300.

Opublikowano
A x+x*y będzie dawać przy polu w prawym dolnym rogu wynik większy niż 300 (da 320)

nie widzę w tym problemu. to tylko id

 

Tylko wtedy gdzie ja będę przechowywał informacje o danym polu ?

tam gdzie aktualnie przechowujesz dane o polu

Opublikowano
tam gdzie aktualnie przechowujesz dane o polu

Ma dwu wymiarową tablicę map[y][x] i mogę w niej przechować tylko 1 liczbę. (a liczba ta to jest identyfikator danego przedmiotu czyli 1-wyrzutnia 2-jakaś wieżyczka itd.) No chyba że da sie utworzyć tablicę 3 wymiarową o czym ja nie wiem o.0

Opublikowano

prosze. tablica dziesięcio-wymiarowa

int tablica[2][2][2][2][2][2][2][2][2][2];

rób to na OOP, bo tak się zajebiesz

np.

class CMap
{
  struct SMapTile
   {
  int ID;
  int innevaluesjakies;
	};
  SMapTile Tile[20][15]; //albo jakiś define z rozmiarami
  int moze jakies map id;
CMap()
{
//konstruktor, możesz sobie ustawić(? nie wiem jak to sie profesjonalnie nazywa) zmiennym w tej klasie wartości poczatkowe
}
};
CMap Mapa;

 

jakoś tak sobie to wyobrażam. Nie wiem czy do końca poprawnie, OOP dopiero zaczynam powili lepiej i częściej wykorzystywać.

Opublikowano

@up

Ja tak samo, gdy uczyłem się C++ to pominąłem z 5 działów w ksiażce bo OOP wydawało mi się nie potrzebne. Ale teraz wiem że bardzo zwiększa przejrzystość kodu.

 

To z tą 3 wymiarową działa, ale nie da sie skojrzyć map[x][y][0] z iloscią hp a map[x][y][1] z framem xD(w głowie) Więc zrobię to teraz obiektowo.

Opublikowano
//konstruktor, możesz sobie ustawić(? nie wiem jak to sie profesjonalnie nazywa) zmiennym w tej klasie wartości poczatkowe

 

Przypisanie wartości. I nie, nie możesz w ciele konstruktora przypisać wartości początkowej (to jest: "zainicjalizować" lub "zdefiniować") zmiennym.

 

Możesz to zrobić wyłącznie ( dla nie-statycznych ) w liście inicjalizacyjnej konstruktora. Po zakończeniu pracy z listą inicjalizacyjną, wszystko, co dzieje się później, to wywoływanie operatorów przypisania (assingment).

 

class duza_klasa { 
duza_klasa() { inicjalizuj_obiekt_co_zajmie_10_minut(); } // domyślny konstruktor 
duza_klasa(int _i) { inicjalizuj_obiekt_zmienna_int_co_zajmie_11_minut(_i); } 
} 

class mala_klasa { 
duza_klasa o_obiekt; 
int x; 
mala_klasa(int _i) : x(_i) { o_obiekt = mala_klasa(1); } // zajmie CO NAJMNIEJ 21 minut. 1. (NIEJAWNA!) Inicjalizacja konstruktorem domyślnym (na etapie listy inicjalizacyjnej). 2. Stworzenie obiektu tymczasowego duza_klasa(1); 3. Wywołanie operatora przypisania duza_klasa& operator=(duza_klasa const&); 4. Usunięcie tymczasowego obiektu duza_klasa(1); 
mala_klasa() : o_obiekt(1) {}; // zajmie DOKŁADNIE 11 minut [ x zawiera jakieś śmieci ] -> duza_klasa o_obiekt zostanie zainicjalizowany dokładnie raz. 
}

 

I to jest ta różnica...

 

NATOMIAST, nie ma różnicy, czy typy prymitywne (int, char, unsigned, double, float, long long) są definiowane w liście inicjalizacyjnej, czy w ciele konstruktora ( tzn. standard wymaga, by nie było żadnej różnicy... z różnych własności ).

 

Zaleca się jednak używanie listy inicjalizacyjnej kiedy tylko jest to możliwe.

Ta sygnatura jest pusta.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...