Wideo: https://vid.me/PWcl
Dzień następny. Jak widać dodałem skrzynki, gracza, kolizje między skrzynkami, graczem i murami. Punkt startowy gracza, jak i skrzynek jest wczytywany z pliku. Pozostało dorobić miejsca docelowe dla skrzynek, wykrywanie czy skrzynka jest na jednym z nich, dorobić kilka map i można mówić o ukończonej prostej grze.

Mój tag: #leinnanblends

#gamedev #cpp #programowanie #sfml
Leinnan - Wideo: https://vid.me/PWcl
Dzień następny. Jak widać dodałem skrzynki, gra...

źródło: comment_0yZ3tmZ1B1zQ5fVrwSSfisUljRsijgVJ.jpg

Pobierz
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Czemu funkcja wolnorynkowa z biblioteki algorithms w Cpp nazywa się __gcd() zamiast gcd()? Ktoś potrafi wyjaśnić dlaczego na początku jej nazwy stoją podkreślenia i to jeszcze dwa?

#programowanie #cpp
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

__ to zwyczajowo internale i nazwy zastrzeżone. Nie stanowi publicznego api i nie masz gwarancji, że w następnej wersji będzie dostępne.
  • Odpowiedz
Mam taką sytuację (bez strachu, kilka linijek tam jest i proste ale na Wykopie mało przejrzyście): http://pastebin.com/U5B9NTd1

No i teraz:
1) Czy usunięcie MyClassB spowoduje wywołanie tak destruktora MyClassB, jak i MyClass czy muszę się jakoś odwołać z destruktora MyClassB do MyClass, np. funkcją MyClass::del() w każdym z destruktorów?
2) Czy usunięcie MyClassA spowoduje wywołanie destruktora MyClass, czy też muszę uczynić destruktor MyClass wirtualnym żebym to się stało?

#cpp #
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@lionbest: ten void* to tam sobie dodałem tak tylko dla przykładu. zresztą, delete na staticcast(this->voidptr) już ma sens. ale dziękuję za odpowiedź. :)
  • Odpowiedz
@Dijuna: Generalnie to tak jak masz napisane to powinieneś mieć virtual przy destruktorze, żeby działało zawsze (w MyClass). Dopóki nie pokażesz więcej kodu trudno powiedzieć co się stanie.
  • Odpowiedz
#cpp #naukaprogramowania
Napisałem pewną klasę odpowiadającą za wyświetlanie tekstu na ekranie.
Mam jednak pewien problem. W klasie mam tego typu metody które dodają znaki przekonwertowane na string do bufora:

friend TextOut & operator<<(TextOut & TO, std::string & text) {...}
friend TextOut & operator<<(TextOut & TO, char * text) {...}
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ifinox: zacznijmy od tego że przyjmuje std::string to nie char*, to są dwa różne typy. Jeśli wywołujesz operator<< z obiektem string, teoretycznie można wykorzystać zarówno zadeklarowaną funkcję jak i template, ale w takim przypadku zwykła funkcja ma pierwszeństwo.
Jeśli wywołasz operator<< z obiektem innego typu, kompilator nie będzie w stanie użyć funkcji więc wykorzysta (a przynajmniej jeśli typ parametru mu na to pozwoli) template. wewnątrz template użyłem funkcji to_string która
  • Odpowiedz
@czarn1y: Jeśli zadanie jest sformułowane tak jak napisałeś, to jest idiotyczne, bo nie można przeciążać typu zwracanego.

Natomiast ogólnie możesz to zrobić w ten sposób:
int foo(char a, char& out);

Częsta praktyka w C. Funkcja zwraca status jako int, a wynik jej działania zapisywany jest do zmiennej przekazanej przez referencję do funkcji.
  • Odpowiedz
bo nie można przeciążać typu zwracanego.


@Strus: no nie do końca, w przeciążonej funkcji typ zwracany może być różny. ale dedukcja, która z przeciążonych funkcji powinna być wywołana, bazuje na typach przekazanych parametrów. więc nie da się przeciążyć TYLKO typu zwracanego, ale można to zrobić zmieniając również listę parametrów.
@Acrivec:
  • Odpowiedz
Mirki, mam tablicę:

double tab[10][5][30]


i powiązane z tą tablicą wyrażenie tab [6][4], które według rozwiązania oznacza:

