lynx |
» 2008-10-03 20:27:39 O nie... formułuj precyzyjniej pytania, bo po co ja to mam pisać?
Funkcja rest(liczba); zatrzymuje program na określoną liczbę milisekund. Co zresztą też chyba gdzieś w tutku pisało. Po za tym masz już w kodzie timer, to tylko zmniejsz jego wartość i program będzie działał wolniej.
/edit: Funkcja install_int_ex(increment_speed, BPS_TO_TIMER(100)); jest odpowiedzialna za szybkość obrotów, zmniejsz wartość BPS_TO_TIMER, i będzie chodzić wolniej. |
|
Tombol Temat założony przez niniejszego użytkownika |
» 2008-10-03 20:32:24 Ok dokładnie chodzi mi o coś takiego
for(int i; i > 300; i++, rest(1)) pocisk--;
Ale coś takiego nie działa :/ Popróbuje z tymi timerami |
|
DejaVu |
» 2008-10-03 20:45:14 To zobacz gdzie wstawiasz wywołanie funkcji rest(), a gdzie jest nawias kończący pętlę while. |
|
Tombol Temat założony przez niniejszego użytkownika |
» 2008-10-03 21:12:26 chyba chodzi Ci o pętle for a nie while ? No chyba że to te while while( !key[KEY_ESC])
edit; Kurde kombinuje jak koń pod górę a nadal mi nie wychodzi zrobiłem monstrualną pętle po to żeby zwolnić pętle która robi że pocisk leci niestety pocisk stoi ja już serio nie wiem co mam robić :/ Od 2 dni już się z tym bawię i nadal nie wiem :/ |
|
DejaVu |
» 2008-10-03 22:36:39 Zasadniczo kod który wkleiłeś się nie kompiluje, więc rozwodzenie się o tym czemu Ci nie działa coś o czym piszesz nie jest obecnie tematem do dyskusji. W kodzie masz nieprawidłową ilość nawiasów klamrowych zamykających (o 1 za dużą). Jak zrobisz, żeby kod się kompilował możemy rozwiązywać Twój problem (inna sprawą jest, że miejsce błędu już Ci podałem, czyli zasięg pętli while). |
|
Tombol Temat założony przez niniejszego użytkownika |
» 2008-10-04 07:35:40 Dziwne bo mi się kompiluje :p Ale teraz podam kod na którym obecnie działam #include <allegro.h>
volatile long speed = 0; void increment_speed() { speed++; } END_OF_FUNCTION( increment_speed ); LOCK_VARIABLE( speed ); LOCK_FUNCTION( increment_speed );
int statek_x = 500, statek_y = 440; int pocisk_x = statek_x, pocisk_y = 440; int pocisk_ruch;
bool kolizja( void ) { if( statek_x > 590 ) return true; if( statek_x < 10 ) return false; }
int main() { allegro_init(); install_keyboard(); set_color_depth( 32 ); set_gfx_mode( GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0 ); clear_to_color( screen, makecol( 0, 0, 0 ) ); install_timer(); install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) ); BITMAP * statek = NULL; BITMAP * pocisk = NULL; BITMAP * bufor = NULL; bufor = create_bitmap( 640, 480 ); if( !bufor ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "Nie mogę utworzyć bufora !" ); allegro_exit(); return 0; } statek = load_bmp( "statek.bmp", default_palette ); if( !statek ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "nie mogę załadować obrazka statek!" ); allegro_exit(); return 0; } pocisk = load_bmp( "pocisk.bmp", default_palette ); if( !pocisk ) { set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 ); allegro_message( "nie mogę załadować obrazka pocisk!" ); allegro_exit(); return 0; } while( !key[ KEY_ESC ] ) { if( key[ KEY_LEFT ] ) { statek_x--; if( kolizja() == false ) { statek_x++; } } if( key[ KEY_RIGHT ] ) { statek_x++; if( kolizja() == true ) { statek_x--; } } if( key[ KEY_SPACE ] ) { } masked_blit( statek, bufor, 0, 0, statek_x, statek_y, statek->w, statek->h ); masked_blit( pocisk, bufor, 0, 0, pocisk_x, pocisk_y, pocisk->w, pocisk->h ); blit( bufor, screen, 0, 0, 0, 0, 640, 480 ); } remove_int( increment_speed ); destroy_bitmap( statek ); destroy_bitmap( pocisk ); destroy_bitmap( bufor ); allegro_exit(); return 0; } END_OF_MAIN();
|
|
DejaVu |
» 2008-10-04 12:50:45 No dobra, ten się kompiluje. Teraz powiedz mi: czego nie rozumiesz w kodzie do którego podałem Ci linka na samym początku? if( nacisnieto_esc == true ) { pokaz_pocisk = true; pocisk_pozycja_x = 40; pocisk_ruch_x = 3; } pocisk_pozycja_x += pocisk_ruch_x; if( pocisk_pozycja_x >= 800 ) pokaz_pocisk = false;
if( pokaz_pocisk == true ) { }
W powyższym kodzie masz zawarte przecież rozwiązanie, a obecnie jesteśmy już 10 postów dalej i twierdzisz, że problem nie został rozwiązany pomimo, że dostałeś rozwiązanie. |
|
Tombol Temat założony przez niniejszego użytkownika |
» 2008-10-04 16:21:37 Chodzi mi o to co dana funkcja oznacza bo jak napisze taki kod jak podałeś to przecież nie zadziała :P np rysujpocisk albo pocishruch to co te funkcje oznaczają ? |
|
1 « 2 » 3 |