Camper Temat założony przez niniejszego użytkownika |
» 2009-05-18 21:36:33 Sry że proszę abyście mi podali wszystko praktycznie na tacy ale nie potrafię tutaj wyłapać błędu. Już się ładnie kompiluje, ale nadal nic nie strzela. int strzal_x, strzal_y, strzal_s, strzal_w; int frame = 0;
while( !key[ KEY_ESC ] ) { clear_to_color( bufor, makecol( 150, 150, 150 ) ); masked_blit( bmp, bufor, 0, 0, 0, 0, bmp->w, bmp->h ); if( key[ KEY_LEFT ] ) statek_x = statek_x - 2; if( key[ KEY_RIGHT ] ) statek_x = statek_x + 2; if( key[ KEY_UP ] ) statek_y = statek_y - 2; if( key[ KEY_DOWN ] ) statek_y = statek_y + 2; if( key[ KEY_A ] ) enemy_x = enemy_x - 2; if( key[ KEY_D ] ) enemy_x = enemy_x + 2; if( key[ KEY_W ] ) enemy_y = enemy_y - 2; if( key[ KEY_S ] ) enemy_y = enemy_y + 2; if( key[ KEY_M ] ) { if( !strzal ) { strzal_x = statek_x, strzal_y = statek_y, strzal_s = 25, strzal_w = 25; } else { strzal_y--; } } if( strzal_y > 0 ) { strzal_y = strzal_y - 5; } draw_sprite( bufor, strzal, strzal_x, strzal_y ); draw_sprite( bufor, statek, statek_x, statek_y ); draw_sprite( bufor, enemy, enemy_x, enemy_y ); blit( bufor, screen, 0, 0, 0, 0, 800, 600 ); if( enemy_x < 0 ) { enemy_x = 800; } if( enemy_y < 0 ) { enemy_y = 600; } if( enemy_x > 800 ) { enemy_x = 0; } if( enemy_y > 600 ) { enemy_y = 0; } if( statek_x < 0 ) { statek_x = 800; } if( statek_y < 0 ) { statek_y = 600; } if( statek_x > 800 ) { statek_x = 0; } if( statek_y > 600 ) { statek_y = 0; } frame++; if( frame > 40 ) frame = 0;
|
|
DejaVu |
» 2009-05-18 23:27:37 Żeby zrobić ruch pocisku potrzebujesz 4 zmiennych dla niego. |
|
Camper Temat założony przez niniejszego użytkownika |
» 2009-05-19 10:41:34 Chodzi mi o strzał który leci prosto do góry. Mam do niego x,y,s,w. x i y do lokalizacji, a s,w do kolizji. Coś jeszcze powinno być ? |
|
DejaVu |
» 2009-05-19 11:00:37 Jeśli pocisk ma lecieć tylko do góry wystarczą 4. Jeśli będziesz zmianiał kierunek lotu to 6 ziennych. Ty dodałeś 2 zmienne wys i szer, które nie są powiązane z prędkością. W każdym razie przy czterech: if( !strzal ) { if( key[ KEY_M ] ) { strzal_x = statek_x; strzal_y = statek_y; strzal_s = 25; strzal_w = 25; strzal = true; } } else { strzal_y -= 5; if( strzal_y < 0 ) strzal = false; }
|
|
Camper Temat założony przez niniejszego użytkownika |
» 2009-05-19 12:06:35 No więc teraz mam problem z kompilowaniem. Piszę że nie może zamienić bool na bitmap. 131 F:\Projekty\stargate\main.cpp cannot convert `bool' to `BITMAP*' in assignment chodzi o strzal przypisuje mu bitmap wiec wcześniej deklarowałem że to BITMAP, i z tego co wnioskuje nie może on mieć wartości true or false. Co wtedy ;p ? // Już sobie z tym poradziłem. Teraz mam pytanie, czy istnieje sposób na to żeby oba statki mogły strzelać jednocześnie ? Chodzi o to że teraz jak naciskam M to strzela z pierwszego statku, a jak C (klawisz strzelania dla drugiego statku) to nie strzela. Powinienem zrobić taką samą instrukcje tylko z innymi nazwami zmiennych? (tj. strzal_x2, strzal_y2 itd.)Czy jest jakiś sposób (podejrzewam że jest ;p ) |
|
DejaVu |
» 2009-05-19 23:30:32 tak - wykonać to samo ale z innymi zmiennymi. Każdy obiekt na scenie musi mieć własne informacje o położeniu, prędkości itp. dzięki czemu jednocześnie na scenie może być nawet milion obiektów :) |
|
1 « 2 » |