Skocz do zawartości

Tworzenie majtek z grafik, czyli zamiana bitmapy na stringi


Rekomendowane odpowiedzi

Chodzi mi o to czy mozna odczytac z obrazka kolory powiedzmy trzeciej kolumny pixeli i zapisać to w formie ciągu danych?

 

I drugie pytanie, troche nna inny temat, ale nie chciałem tworzyć kilku wątków.

mamy takie coś:

 

0001100011111001000 więc mamy tu trzy grupy jedynek a grupy mają kolejno 2, 5 i 1 jedynkę. Jak zrobić żeby pierwszy ciąg znaków [czyli 0001100011111001000] przekształcał się na drugi [czyli 251]?

Odnośnik do komentarza
Udostępnij na innych stronach

Malutkie błędy, łącząc twój przykład z moim powstało takie coś :) :

GML
_s = get_string( "Podaj ciąg jedynek i zer:", "1000110001110001111" );

 

_g = "";

_c = 0;

 

for( _i = 0; _i < string_length( _s ); _i += 1; )

{

_char = string_char_at( _s, _i + 1 );

 

if ( real( _char ) )

{

_c += 1;

if ( !real( string_char_at( _s, _i + 2 ) ) )

{

_g += string( _c );

_c = 0;

}

}

}

 

show_message( "Wynik: " + _g );

Idea twa, moje wykonanie :P .

 

Mały opis:

GML
// pobieranie ciagu znakow

_s = get_string( "Podaj ciąg jedynek i zer:", "1000110001110001111" );

// wynik

_g = "";

// aktualna liczba, zerowana podczas napotkania zera.

_c = 0;

// petla po kazdym znaku

for( _i = 0; _i < string_length( _s ); _i += 1; )

{

// znak

_char = string_char_at( _s, _i + 1 );

// jesli jest inny od zera ( jedynka )

if ( real( _char ) )

{

// dodajemy do zmiennej jeden

_c += 1;

// jesli nastepna liczba to zero:

if ( !real( string_char_at( _s, _i + 2 ) ) )

{

// dodajemy do wyniku aktualna wartosc zmiennej

_g += string( _c );

// zerowanie zmiennej

_c = 0;

}

}

}

 

// wiadomosc

show_message( "Wynik: " + _g );

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chodzi o czytanie obrazkow to możesz all potraktować jako dwuwymiarową tablice.

for(int i = 0; i < surfaceDesc.Height; i++)

{

for(int j = 0; j < surfaceDesc.Width; j++)

{

 

int index = i * lockedRect.Pitch / 4 + j;

 

imageData[index] = 0xffff0000;

}

}

Cała operacja wygląda mniej więcej tak, tutaj surfacedesc to informacje pobrane o teksturze(w gm wygląda to pewnie podobnie) Pitch to wielkość danego rzędu w bajtach(nie możemy użyc poprostu width ponieważ [zależnie od implementacji] Pitch może być rózny od width). W gm powinno to działać podobnie.

Odnośnik do komentarza
Udostępnij na innych stronach

Próbuję na razie zrozumieć te sposoby, ale coś mi nie wychodzi =[

 

ściągnęłem ten przykład, ale GM7.0 upomina się o wersję pro, więc trudno cokolwiek zobaczyć, a z tłumaczenia Willa praktycznie nic nie rozumiem xD [nie martw się, to nie przez twoje niskie umijętności, tylko przez moją odpowność na naukę ;) ]

 

Więc może jeszcze raz zadam takie pytanko:

 

Chcę aby gra podzieliła obrazek tak jak w grze w statki (np pixel trzeciej kolumny i czwartego rzędu to C4) i odczytała wszystkie takie wartości z obrazka i powiedzmy jeśli pixel ma określony kolor, to nadała odpowiednią wartość zmiennej [powiedzmy C4=1] a jeśli nie jest danego koloru to wartość zmienne jest inna [C4=0]

 

mam nadzieję że w miarę jasno wytłumaczyłem.

Odnośnik do komentarza
Udostępnij na innych stronach

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

Jedynie 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ę poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...