kapcior7 Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 Cze... Mam problem z petla While i nie wiem oco chodzi... tutaj macie kod... GML while (tab_gdzie[_x,_y]=false) { _x=round(1-random(10)); _y=round(1-random(10)); } tab_gdzie[_x,_y]=false; pisze ze mam negative array index ;/ .. a tablice tworze w petli : GML for (i=0; i<=9; i+=1) { for (j=0; j<=9;j+=1) { tab_gdzie[i,j]=true; } } ktos pomoze ? a jak pozmieniam tego randoma to program sie zawiesza..;/ chyba petla dziala w nieskonczonosc ;/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 _x=round(1-random(10)); _y=round(1-random(10)); 1-10=-9=liczba mniejsza od 0=error Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 _x=round(1-random(10)); _y=round(1-random(10)); Jak random wylosuje Ci liczbę większą od 1 to _x albo _y będzie miało wartość ujemną. Wtedy w warunku odwołasz się do ujemnej (negative) komórki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 GML while (tab_gdzie[_x,_y]=false) { _x=abs(round(1-random(10))); _y=abs(round(1-random(10))); } tab_gdzie[_x,_y]=false; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kapcior7 Opublikowano 13 Lutego 2012 Autor Udostępnij Opublikowano 13 Lutego 2012 a no fakt ... sorry ;P Thx adam , dziala , ale teraz nie wiem czemu program sie zawiesza ;/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 Bo ci losuje za którymś razem 0. Weź użyj random_range(1,10); Edit: Napisałem posta zanim kapcior zedytował swego powyżej ;) Pokaż cały kod z while. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kapcior7 Opublikowano 13 Lutego 2012 Autor Udostępnij Opublikowano 13 Lutego 2012 tam nic nie ma wiecej;p GML for (i=1; string_length(zdanie); i+=1) { tab_z=string_char_at(zdanie,i); while (tab_gdzie[_x,_y]=false) { _x=abs(round(1-random(10))); _y=abs(round(1-random(10))); } tab_gdzie[_x,_y]=false; tab_1[_x,_y]=tab_z; } for (i=1; string_length(zdanie); i+=1) { tab_litera=0; } mi chodzilo o to zeby litery zdania porozsypywalo po tablicy tab_1 ;/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 Haha żeś taki dał warunek w pętli że nie ma opcji żeby się wyłączyła. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kapcior7 Opublikowano 13 Lutego 2012 Autor Udostępnij Opublikowano 13 Lutego 2012 to jak to zmienic?? ;/ myslalem ze petla bd losowala dopoki nie znajdzie pola true wtedy skrypt idzie dalej.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 Powiedz najpierw co ta pętla ma robić i kiedy tab_gdzie[_x,_y] bedzie true. EDIT: Po co ci do jednego zdania tablica dwuwymiarowa? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kapcior7 Opublikowano 13 Lutego 2012 Autor Udostępnij Opublikowano 13 Lutego 2012 tab_gdzie jest true cala bo sie tworzy w create ... petla MA WYszukac wolne komorki w tablicy i ustawic je na zajete a w te miejsce w tablicy z lterami wpisac odpowiednia litere.. potrzebna mi tablica bo mam tablice 10x10 i litery sie losuja czyli mam 100 komorek.. potem ma w petli w losowe miejsca powstawiac litery ze zdania ... Bo potem bd robil ze ma sie kliknac pokolei w litery zeby ulozyc te zdanie.. iitp.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 GML zdanie = "123456789 "; _dlugosc = string_length(zdanie); for (i=0; i<_dlugosc; i+=1) { chars=string_char_at(zdanie,i); } for (i=0; i<=9; i+=1) { for (j=0; j<=9; j+=1) { tab_gdzie[i,j]=chars[abs(round(random(_dlugosc)-1))]; } } I masz rozmieszczenie w tablicy ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kapcior7 Opublikowano 13 Lutego 2012 Autor Udostępnij Opublikowano 13 Lutego 2012 a jak w tym samym miejcu wylosuje sie random? tzn. nie chodzi mi o to zeby cala tablice tymi literami zapelic... ja to zrobilem tak .. najpierw zasypalem cala losowymi literami nastepnie chcialem zrobic nadpisywanie losowych komorek w zdaniu Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 A jak chcesz w kilko znakowym zdaniem zapełnić 100 pól żeby znaki się nie powtarzały? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kapcior7 Opublikowano 13 Lutego 2012 Autor Udostępnij Opublikowano 13 Lutego 2012 sorki zle mnie zrozumiales ;/ losowe litery chcem w calej tablicy i to mam zrobione nastepnie w losowe miejsca w tablicy maja sie wstawic litery ze zdania.. ;/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 Wlosowywanie liter z tekstu do kolejnych komórek tablicy 10x10. GML text = 'Ala ma kota a kot ma ale!'; for( i = 0; i < 10; i+= 1 ) for( j = 0; j < 10; j+= 1 ) chars[i,j] = string_char_at( text, random_range( 1, string_length( text ) ) ); ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kapcior7 Opublikowano 13 Lutego 2012 Autor Udostępnij Opublikowano 13 Lutego 2012 @tymon twoim sposobem cala tablica bedzie ze znakow ze zdania a ja chcem aby losowo byly i to juz mam zrobione ... mi chodzi zeby potem w losowych miejscach napisalo losowe znaki na znaki z tego zdania.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 To przecież są losowo. Chcesz wymieszać litery w zdaniu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 GML litery="abcdefghijklmnoprstuwxyz"; zdanie = "QWERTYUIOP "; _dlugosc = string_length(zdanie); _temp=0; for (i=0; i<_dlugosc; i+=1) { chars=string_char_at(zdanie,i); } for (i=0; i<=9; i+=1) { for (j=0; j<=9; j+=1) { _temp=random(10); if (_temp > 5) { tab_gdzie[i,j]=string_char_at(litery,abs(random_range(0,23))); } else { tab_gdzie[i,j]=chars[abs(round(random(_dlugosc)-1))]; } } } I masz pewna losowość ;) EDIT: SHIT ;/ Do dupy rozwiazanie bo może wszystkich liter ze zdania nie podać ;P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 Chce zrobić chyba jakiś szyfr. Potem dzięki tej tablicy będzie mógł szyfrować/odszyfrować dany tekst. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 Znaki w stringu indeksuje się od 1. Jeśli random_range jest od 0 do 23 to nie ma potrzeby dawać abs, to już będą dodatnie liczby. No i po co Ci mieszać coś co jest wymieszane? Nie ma potrzeby używania random kilka razy dla większej losowości. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kapcior7 Opublikowano 13 Lutego 2012 Autor Udostępnij Opublikowano 13 Lutego 2012 Chce zrobić chyba jakiś szyfr. Potem dzięki tej tablicy będzie mógł szyfrować/odszyfrować dany tekst. chce zrobic gre .. ze bd litery losowe i litery ze zdania i trzeba bedzie pokolei klikac na litery ze zdania aby je ulozyc... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 ... Tablica musi być tej samej wielkości co długość tekstu, żeby zadziałało. Ewentualnie można dać jakiś ogranicznik (tzy. zmienną przechowującą długość danego stringa) i operować na tablicy. Może być jednowymiarowa, dodawanie drugiego wymiaru tylko utrudni sprawę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 GML text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec iaculis egestas dui iaculis volutpat.'; for( i = 0; i < 10; i += 1 ) for( j = 0; j < 10; j += 1 ) chars[i,j] = ''; n = 0; while( n < string_length( text ) ) { i = round( random( 9 ) ); j = round( random( 9 ) ); if( chars[i,j] == '' ) { chars[i,j] = string_char_at( text, n + 1 ); n += 1; } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kapcior7 Opublikowano 13 Lutego 2012 Autor Udostępnij Opublikowano 13 Lutego 2012 tymon good idea , jednak ze jak zo robic gdy zamias '' mam losowe litery od A do Z ;/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 To Ty chcesz kazać układać użytkownikowi ALFABET czy ZDANIE? GML for( i = 0; i < 10; i+= 1 ) for( j = 0; j < 10; j+= 1 ) chars[i,j] = chr( random_range( ord( 'A' ), ord( 'Z' ) ) ); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kapcior7 Opublikowano 13 Lutego 2012 Autor Udostępnij Opublikowano 13 Lutego 2012 no mam plansze 10x10 w ktorej sa losowe litery+ litery ze zdania... i on ma wybierac tylko litery ktore wystepuja w zdaniu pokolei.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 GML text = 'Lorem ipsum dolor sit amet.'; for( i = 0; i < 10; i += 1 ) for( j = 0; j < 10; j += 1 ) chars[i,j] = ''; for( n = 1; n <= string_length( text ); n += 1 ) { do { i = round( random( 9 ) ); j = round( random( 9 ) ); } until( chars[i,j] == '' ) chars[i,j] = string_char_at( text, n ); } for( i = 0; i < 10; i+= 1 ) { for( j = 0; j < 10; j+= 1 ) { if( chars[i,j] == '' ) { chars[i,j] = chr( random_range( ord( 'A' ), ord( 'Z' ) ) ); } } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kapcior7 Opublikowano 13 Lutego 2012 Autor Udostępnij Opublikowano 13 Lutego 2012 @tymon nie dziala ;/ http://desmond.imageshack.us/Himg823/scaled.php?server=823&filename=beztytuuljp.png&res=medium bo cala tablica sie zapelnia A Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 13 Lutego 2012 Udostępnij Opublikowano 13 Lutego 2012 A jednak. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę