Skocz do zawartości

Konrad-GM

Użytkownicy
  • Postów

    2 728
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    44

Treść opublikowana przez Konrad-GM

  1. Tak, Draw GUI jest od rysowania HUDa i innych elementów niezależnych od zmian perspektywy ani pozycji 'kamery'. Zatem niezależnie od view_xview,view_yview, w evencie Draw GUI rysuje się pod X,Y przyjmując 0,0 jako lewy-górny róg ekranu. GML draw_text(5, 5, string(health));
  2. Konrad-GM

    Warlocks

    Nie no, ta gra to kozacko się zapowiada... Pro wręcz. :D
  3. Konrad-GM

    Drobny problem.

    Nie lubię tego rozwiązania od twórców borlandowego "conio". Bo nie indeksuje pozycji kursora od '0', co dla języka C/C++/etc jest rzeczą naturalną i powszechnie stosowaną, odwrotną co do Pascalowego '1'.
  4. Konrad-GM

    Specyfikatory

    "Delta = %\lf" - Kompilator C++ ma tendencje aby backslashe w łańcuchach zmieniać na inne znaki względem tego układu: http://msdn.microsoft.com/en-us/library/6aw8xdf2.aspx
  5. Eclipse moim zdaniem do C++ nijak się nie nadaje. Jest pamięciożerną kobyłą, można niekiedy się zniechęcić do niego. Code::Blocks (polecam nightly builds), tak jak Dev-C++, jest lekki i oba są zaopatrzone w kompilator MinGW (do C::B nightly builds trzeba ściągać osobno). Visual co prawda też po instalacji nie potrzebuje dodatkowego oprogramowania, ale chyba twórcy bardziej celują w technologię .NET i C# zatem różnice między Visual C# a Visual C++ są spore. :)
  6. puNowaTablica = NULL; delete[] puNowaTablica; Wywal to całkiem. O,o Usuwanie wskaźnika na 'nullptr' nie daje żadnego efektu. Więc ta część kodu w ogóle nie jest potrzebna.
  7. Przybrałeś zły sposób na iterowanie po danych w tablicy, konkretnie chodzi o: puTablica[uIndeks1 * uIndeks2]. Tak nie może być. :) Jeżeli chcesz użyć liniowej metody dostępu do adresu pamięci w postaci 2-wymiarowej tablicy blablabla, musisz daną pozycję Y pomnożyć przez "szerokość" tablicy aby wyznaczyć wiersz, i dodać "przejście" X po komórkach: puTablica[uIndeksY*muRozmiarX + uIndeksX] Proponuję zmienić konwencję kodowania, gdyż ciężko "to" się czyta... To taka moja luźna propozycja. :) Tak samo jak zasada ze zmiennymi 'n' (ilość), jak i 'i' (pozycja). Z X/Y-ami postępuje się podobnie. X-y podawaj na początku argumentów, Y jako drugi. #EDIT: Proponuję abyś jeszcze raz zbadał metodę cInt2dArray::ChangeRozmiar, możesz być niemile zaskoczony. Konkretnie chodzi o delete[] puNowaTablica;
  8. Główny problem, przez który Twój kod nie działa to: Nie ustalasz wartości w tablicy, z tego co widzę nie używasz (nigdzie) metody cIntArray::SetWartosc. Ale zauważyłem kilka niedociągnięć... Domyślny konstruktor nie tworzy tablicy intów, mimo że mDOMYSLNY jest równy 5.
  9. Mi osobiście podoba się szachownica(2) :)
  10. 8D Gratuluję sukcesów z grą ;) Czekam na następną część, powodzenia!
  11. Cóż, zagrałem w każdą część, i przyznam że każdy epizod trzyma poziom :) Ciekawa historia, wciągająca fabuła. W najnowszej części Memories bardzo podoba mi się motyw z rysunkami. Podziwiam za pomysł, cała seria zdecydowanie zasługuje na 5/5 ;)
  12. Konrad-GM

    Top Hat

    Wszystko fajnie i wgl. Ale ogień który wydaje pocisk to chyba standardowy efekt GMa, może coś bardziej "rozpixelowanego" tam wstawić można? :P
  13. Konrad-GM

    [C++]Tekstowe "GUI"

    Ładnie opisane znajduje się to na MSDN: http://msdn.microsoft.com/en-us/library/wi...5(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/wi...1(v=vs.85).aspx Zapewne nie ustawiasz odpowiedniego trybu konsoli.
  14. Konrad-GM

    [C++]Tekstowe "GUI"

    Źródła tej "biblioteki" są dostępne. Wykorzystuje WinAPI, którego dokumentację znajdziesz pod tym linkiem. Forum jest do wymiany swoich spostrzeżeń jak i wiedzy. Gdybyś miał z czymś problem, pisz na forum. W miarę możliwości nie tylko ja będę mógł Ci pomóc. ;) Polecam zapoznać się z takową funkcją: WriteConsoleOutput
  15. GM8 raczej obsługuje DLLe, zatem powinno zadziałać ;) Możesz też przeszukać tę bibliotekę: http://www.gmtoolbox.com/
  16. Konrad-GM

    [C++]Tekstowe "GUI"

    https://github.com/konrad92/libconsole Nie jest to jakoś szczególnie rozbudowana biblioteka - raczej zabawka. Możesz zmienić rozmiar konsoli poprzez: void ConsoleSize( unsigned short width, unsigned short height ) const { SMALL_RECT windowSize = { 0, 0, width - 1, height - 1, }; SetConsoleWindowInfo( stdOutputHandle, true, &windowSize ); SetConsoleScreenBufferSize( stdOutputHandle, *((COORD*)&width) ); // show/hide cursor CONSOLE_CURSOR_INFO curInfo = { 100, !m_hideCursor }; SetConsoleCursorInfo( stdOutputHandle, &curInfo ); } A podział, obiekty i "okienka" to nic innego jak generowanie interfejsu przez wyjście. Np. żeby zmienić pozycję kursora: unsigned short x = 0, y = 0; SetConsoleCursorPosition( stdOutputHandle, *((COORD*)&x) ); I nie zapomnij o jednym... HANDLE stdOutputHandle = GetStdHandle( STD_OUTPUT_HANDLE ); Przed dokonywaniem zmian na konsoli potrzebujemy wskaźnika na jego wyjście ;p
  17. Mam nadzieję że wiesz co to znaczy LOD? Generuj teren "dynamicznie" - im dalsza część siatki terenu tym rozleglejsze plane'y. A modele stwórz w kilku poziomach LOD, i wywołaj rysowanie odpowiedniego np. względem odległości kamery od obiektu. Możesz też zainteresować się Ultimate3D. Fully automatic generation of levels of detail
  18. Ważne że w ogóle wygląda ;D Grafik ze mnie marny, także raczej cudów się nie należało spodziewać ;p
  19. Mockup do mojego projektu: Gra w planach, ma być to nietypowy TD.
  20. O Borze... :) class A { A(int v) { value = v; } int value; }; class B : public A { B() : A(10) { } }; Twój kod YXE tworzy nową instancję klasy A, sorry bro.
  21. Wstawiając jakąś grę na jakąkolwiek platformę ciesząc japę a później tylko narzekać - w sumie niewiele to zdziała. Nie ważne jaka by nie była ta gra, rzadkością jest "samoistne" wypłynięcie czegokolwiek. Nie jestem specem od marketingu (:)), ale chyba każdy wie że reklama to podstawa. :)
  22. Tak, wersja Pro z dokupionym exportem na androida. A tak poza tym to Java + Android SDK or Cpp + Android NDK :)
  23. Ok, rozwiązałem problem. Zmieniłem "createPattern>fillStyle>fillRect" na "drawImage". Już jest ok :) Dzięki temu: http://vaughnroyko.com/jsfiddle/nearest-neighbor.html presentViaDrawImage: function(canvas) { var ctx = canvas.getContext("2d"); ctx.scale(canvas.width/this.width, canvas.height/this.height); ctx.webkitImageSmoothingEnabled = ctx.mozImageSmoothingEnabled = ctx.msImageSmoothingEnabled = ctx.oImageSmoothingEnabled = ctx.imageSmoothingEnabled = false; ctx.drawImage(this.canvas, 0, 0); }
  24. Joł joł, spotkał mnie pewien problem - a mianowicie z "wyłączeniem" interpolacji przy rysowaniu skalowanego elementu w przeglądarce Mozilla Firefox. Otóż aby osiągnąć styl rozpikselowania używam dwóch canvasów. Jeden ukryty, odpowiada za wstępne rysowanie a'la "backbuffer". Drugi zaś jest kilkakrotnie (4x) większy niż jego poprzednik. Aby skopiować zawartość pierwszego płótna, używam coś takiego: present: function(canvas, smooth){ var ctx = canvas.getContext("2d"); ctx.scale(canvas.width/this.width, canvas.height/this.height); ctx.webkitImageSmoothingEnabled = ctx.mozImageSmoothingEnabled = ctx.msImageSmoothingEnabled = ctx.oImageSmoothingEnabled = ctx.imageSmoothingEnabled = false; ctx.fillStyle = ctx.createPattern(this.canvas, 'no-repeat'); ctx.fillRect(0, 0, this.width, this.height); } Gdzie: this - to obiekt który posiada zmienną "canvas", która z kolei służy do przechowywania ukrytego elementu canvas. canvas - to element canvas który jest tym "frontbufferem", naszym celem. W Chromie działa ok, ale Firefox skalując traktuje obrazek interpolacją. A to wygląda już tak: Chrome: Firefox: Czy znacie może jakieś efektywniejsze sposoby aby osiągnąć skalowanie przy braku interpolacji? (nearest neighbor) A może istnieje rozwiązanie tego problemu dopisując pewne części non-standard? Skalowanie ma się odbywać co klatka (30/60 fps). Także kopiowanie całości poprzez getImageData/putImageData odpada. Pozdrawiam, Konrad-GM
×
×
  • Dodaj nową pozycję...