-
Postów
781 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez Will
-
Jest to funkcja, która wywołuje się co jakiś czas. np w jakiejś fixed pętli, która sprawdza czy jakiś client nie chcę się połączyć. Jeśli napiszesz wersje z event'ami działa to na zasadzie pętli komunikatów w winapi. Zapewne zrobiłeś to w standardowy sposób, który opisałem na początku więc -1 oznacza, że żaden client nie chcę się połączyć w danej "chwili". edit: Oczywiście sam system wywoływania co jakiś czas musisz napisać sam. Trzeba też przed tym ustawić socket na nasłuchiwanie.
-
Pisząc najprościej: Kiedy używasz #include preprocessing wkleja całą zawartość z .h do danego cpp. Pliki .h to pliki z deklaracjami a cpp z definicjami danych funkcji, klas itd(teoretycznie) Zgodnie z oryginałem zaincluduj pliki .h W twoim przypadku potrzebujesz jeszcze dorzucić bibliotekę/i(undefined reference wyraźnie to pokazuje). Powinno to być gdzieś w: Project->Build options...->Linker settings Dodaj tam wymagane biblioteki"lib'y". Jeśli masz np np dll o nazwie 39dll.dll szukaj czegoś podobnego np: 39dll.lib czy jeśli są wersje debug: 39dll_d.lib. edit: Musisz jeszcze zapewne dodać ścieżkę, szukaj czegoś jak: Linker settings>>Link Libraries Jak będziesz mieć problem ze znalezieniem poszperaj w necie.
-
Film jest na podstawie książki. A "przeniesienie" jest nieźle zrobione(w filmie nie wiem, nie oglądałem) i nie dotyczy samej Grecji ale to już trzeba przeczytać.
-
Dobra.. ale co w związku z tym? Najpierw to trzeba nauczyć się podstaw języka, potem rozwiązywać problemy a dopiero potem rozwiązywać problemy w optymalny sposób. Po co komu zejście z kwadratówki skoro na samej pamięci straci przykładowo na jedną alokacje(pokazał gdzieś wcześniej) 2 context-switch'e+całość na stringach jeszcze a o miss'ach nie wspominając. Ten tekst pasuje do kogoś kto już wie co piszę i jest na etapie gdzie problemem nie jest samo rozwiązanie tylko dostatecznie szybkie rozwiązanie, które zmieści się w czasie.
-
Wszystko wydaje się ciężkie dopóki się tego nie pozna. Poznaj podstawową teorie grafów i zrób jakieś najprostsze testy. Jeśli to lubisz pobawisz się grafami kilka dni i zrozumiesz. Najlepsza metoda to książka albo wpisać w google teoria grafów(różne tego wariacje) i czytać wszystkie wprowadzenia. W końcu trafi się takie , które zrozumiesz.
-
W przypadku algorytmów wystarczy logiczne myślenie, podstawowa znajomość struktur danych i obeznanie z najpowszechniejszymi algorytmami. Tu nie tyle chodzi o wbicie do głowy miliona elementów tylko odpowiednie podejście. To jest po prostu problem, który trzeba rozwiązać: a) dzieli się go na mniejsze części b ) rozwiązuje poszczególne party, który "wyszły" z podziału c) skleja w całość na jakimś pseudokodzie d) przerzuca na kod c++/java/c# itd Pierwsze 3 części nie mają nic wspólnego z kodem żadnego języka, po prostu trzeba znaleźć rozwiązanie, która "niszczy" dany problem w najmniejszej ilości kroków.
-
W krótkich programach widać na oko, w większych prosty warstwowy profiler szybko pokaże co trzeba poprawić.
-
Zapewne w jakimś tam stopniu można ale zasada 80-20 wychodzi i takie optymalizowanie nie ma po prostu sensu bo zysk jest bliski zeru.
-
Wybrałeś taki przykład gdzie nie bardzo jest co optymalizować. Pętle to pętle, wiadomo, że jak walniesz dostateczną ilość przejść to będą działać wolno i to żadna nowość.
-
Ok, w takim razie jaki jest warunek zakończenia tej funkcji? Nie ma go, będzie się zapętlać w nieskończoność więc jak to ma działać? Zakładając, że: Wykona się maksymalną ilość 150: 150 razy malloc! i to w pętli a najważniejsza zasada to: "Keep heap allocations to a minimum, and never allocate from the heap within a loop" Potem przy każdym porównaniu 3 przypisania. Skorzystaj z tablic statycznych. Zrób jedną na dane a drugą dla indeksów, porównuj dane a modyfikuj tablice indeksów. Potem przy wypisywaniu: cout<<dataArray[indexArray ]; Wtedy zamiast 3 przypisań, które mogą składać się z setek elementów masz 3 przypisana zwykłych liczb. Nie wiem jak działa funkcja porównująca string'a ale napisz swoją dla tablicy char i sprawdzaj oczywisty wariant jak długość sekwencji czy co tam jeszcze wymyślisz żeby ograniczyć liczbę porównań. E: Jeśli masz tylko liczby i mieszczą się w jakimś long long czy co tam oferuje twój kompilator o największej pojemności to oczywiście z tego skorzystaj a nie baw się w tablicę.
-
else { if (zmiana==true) { zmiana=false; sort(); } } } To się wykona jak x==nn-1 więc co dalej chcesz sortować? temp=n[x]; n[x]=n[x+1]; n[x+1]=temp; zmiana=true; Dlaczego wybierasz najwolniejszą wersję jaką zna świat?
-
Trudno pomóc w zadaniu, które sami nie potrafimy rozwiązać. Można tylko przeszkodzić. Nikt z tego forum nie dałby rady napisać mmorpg a sama umiejętność rzeczywistej oceny własnych możliwości jest bardzo cenna i oszczędza sporo czasu.
-
Odpuść sobie :) Napisać prostą grę przez sieć można, napisać mmorpg nie. Test: Napisz ponga przez sieć i to powinno Cię nauczyć dlaczego nie masz szans.
-
Zadanie: Napisz ten kod w ide i checknij disassembly window?
-
Poszukaj: Navigation Graph Generalnie w takim prostym przypadku całość nie jest zbytnio skomplikowana: budujesz sobie strukturę przechowującą sąsiadów+opcje według, których wybierasz najkrótszą ścieżkę a potem rzucasz na to A*.
-
Jak szukałeś książek musiałeś wybrać akurat tą,, która jest najgrubsza i najmniej dostępna? Tutaj masz dobrą na początek nawet cena poniżej 40 dych: http://selkar.pl/algorytmy_struktury_danyc...i_p_141781.html Na zawody w gim na pewno all co tam jest wystarczy a już w 100% nie będziesz jednym z tych, który "wymyślił" nową strukturę danych światu znaną jako lista.
-
Kup książkę o algorytmach bo wiedzę na ten temat masz zerową. Jeśli rzeczywiście zależy Ci na olimpiadzie jutro zasuwaj do sklepu.
-
Przede wszystkim sprawdzaj ile danych się wczytało i ile zapisało. np: plik.read(reinterpret_cast<char*>(tablica),sizeof(*tablica)); -> sizeof(*tablica) wczyta tylko jeden element. Tutaj jeszcze jakieś cuda wyczyniasz: tablica ->strTytul = "Suicide for dummies"; tablica ->strAutor = "Ktostam"; tablica ->intRok = 2532; Masz wskaźnik na tablice, nie na pojedynczy obiekt. Przykład poprawnego zapisu/wczytania: #include <iostream> #include <fstream> #include <string> using namespace std; struct book { char strTytul[256]; char strAutor[256]; int intRok; }; int main() { book* arr=new book[1500]; fstream plik("data.txt",ios::binary|ios::out); arr[5].intRok=3456; arr[7].intRok=345; arr[1234].intRok=12; plik.write((char*)&arr[0],1500*sizeof(book)); plik.close(); plik.open("data.txt",ios::binary|ios::in); book* arr2=new book[1500]; plik.read((char*)&arr2[0],1500*sizeof(book)); cout<<"5: "<<arr2[5].intRok<<"\n"; cout<<"7: "<<arr2[7].intRok<<"\n"; cout<<"1234: "<<arr2[1234].intRok<<"\n"; delete []arr; delete [] arr2; int k=0; cin>>k; } Zmienione dane po wczytaniu są tam gdzie powinny czyli działa, rozpisać już możesz sobie sam.
-
Pomyśl, jak możesz tak zapisywać strukturę, która ma taką budowę? To nie jest POD więc nie ma prawa działać. Użyj takiej: struct Book { char tytul[256]; char autor[256]; int rok; }; edit: oczywiście kod ma więcej błędów, przede wszystkim trzeba sprawdzać co zwraca nam dana funkcja. Np: plik.read(reinterpret_cast<char*>(tablica),sizeof(*tablica)); Zapewniam Cię, że to nie będzie działać tak jak tego oczekujesz(o ile dobrze zrozumiałem co chcesz tu zrobić).
-
Nie wiem czy jest brzydka bo nie widziałem :) Wyraźnie napisałem: "(nie piszę o sytuacji gdzie team robi za free)". Jeśli robi się wspólnie na "jedno konto" to sprawa wygląda zupełnie inaczej i taka współpraca jest znacznie lepsza.
-
Co to niby jest? Takie coś to sobie można użyć do przesyłania danych na lokalu dla zabawy. Pewnie nie zrozumiałeś tematu ale nikt zapewne nie pisał o takich podstawach podstaw i równie dobrze się to nadaje do gier multi jak kartonowy walec do prac przy budowie drogi.
-
Znajdź mi grafików, którzy za tysiaka zrobią modele/tekstury do całej gry(co najwyżej kilka modeli). Za te kilka tysięcy, które opisujesz to nawet prostej komercyjnej platformówki nie zrobisz a nawet nie wyjdziesz z fazy design'u(nie piszę o sytuacji gdzie team robi za free).
-
Za taką kasę może dostać co najwyżej jakiś syf. mmo to nie tylko przesyłanie sobie paczek i jest git. Chyba, że za mmo uznajemy gry na kilkanaście graczy. Wystarczy poszukać gotowej biblioteki: http://www.jenkinssoftware.com/index.html Byłby idiotą jakby zabulił tysiaka za coś co i tak mu się nie przyda.