Skocz do zawartości

Dawidds

Użytkownicy
  • Postów

    1 970
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Dawidds

  1. A po co Ci ta wiadomość : D ? Jak chcesz wynik zmiennoprzecinkowy to używaj "/", jak całkowity to "div". a div b = floor(a / b ) Jeśli już coś miało by być szybsze to div, ale nawet jeśli jest różnica to na tyle malutka że nie ma co tego liczyć. A na pewno nie w gmie.
  2. GML if(view_current == 0) { //rysujesz na pierwszym viewie } else if(view_current == 1) { //rysujemy na drugim }
  3. A co dokłądnie chcesz przechylać? Możesz narysować tego sprita jako dwa teksturowane trójkąty (primitivy), ale na przechyleniu czegoś takiego będzie widać "szew" - granicę między dwoma trójkątami. Aby się z tym uporać trzeba by podzielić to nie na dwa a na _wcholerę_ trójkątów, co nie dość że by było skomplikowane to by troszkę obniżyło fps, zwłaszcza jeśli chcesz więcej takich przechylanych spritów i jeśli są one duże. Także niby się da, ale łatwiej i wydajniej będzie jak sobie jakoś poradzisz bez tego.
  4. Ale co Ci tu nie gra, po co chcesz mieć jednocześnie dwa obiekty odpowiedzialne za motion blura?
  5. private void labels_MouseClick(object sender, MoueEventArgs e) { Label naciśniętyLabel = sender as Label; if(naciśniętyLabel != null) { label3.BackColor = naciśniętyLabel.BackColor; } } W "object sender" masz zawsze ten obiekt, który wywołał dane zdarzenie. Wystarczy tylko zrzutować ten obiekt na obiekt konkretnej klasy (w tym przypadku Label) i możesz go sobie spokojnie używać. A "sender as Label" różni się od "(Label)sender" tym, że to drugie w przypadku niemożności konwersji obiektu na ten konkretny typ wypluje wyjątek, wersja z "as" w przypadku problemu da po prostu nulla.
  6. GML draw_set_blend_mode_ext(bm_zero, bm_inv_src_color); //malujesz kwadracik draw_set_blend_mode(bm_normal); Kwacracik ma wyglądać jako zwykły czarny nieprzezroczysty sprite, i powinno Ci to wyczyścić obszar na którym narysowałeś ten kwadracik. A jak nie zadziała to spróbuj z całkowicie przezroczystym obrazem, bo nie jestem do końca pewien czy w tej sytuacji nieprzezroczysty = wyczyszczony surf a przezroczysty = surf pozostawiony bez zmian czy na odwrót : D
  7. Nie ma gotowego. GML using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication11 { class Program { static void Main(string[] args) { Random rand = new Random(); for (int i = 0; i < 20; i++) { Console.WriteLine(rand.Choose(new string[]{"X", " X", " X "})); } Console.Read(); } } public static class RandomExtension { public static string Choose(this Random random, string[] options) { return options[random.Next(options.Length)]; } } } Ed: A streing sobie możesz zamienić na object i będzie bardziej uniwersalne.
  8. Strzałka w górę jest obróconą strzałką w prawo, i jej cień też się obrócił (leci w górny prawy róg, a reszta "normalnie" w dolny prawy). Będą kredki?
  9. Ogólnie: lengthdir_x(len, dir) = cos(dir) * len lengthdir_y(len, dir) = -sin(dir) * len Tylko sobie załatw funkcje matematyczne do tego.
  10. Taka drobna nieistotna techniczna wskazówka - Create wykonuje się w momencie wywołania instance_create(), żadnego stepa ani żadnej milisekundy później. Wiem, że to dziwne, ale tak już jest i nic z tym nie możesz zrobić.
  11. Dawidds

    Samsung S3310

    Wrzuć sobie na uploader gmclanu i pobierz przez wifi. Nie mam pojęcia czy zadziała ale brzmi sensownie.
  12. Po prostu zamiast zmieniać pozycje punktu w który celujesz zmieniaj kierunek. GML a.direction=point_direction(x,y,mouse_x,mouse_y); a.direction += random_range(-10, 10)
  13. Wszyscy mają mc, mam i ja! Oryginalna woda, nie?
  14. Convert.ToInt32() teoretycznie zaokrągla do najbliższej całkowitej liczby i jeśli nie będzie można skonwertować (za duża liczba albo w ogóle jakieś NegativeInfinity) wyrzuci wyjątek, a rzutując zaokrągla w dół i jak nie będzie mógł zamienić to daje 0 -> ciężko wykryć takie sytuacje i jest to rzeczywiście sposób "gorszy". Ale jak masz pewność że to co konwertujesz zmieści się w incie to możesz używać spokojnie rzutowania.
  15. Dawidds

    Geco

    Piszesz to oczywiście w gmie?
  16. Nie mam pojęcia do czego Ci potrzebny ten podgląd (skoro i tak masz powstawiane klocki-komentarze) ale jednak spróbuj żyć bez niego, ja zawsze go wyłączałem bo tylko mnie denerwował jednocześnie nie wnosząc niczego pożytecznego (po klocku-komentarzu i tak już wiem, co się w danym bloczku znajduje). Jak chcę zobaczyć jaki kryje się w nim kod to mogę go po ludzku otworzyć i popatrzeć na kod w większym okienku, napisanym normalną czcionką z kolorowaniem składni i z możliwością kopiowania, a nawet edytowana kodu!
  17. Tyle, że trzeba floor(random()) albo irandom(), bo random zwróci nam niecałkowitą i mamy problem.
  18. Wyłącz sobie podgląd w opcjach?
  19. Skopiuj sobie level.dat
  20. A czemu nie? Samo "Label[] tablica" po utworzeniu jest tylko pustą tablicą. Label nie jest typem prostym więc nie ma żadnej "domyślnej wartości" którą mógłby uzyskać w momencie stworzenia tablicy, po prostu jest wypełniany nullem. Gdybyś zrobił to samo z intem/floatem/boolem/stringiem albo z jakąkolwiek strukturą którą możesz sobie sam zrobić (niech będzie Point) została by ona utworzona i otrzymała by właśnie swoją "domyślną wartość" (dla inta 0, dla boola false, dla stringa "", dla Point zgaduję że (0,0)). Także klucz tkwi w tym "new Label()". I kod: Label[] tablica = new Label[10]; tablica[4].Text = ""; Nie ma sensu tak samo jak: Label zmienna; zmienna.Text = ""; W drugim przypadku wyraźnie widać, że nigdzie nie utworzyliśmy tego obiektu Label i próbujemy zmienić zmienną należącą do nieistniejącego obieku, do pustej zmiennej. Samo "new Label[10]" dotyczy utworzenia tablicy, a nie jej elementów.
  21. m@ilosz: GML diff = angdiff(direction, point_direction(x, y, cel.x, cel.y)); direction -= abs(min(diff, 2)) * sign(diff); Gdzie angdiff() zwraca różnicę miedzy dwoma kątami: GML return ((((argument0 - argument1) mod 360) + 540) mod 360) - 180;
  22. No to tak samo jak wcześniej, tylko zapisujesz sobie referencje do tych labeli w tablicy Label[] tablica = new Label[10]; for(int i=0; i<tablica.Length; i++) { Label lab = new Label(); lab.Text = i.ToString(); lab.Location = new Point(5, 5+i*20); this.Controls.Add(lab); tablica[i] = lab; }
  23. Może zacznijmy od tego że jeśli chcesz żeby te Twoje labelki były widoczne to nie wystarczy ich utworzyć: Label label = nw Label(); Label.Text = "ssds"; Label.Location = new Point(dfsd); this.Controls.Add(label); this to w tym przypadku Form ale równie dobrze możesz dodać to do np. tabControla
×
×
  • Dodaj nową pozycję...