Skocz do zawartości

Rudy

Użytkownicy
  • Postów

    154
  • Dołączył

  • Ostatnia wizyta

O Rudy

  • Urodziny 16.03.1994

O mnie

  • Skąd
    wziął się Wszechświat?
  • Płeć
    Male
  • Adres www

Osiągnięcia Rudy

Minor User

Minor User (4/13)

0

Reputacja

  1. W Global Game Settings było jeszcze coś o skalowaniu w pierwszej zakładce pole do wpisywania liczb (nie pamiętam dokładnie). Jest tam 100? A jeżeli włączysz interpolate colors between pixels to obraz się rozmazuje? Jeżeli tak to mamy pewność że chodzi o położenie/rotacje/skalowanie.
  2. O to mi chodzi, podlicz skalowanie twojego obrazka krok po kroku. Na pewno tam użyłeś jakiegoś image_xscale, czy proporcji view/port, skoro masz taki efekt. Jeżeli masz jedne piksele obrazka większe od drugich to na 99% wynikiem będzie liczba z przecinkiem. Mozesz spróbować w ogóle usunąć skalowanie (tak żeby obrazek wynikowy był dokładnie taki sam jak sprite) i zmienić skalę tylko w jednym miejscu (o liczbę całkowitą). Problem powinien wtedy zniknąć.
  3. Twój sposób skalowania w efekcie daje proporcję z przecinkiem (czyli coś w rodzaju x2.2), nie wiadomo tylko gdzie (sprawdź opcje obiektu, proporcja view/port, jedna z głównych opcji (fullscreen, ratio itd) i przemnóż proporcje). W związku z tym co 5 pikseli jest skalowanie 3x, z kolei pozostałe to 2x. Jeżeli nie chcesz zmieniać skali, możesz zaznaczyć "interpolate color between pixels" i sprawa będzie załatwiona, tylko że efekt może nie pasować do twojej koncepcji gry.
  4. Rudy

    [C++] Nowa zmienna

    Czyli coś takiego (mniej więcej): enum eType { tUndefined, tLong, tLonglong, tFloat, tDouble, tLongdouble, tString }; class cCustomVar { private: void* var; string name; eType type; // musisz mieć gdzieś zapisany jaki to typ public: cCustomVar() : var(NULL), name(""), type(tUndefined) {} ~cCustomVar() { if (type != tUndefined) delete var; } bool Init(eType t, string n); bool Release(); }; bool cCustomVar::Init(eType t, string n) { if (type != tUndefined) return false; switch (t) { case tLong: var = new long; break; case tLonglong: var = new long long; break; case tFloat: var = new float; break; case tDouble: var = new double; break; case tLongdouble: var = new long double; break; case tString: var = new string; break; } name = n; return true; } bool cCustomVar::Release() { if (type == tUndefined) return false; delete var; name = ""; type = tUndefined; return true; } I tak dalej. Tylko wciąż się pytam po co? O ile samo stworzenie i kasowanie jest łatwe, to już przekazanie wartości może być trudniejsze (przeciążenie funkcji przypisania dla każdego typu i sprawdzenie jego poprawności z ustalonym). A pobranie? C++ nie wybierze odpowiedniej funkcji według zmiennej wewnątrz klasy. Dużo niepotrzebnej roboty, wokół problemu powstanie taka otoczka kodu, że nie wiem, czy cel i takie rozwiązanie jest tego warte.
  5. Rudy

    [C++] Nowa zmienna

    Z ciekawości. W jakim celu chciałbyś tworzyć zmienne o przypisywanych w trakcie gry nazwach? Przecież w kodzie to i tak wszystko jedno jaką mają nazwę (potem ona znika), a na "zewnątrz" możesz sobie po prostu dodać string to tej zmiennej i wyświetlać ją jako nazwę.
  6. Rudy

    Rogalik

    Funkcje, które mogą cie zainteresować: GetStdHandle SetConsoleCursorPosition SetConsoleTextAttribute ale warto rozejrzeć się też za innymi funkcjami. Co do sterowania to chyba wiesz, pod konsolę chyba najlepszy getch() z conio.h
  7. U mnie (w liceum) tak jest, mamy 4 języki, każdy z nich podzielony na 3 poziomy (podstawowy, zaawansowany, rozszerzony). Zapisujesz się na początku gdzie chcesz i już :) .
  8. Rudy

    Problem z pewną funkcją.

    Cóż, ja tak mam prawie z każdym poważniejszym błędem. Tylko trzeba jednak go szukać i siedzieć nad nim (albo obok niego :P ). A tak wogóle: błędy zostały już wymienione, wystarczy je naprawić.
  9. Rudy

    Problem z pewną funkcją.

    No to szybko się poddajesz, ile czasu spędziłeś nad tym kodem? Ile godzin myślałeś gdzie tu jest błąd (a ile zanim napisałeś o nim na forum). Programistą nie zostajesz, jeśli tylko nauczysz się składni jakiegoś języka.
  10. Rudy

    Problem z pewną funkcją.

    std::string * I = new std::string[(code.size())/2]; std::string * II = new std::string[(code.size())/2]; To nie jest przypadkiem alokacja tablicy stringów (a nie samego stringa)? Bo jeżeli tak to normalne, że: I[i] = code[i]; nie będzie działać, skoro I[] ma typ std::string, a code[] char. Druga sprawa to co Will powiedział, referencje w argumentach. Trzecia: for (unsigned int i = 0; i <= code.size()/2; i += 2) Oznacza skacz co dwa znaki do momentu aż osiągniesz połowę długości stringa. Czyli w stringach I i II znajdzie się ćwierć tekstu głównego. Chyba nie o to chodziło. Wg mnie musisz zmienić warunek na i < code.size(). Cztery: str.resize(code.size()/2); powinno przyśpieszyć działanie. W końcu klasa stringa wie ile tego będzie. Pięć: Tak jak Will powiedział, zmień w warunkach pętli <= na <, bo wychodzisz poza wielkość tablicy.
  11. Rudy

    Asembler i kompilacja

    Ostatecznie możesz skompilować program do exe'ka (ale musisz trochę nauczyć się o sekcjach i innych tego typu rzeczach). Exe'ki są 32b, więc działają na x64.
  12. Rudy

    Assembler

    jeżeli masz komputer x86 to spokojnie - ja pisałem i działało :) (generuje ci plik *.COM/*.BIN, nie *.EXE, chociaż potem i exe'ki nauczysz się generować). Jeżeli x64 to już gorzej, ale otwierając przez asmloader z drugiego kursu program powinien też zadziałać.
  13. Rudy

    Walki Robotów!

    Hmmm... dałoby radę zrobić coś w rodzaju mobilnego magazynu? Coś jak grabber, tylko z paroma miejscami na przedmioty. Albo na przykład budynek działający jak ten robot z tarczą ochronną.
  14. Rudy

    Assembler

    Znaczniki? Jeżeli mówisz o wskaźnikach, to są w C++, jeżeli mówisz o etykietach, to one i tak po asemblacji znikają (zamieniają się na adresy, czyli wskaźniki). A nadawanie bajtom wartości to nic innego jak nadawanie zmiennym wartości (lub - jeżeli chodzi ci o dowolną pozycję - nadawanie wartości przez wskaźnik). Większość da się zrobić działając na wskaźnikach w C/C++ :) . A jeśli chodzi o kursy: http://rudy.mif.pg.gda.pl/~bogdro/dos/index.php // kurs asm 16 i 32-bitowego dla DOS i Windows, znajdziesz tam listy prawie wszystkich operacji na asmie, opisany dla różnych asemblerów, jedynie co to nie jest tam wszystko dokładnie opisane. Kurs assembly 32 bitowego w formie wideo, dobrze i klarownie opisany, chociaż jeżeli cenisz sobie niezależność (wolność od niekoniecznych programów, pisanie w notatniku :) ) to początki mogą ci się nie podobać (kurs wyżej opisuje programowanie w asm tylko za pomocą notatnika i dowolnego asemblera)
  15. Saga Homeworld Wszystko we wszystkim, Start w jedynce, powrót na Kharak, pierwszy kontakt z wojownikami Kadesh, Historia wygnanych i najlepsze - lądowanie na ojczyźnie ;) potem dodatek Calaclysm, narodziny Bestii, jej ponowne przybycie po zmodernizowanej Matce, pierwszy kontakt z Naggarokiem, repulsor Normada... i oczywiście zakończenie :) Homeworld 2 - intro, pierwsze spotkanie z Bentusi, bitwa o Pancernik i jego pierwsze użycie przeciw najeźdźcom, potem zakończenie bitwy ze Strażnikami z Abbasid (wtajemniczeni wiedzą ;) ), oczywiście Wrota Balcory i bitwa o Sajuuka. I końcówka, wielka bitwa o Higaarę, przybycie zabójców planet, działo Sajuuka i ten cały ogrom :) . Każda z tych scen jest dopracowana w najdrobniejszych detalach. Muzyka, efekty dźwiękowe i wizualne, całe przedstawienie sceny wręcz wyreżyserowane jak w najlepszym filmie s-f :) .
×
×
  • Dodaj nową pozycję...