DoNcEr Opublikowano 1 Maja 2016 Udostępnij Opublikowano 1 Maja 2016 Witajcie. Jest taka gra "4 w lini" probuje ja napisac i utknalem na sprawdzaniu czy sa 4 w prostej lini .robie to na tablicy dwu-wymiarowej pola tak samo jak w oryginale7x6 image_index zmienia wartosci w tablicy: 0- pole puste 1- gracz1 2- gracz2 Jak mozna sprawdzic horyzontalnie ,wertykalnie i po ukosie czy gracz ulozyl 4 w lini ? Mialem cos na h i w ale nie dzialalo dobrze bo jak ulozylem kwadrat z 4 to tez dawalo wygrany wynik GML _s=0; _p=1; for (h=0; h<7; h++;) { for (w=0; w<6; w++) { if block[w, h]== _p {_s++} else {break;} } } if _s>=4 {pl=1;} A moze w "gridsach" jest jakis sposob? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 1 Maja 2016 Udostępnij Opublikowano 1 Maja 2016 Rozwiązanie po oporze: Najprostrzy to podwójna pętla for tak aby przejść przez każde pole. Jeżeli pole nie jest 0 sprawdź czy 3 następne pola w lewo/prawo/górę/dół/cztery skosy jest takie samo. Ofc mozesz tez sprawdzic czy sprawdzane pole nie jest za blisko ktores krawedzi aby bez powodu nie sprawdzac w kierunku w ktorym jest za malo oczek. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
DoNcEr Opublikowano 2 Maja 2016 Autor Udostępnij Opublikowano 2 Maja 2016 hm muszę nad tym trochę podumać jak to zrobić dawno nie programowałem. Ale skosy to już w ogóle nie mam pojęcia jak się za to zabrać EDIT: problem rozwiązany:) i gra gotowa: instalka GML //sprawdzanie poziomo for (i=0; i<4; i++;) { for (j=0; j<6; j++;) { if block[j,i]=2 and block[j,i+1]=2 and block[j,i+2]=2 and block[j,i+3]=2 { player2_win=true; } } } //sprawdzanie pionowo for (a=0; a<3; a++;) { for (b=0; b<7; b++;) { if block[a,b]=2 and block[a+1,b]=2 and block[a+2,b]=2 and block[a+3,b]=2 { player2_win=true; } } } //sprawdzanie po ukosie / for (c=0; c<3; c++;) { for (d=0; d<4; d++;) { if block[c,d+3]=2 and block[c+1,d+2]=2 and block[c+2,d+1]=2 and block[c+3,d]=2 { player2_win=true; } } } //sprawdzanie po ukosie \ for (e=0; e<3; e++;) { for (f=0; f<4; f++;) { if block[e,f]=2 and block[e+1,f+1]=2 and block[e+2,f+2]=2 and block[e+3,f+3]=2 { player2_win=true; } } } 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ę