6
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Lux_Aeterna:
Masz tablicę dwuwymiarową, 10 rzędów, 5 kolumn; każda komórka zawiera 30 elementową tablicę. Wszystko jest numerowane od zera.
6 - tyle jest rządów przed Twoim
5 - tyle jest kolumn w każdym rzędzie
Komórka do której się odwołujesz jest oznaczona ×
Żółte komórki poprzedzają Twoją, jest ich 34, zatem Twoja jest 35. Zatem wołając tab [6][4] odwołujesz się do 30-elementowej tablicy znajdującej się w 35 komórce tablicy dwuwymiarowej
Romantycznywidelec - @LuxAeterna: 
Masz tablicę dwuwymiarową, 10 rzędów, 5 kolumn; k...

źródło: comment_tmI0rXMUYKbGJGME6ApyBJe5giaKF3DV.jpg

Pobierz
  • Odpowiedz
@czarnyzawias: Co masz na myśli pod konwersją? Tworzenie nowego obiektu?

operator konwersji:
explicit operator B();
definiujesz w A i tam tworzysz nową instancję B, ale musisz dodać stosowny konstruktor w B aby móc zanicjalizować ten obiekt.
  • Odpowiedz
Jest ktoś w stanie wskazać mi tu błąd? Głupie wczytywanie z pliku; pierwsza linijka w pliku zawiera wartość zmiennej cristalsAmount, reszta zawiera sobie wartości które wrzucam do tablic. Kod poniżej nie działa prawidłowo, wczytuje pierwszą linijkę OK, ale do tablic wczytuje jakieś bzdety bez sensu, tak jakby drugi raz od złego momentu czytał plik.
http://pastebin.com/hPRMETAL
#programowanie #cpp
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#naukaprogramowania #cpp Pytanie - czy jeżeli wyszukujemy,przykładowo w generowanej losowo tablicy liczb drugą największą i drugą najmniejszą liczbę to konieczne jest sortowanie całej tablicy, czy można to zrobić jakoś sprytniej ? Dziękuje z góry :>
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@sorhu: odpowiadam na zadane pytanie, k-tą największa zmienną można znaleźć sortując, lub wsadzając wszystkie liczby z tablicy do min (lub max) heapa, ale zakładam że nie o to chodziło OPowi
  • Odpowiedz
#csharp #cpp #programowanie

Mirki, jak to jest w mixed code w przypadku tych dwóch języków? Bo o ile przypadek używania C++ wewnątrz C# wydaje się być dosyć logiczny, bo C++ to native i odpalenie dllki z managed code nie powinno być problematyczne nawet na chłopski rozum. Ale co się dzieje w sytuacji odwrotnej? Bo widziałem wczoraj u nas w firmie takie rozwiązanie. Na jakimś prastarym C++
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Khaine: Można przekonwertować C++ na C++/CLI kompilując kod C++ przy pomocy Visual studio z użyciem flagi /clr (ale tu nie jestem pewny czy kod nie wymaga drobnych przeróbek przed taką kompilacją). Wtedy można wywołać dowolną .netowa dllke w C++ (tak samo jak C++/cli w c#)
  • Odpowiedz
Mam strukturę, która zajmuje 716 bajtów i plik w którym jest zapisane n takich struktur. No to bardzo latwo mozna policzyć ile jest wpisów w tym pliku. Zrobiłem dynamiczną tablice o rozmiarze takim ile ilość wpisów i dla każdego wskaźnika zarezerwowałem miejsce na wpis.

Teraz chcę te wszystkie struktury z pliku wczytać za jednym razem

file.read((char*)buf, sizeof(struktura)*record_num))

Nie
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@MrOsamaful: napisz od razu jak. Czasami gdy szukam jakiegoś rozwiązania to trafiam na coś w stylu:

tutaj identyczny problem co mój. Litera w literę

Post niżej:

nvm, poradziłem sobie

A ja wtedy klnę na głos :D
  • Odpowiedz
@xan-kreigor: trzeba uzyc sieci neuronowej (tyle ze siec bedzie, nomen omen, białkowa) - twoja aplikacja uzywajac wykopapi wrzuci obrazek na mirko z tagami cebuladeals i programowanie, potem pobierasz komentarze jak w trescu komentarzy bedzie slowo "anime" lub "gowno" to znaczy ze obrazek jest anime
  • Odpowiedz
Taki fragment kodu znaleziony gdzies w projekcie ( ͡° ͜ʖ ͡°)

if(x == 0)
{
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach