Skocz do zawartości
  • Ogłoszenia

  • Gdzie świętować urodziny GMCLANu   31 użytkowników zagłosowało

    1. 1. Gdzie świętować urodziny GMCLANu


      • Warszawa (bo w centrum)
      • Szczecin (bo tam mieszka Ranma i narodził się GMCLAN)

    Żeby zagłosować w tej ankiecie, prosimy się zalogować lub zarejestrować. Zobacz temat

Pytanie

Witam! Jest to mój pierwszy post tutaj, nawet nie wiedziałem, że mamy polskojęzyczne forum o GM! :D

 

Generalnie jestem "noobem" w kwestii programowania i tak dalej, ale postanowiłem coś stworzyć i powalczyć z tym. Doszedłem do momentu, w którym potrzebuję stworzyć "miejsce" gdzie mam zebrane zmienne, mniej więcej taka tabelka 5x10. Jak mogę najefektywniej to uczynić, aby zapisywanie jak i odczytywanie zmiennych było w miarę proste?

 

Czytałem o ds_map, ds_list, ds_grid. Jakoś nie uśmiecha mi się wypisywać 50 linijek kodu, żeby te wszystkie struktury uzupełnić...

A innego sposobu nie znam, słyszałem, że można też coś robić z plikami csv/ini ale jak ściągnąłem jakiś dodatek czytający dane z csv i zobaczyłem ten kod to... eh.

 

To czego potrzebuję wygląda mniej więcej tak:

9c96R0p.png

 

Te dane chciałbym później odczytać by móc tworzyć obiekty i teksty na zasadzie takiej listy. Bawiłem się z "for", który jakby miał sam po części tworzyć te dane, ale wyszły takie jaja, że chciałem zrobić to inaczej.

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

5 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 1

Najprościej dla Ciebie. Użyć ds_map, później do zapisu do pliku wystarczy ds_map_write, a do odczytu ds_map_read.

 

Rozwiązanie w dokumentacji: https://docs.yoyogames.com/source/dadiospice/002_reference/data structures/ds maps/ds_map_write.html

  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
Dnia 11.11.2017 o 22:14, Uzjel napisał:

Najprościej dla Ciebie. Użyć ds_map, później do zapisu do pliku wystarczy ds_map_write, a do odczytu ds_map_read.

 

Rozwiązanie w dokumentacji: https://docs.yoyogames.com/source/dadiospice/002_reference/data structures/ds maps/ds_map_write.html

 

Dzięki za odpowiedź, zmotywowała mnie ona do tego, żeby jednak przejrzeć jeszcze raz kod i udało mi się wyeliminować część błędów i chyba zostanę przy pętli. Potrzebuję jednak dalszej pomocy :(

 

Problem polega na tym, że nie mogę dojść do tego, żeby wszystko było w jednej linii (walczyłem już dziesiątkami różnych kombinacji i ciągle jest nie tak), a druga to taka, że te liczby (3 cyfrowe i po przecinku) zmieniają się kilkukrotnie w ułamku sekundy. Nie chcą wygenerować się raz i przestać.

0BmM39X.png

 

Kod draw_gui:

switch (switch_view) //w zaleznosci od otwartego okna, zmienia sie zawartosc
    {
        case "resource": //okno resource
            draw_set_font(fnt_italianate2);
            draw_set_colour(c_black);
            draw_text(128, 320, "Energy: " + string(energy));
            draw_text(128, 520, "Water: " + string(water));
            break;
        case "local": //okno local market
            draw_set_font(fnt_italianate2);
            draw_set_colour(c_black);
            
            for (i = 0; i < 5; i += 1) //tworzenie ofert
                {
                    instance_create(1848, (i+1)*275+50, obj_sell10);
                    instance_create(2048, (i+1)*275+50, obj_sell100);
                    draw_sprite_ext(spr_pl, 0, 128, ((i+1)*0.75)*350+50, 1, 1, 0, c_white, 1);
                    obj_game.retail_price = item_price + random_range(0.5,0.75);
                    obj_game.retail_amount = item_amount + irandom_range(-150, 150);
                    draw_text(308, ((i+1)*0.75)*325+50, string(obj_game.retail_amount));                   
                    draw_text(508, ((i+1)*0.75)*325+50, string(obj_game.retail_price));
                }
            break;
        case "false":
            break;
    }

 

P.S.

Twoja sygnatura do discorda nie działa, link źle napisany.

 

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Tak na szybko.

Prócz trochę złego podejścia - pętla w switchu - i małego bałaganu. Rzuca się w oczy losowanie ceny co step. Twój problem z brakiem wyrównania właśnie wynika z braku porządku w kodzie.

 

Spróbuj ustalić zmienną typu yy, która będzie trzymała pozycję y każdego elementu na twojej liście, wtedy taki rozjazd nie będzie miał prawa wystąpić. Na oko widzę, że w jednym miejscu i mnożysz .75 a w innym wcale.

 

Dzięki za info o sygnaturce ;)

  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Co do generowania, to draw działa co klatkę, a Ty z każdą klatką generujesz nowe losowo.

Stwórz w create zmienną np item_price_random=

random_range(0.5,0.75)

I potem w kodzie zamiast random_range to wpisujesz item_price_random.

 

Co do błędu w pokazywaniu nierównych rzeczy to robisz to tak, że w każdym z wyświetlanych rzeczy w y wpisujesz tę samą wartość mnożenia z i u wszystkich, u Cb jest różnie 325,350,275, już nie wspominam o tym, że w obiektach nie mnożysz  przez 0.75 a w reszcie tak. A ta druga wartość którą masz stanowi gdzie będzie się ustawiać.

  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Dzięki za podpowiedzi z tym losowaniem. Pewnie wpisanie tego w create załatwi cały problem.

 

Co do różnych wartości, to tak, wiem o tym. Gdy wszędzie wpisywałem to samo to i tak nie było równo z racji tego, że te sprity, obiekty i teksty są różnych rozmiarów i nawet jak pierwsza linia się ułoży to reszta już nie przed inne odstępów :( Ale popróbuję jeszcze to wyrównać :)

 

Dziękuję za pomoc.

  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×