Forczek Temat założony przez niniejszego użytkownika |
[Allegro 4] Animacja, oraz za częste losowanie. » 2012-10-18 21:48:26 Siemka, mam dwa błędy w moim kodzie i nie mam bladego pojęcia o co tutaj chodzi. Na początku animacja, o to kod: if( moneta_animacja[ 2 ] == false ) { if( frame[ 1 ] < 20 ) { draw_sprite( bufor, moneta1, moneta_x[ 2 ], moneta_y[ 2 ] ); } else if( frame[ 1 ] >= 20 && frame[ 1 ] < 40 ) { draw_sprite( bufor, moneta2, moneta_x[ 2 ], moneta_y[ 2 ] ); } else if( frame[ 1 ] >= 40 && frame[ 1 ] < 60 ) { draw_sprite( bufor, moneta3, moneta_x[ 2 ], moneta_y[ 2 ] ); } else if( frame[ 1 ] >= 60 && frame[ 1 ] < 80 ) { draw_sprite( bufor, moneta4, moneta_x[ 2 ], moneta_y[ 2 ] ); } else if( frame[ 1 ] >= 80 && frame[ 1 ] < 100 ) { draw_sprite( bufor, moneta5, moneta_x[ 2 ], moneta_y[ 2 ] ); } else if( frame[ 1 ] >= 100 && frame[ 1 ] < 120 ) { draw_sprite( bufor, moneta6, moneta_x[ 2 ], moneta_y[ 2 ] ); } else if( frame[ 1 ] >= 120 && frame[ 1 ] < 140 ) { draw_sprite( bufor, moneta7, moneta_x[ 2 ], moneta_y[ 2 ] ); } else if( frame[ 1 ] >= 140 && frame[ 1 ] < 150 ) { draw_sprite( bufor, moneta8, moneta_x[ 2 ], moneta_y[ 2 ] ); } if( frame[ 1 ] == 150 ) moneta_animacja[ 2 ] = true; } else if( moneta_animacja[ 2 ] == true ) { if( frame[ 1 ] < 20 ) { draw_sprite( bufor, moneta8, moneta_x[ 2 ], moneta_y[ 2 ] ); } else if( frame[ 1 ] >= 20 && frame[ 1 ] < 40 ) { draw_sprite( bufor, moneta7, moneta_x[ 2 ], moneta_y[ 2 ] ); } else if( frame[ 1 ] >= 40 && frame[ 1 ] < 60 ) { draw_sprite( bufor, moneta6, moneta_x[ 2 ], moneta_y[ 2 ] ); } else if( frame[ 1 ] >= 60 && frame[ 1 ] < 80 ) { draw_sprite( bufor, moneta5, moneta_x[ 2 ], moneta_y[ 2 ] ); } else if( frame[ 1 ] >= 80 && frame[ 1 ] < 100 ) { draw_sprite( bufor, moneta4, moneta_x[ 2 ], moneta_y[ 2 ] ); } else if( frame[ 1 ] >= 100 && frame[ 1 ] < 120 ) { draw_sprite( bufor, moneta3, moneta_x[ 2 ], moneta_y[ 2 ] ); } else if( frame[ 1 ] >= 120 && frame[ 1 ] < 140 ) { draw_sprite( bufor, moneta2, moneta_x[ 2 ], moneta_y[ 2 ] ); } else if( frame[ 1 ] >= 140 && frame[ 1 ] < 150 ) { draw_sprite( bufor, moneta1, moneta_x[ 2 ], moneta_y[ 2 ] ); } if( frame[ 1 ] == 150 ) moneta_animacja[ 2 ] = false; } frame podzieliłem na dwa do menu i do gry. Nie wiem dlaczego zmienna nie zmienia wartości z false na true i odwrotnie. Może jakieś sugestie? Nie dałem tego w jeden, bo animacja jak dla mnie działa by się za szybko. Druga sprawa to zaczęste losowanie. Może najpierw kod: if( spadanie_monet[ 0 ] == false && frame[ 1 ] == 0 ) { losowanie_monet[ 0 ] =( rand() % 100 ) + 0; moneta_x[ 0 ] =(( rand() % 750 ) + 0 ); } if( losowanie_monet[ 0 ] >= 30 ) { spadanie_monet[ 0 ] == true; } if( spadanie_monet[ 0 ] == true ) { moneta_y[ 0 ] ++; } if( moneta_y[ 0 ] >= 649 ) { moneta_y[ 0 ] = - 50; spadanie_monet[ 0 ] = false; } if( mx >= moneta_x[ 0 ] && mx - 50 <= moneta_x[ 0 ] && moneta_y[ 0 ] <= 500 && moneta_y[ 0 ] >= 450 ) { wymagane_punkty -= 1; moneta_y[ 0 ] = - 50; spadanie_monet[ 0 ] = false; } Tutaj opisane jest całe spadanie monety. Problem mam w tym, że losowanie odbywa się zawsze gdy frame[ 1 ] == 0. Tak jakby warunek spadanie_monet[ 0 ] nie był istotny. Prosiłbym o pomoc, bo sam nie wiem o co tutaj chodzi!? |
|
Dragonit |
» 2012-10-18 22:51:31 Pokaż gdzie i jak używasz dekrementacji wartości w tablicy frame. |
|
Forczek Temat założony przez niniejszego użytkownika |
» 2012-10-19 11:18:16 Nie jestem pewien o co chodzi. Ale chyba chodzi ci o jedno z tych rzeczy: int frame[ 1 ]; frame[ 0 ] = 0; frame[ 1 ] = 0; . . . if( menu == 1 ) { frame[ 0 ] ++; if( frame[ 0 ] == 150 ) frame[ 0 ] = 0; . . . } if( menu == 2 ) { frame[ 1 ] ++; if( frame[ 1 ] == 150 ) { czas += 1; frame[ 1 ] = 0; } . . . }
Jak nie coś z tego to napisz prościej, bo nie rozumie. |
|
Dragonit |
» 2012-10-19 15:10:25 To jeszcze pokaż gdzie zmieniasz wartość zmiennej menu :) i to ? co to jest ? int frame[ 1 ]; frame[ 0 ] = 0; frame[ 1 ] = 0; ...poćwicz tablice |
|
Forczek Temat założony przez niniejszego użytkownika |
» 2012-10-19 15:53:31 Mam to w kolizji przycisku. Tu kod: if( mx > 250 && mx < 250 + przycisk2->w && my > 425 && my < 425 + przycisk2->h ) { masked_blit( przycisk2, bufor, 0, 0, 250, 425, przycisk2->w, przycisk2->h ); textprintf_ex( bufor, font, 380, 447, makecol( 200, 0, 0 ), - 1, "Koniec" ); if( mb == 1 ) { menu = 0; } } else { masked_blit( przycisk1, bufor, 0, 0, 250, 425, przycisk1->w, przycisk1->h ); textprintf_ex( bufor, font, 380, 447, makecol( 0, 0, 200 ), - 1, "Koniec" ); }
Tu akurat całe wyświetlenie przycisku wraz z kolizją. |
|
Dragonit |
» 2012-10-19 16:09:34 Już ci napisałem co masz źle :) |
|
Forczek Temat założony przez niniejszego użytkownika |
» 2012-10-19 16:15:54 Dobra, tablice. Ale ja tu błędu w zapisie nie widzę. Może oświeć mnie bardziej. Bym wdzięczny był niezmiernie. |
|
Dragonit |
» 2012-10-19 16:22:27 Tablice liczymy od zera :) |
|
« 1 » 2 |