Proszę, proszę, nie wstawiaj tyle emotek...
Większość gier jest jednowątkowych, chcesz się przekonać? Włącz np diablo2 na kilkurdzeniowcu i zobacz ile rdzeni zużywa... Jeden.
Po drugie to jeżeli nie ma rzeczywistej potrzeby to robienie z pętli głównej gry czegoś wielowątkowego to samobójstwo, trzeba dbać wtedy o synchronizacje, czyli jedno czeka na drugie i praktycznie i tak nic nie zyskujemy...
Napisałem dosyć prosty engine do gry 2d na wzór BaldursGate i troszkę o tym wiem.
Dalej. Funkcja array?
Jakoś zawsze zydawało mi się że w c++ są tablice.
A jeżeli tak nie chcesz być ograniczonym przez wielkość tablicy to stworz sobie liste na wskaźnikach, żaden kłopot. Dokładasz ile chcesz elementów.
Aczkolwiek sądzę że ograniczenie ilości kul do liczby np 70 było by ok. Wystrzelisz więcej naraz?
while(dirX<520){
dirX++;
}
while(dirY<520){
dirY++;
}
Przecież to bez sensu jest... Czy przeczytałeś ze zrozumiemiem co napisałem?
zakadając że armata jest w lewym dolnym rogu, tak domyslam sie po tych whileach (?).
masz punkt P0 oznaczający postument armaty, jest nieruchomy, taki początek lufy.
Dalej masz punkt P1 ktory oznacza punkt końcowy lufy. w ten sposob mamy prostą w układzie współrzędnych.
przykladowo jest tak:
y
| p1*
|
|p0*
|_________________x
obliczasz odległość x-owa i y-owa
double x_way = Abs(p0.x-p1.x)
double y_way = Abs(p0.y-p1.y)
dalej te wartosci dzielisz przez odległość w układzie współrzędnych
double way_xy = Sqrt((x_wayx_way)+(y_wayy_way));
double x_way_mod = x_way/way_xy;
double y_way_mod = x_way/way_xy;
potem w pętli głównej gry, gdy nastepuje moment przesuniecia odpowiednio dodajesz przesuniecia do położenia kuli. Przesuniecia mozesz mnozyc aby byly wieksze = kula szybciej leciałą.
pozdrawiam.
:D