Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak oprogramować strzelanie z pistoletu?

Ostatnio zmodyfikowano 2011-07-27 18:46
Autor Wiadomość
waxx
» 2011-07-27 15:57:24
akwes podaje prawidłowe rozwiązanie.
P-37307
Thud
» 2011-07-27 16:08:25
Dawno nic w C++ nie pisałem. Widać też że mam złe przyzwyczajenia.
P-37308
akwes
» 2011-07-27 16:17:04
Ciekawe czemu ten temat jest w biblioteki :P Skoro gadamy o algorytmie wykonania :P i skąd to SFML w topiku ?
P-37309
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-27 17:24:48
Wiesz teraz sobie to tak analizuje i widzę że przy użyciu vectora można by to było zrobić w jednej klasie
P-37320
Thud
» 2011-07-27 17:34:04
Tylko że ten kod, jak mówił waxx, jest błędny. Z punktu projektowego.
P-37322
akwes
» 2011-07-27 17:46:54
Jeżeli usuniesz klasę Pistolet destruktorem, to nie ma prawa zniknąć Pocisk, bo czemu miałby?

Jak masz pistolet, broń palną, to magazynek masz wypchany obiektami innej klasy, z innej fabryki, które po zmianie stanu przez pistolet wykonują swoje zadanie. W programowaniu można to skrócić do tworzenia naboi przez pistolet. Jeżeli chcesz aby Pocisk miał dostęp do składowych klasy Pistoletu to dajesz mu wskaźnik do rodzica.

w klasie Pocisk dajesz coś takiego
C/C++
Pistolet * Parent;

wskaźnik można wysłać przez konstruktor Pocisku
C/C++
Pocisk::Pocisk( Pistolet * rodzic /* reszta zmiennych */ )
{
    Parent = rodzic;
    /* reszta instrukcji */
}
Wywołanego przez
C/C++
// w Pistolecie
Pocisk * tmp = new Pocisk( this /*reszta argumentow */ );
// i na przykład
AddToList( tmp );
P-37326
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-27 17:54:13
Ja to zrobiłem tak:

C/C++
class Ship
{
    sf::Shape Statek;
public:
    vector < sf::Shape > Bullet;
    void Ship_Bullet_Tworzenie();
    void Ship_Bullet_Shoot();
};
inline void Ship::Ship_Bullet_Tworzenie()
{
    Bullet.push_back( sf::Shape::Rectangle( 0, 0, 4, 4, sf::Color::Cyan ) );
    Bullet[ Bullet.size() ].SetPosition( Statek.GetPosition().x, Statek.GetPosition().y );
}


inline void Ship::Ship_Bullet_Shoot()
{
    for( int i = 0; i <= Bullet.size(); i++ )
    {
        Bullet[ i ].Move( 0, - 2 );
    }
   
   
}
P-37330
akwes
» 2011-07-27 17:59:47
1. Dlaczego robisz funkcje inline :| ?
2. Może i działa, ale przy rozwijaniu będzie sprawiać problemy
3. I powiedz Ty mi, czy usuwasz Pociski, które nie trafiły? Czy one tam są i jest ich coraz więcej na vectorze :P ?
P-37334
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona