eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingDavid West: OOP is Dead › Re: David West: OOP is Dead
  • X-Received: by 10.140.105.54 with SMTP id b51mr6664qgf.29.1392735055080; Tue, 18 Feb
    2014 06:50:55 -0800 (PST)
    X-Received: by 10.140.105.54 with SMTP id b51mr6664qgf.29.1392735055080; Tue, 18 Feb
    2014 06:50:55 -0800 (PST)
    Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!goblin2!goblin.stu.neva.ru!feed.news.qwest.net!mpls-nntp-01.inet.qwest
    .net!news.glorb.com!c10no29313162igq.0!news-out.google.com!dr7ni182qab.1!nntp.g
    oogle.com!f11no23406490qae.1!postnews.google.com!glegroupsg2000goo.googlegroups
    .com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Tue, 18 Feb 2014 06:50:54 -0800 (PST)
    In-Reply-To: <4...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=93.154.242.188;
    posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
    NNTP-Posting-Host: 93.154.242.188
    References: <ldaa9r$3j5$1@speranza.aioe.org>
    <9...@g...com>
    <52fccceb$0$2362$65785112@news.neostrada.pl>
    <6...@g...com>
    <52fceef0$0$2140$65785112@news.neostrada.pl>
    <1...@g...com>
    <ldv7fu$3vq$1@dont-email.me>
    <6...@g...com>
    <a...@g...com>
    <ldvj3g$28c$1@dont-email.me>
    <6...@g...com>
    <ldvqkt$bnu$1@dont-email.me>
    <4...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <c...@g...com>
    Subject: Re: David West: OOP is Dead
    From: firr <p...@g...com>
    Injection-Date: Tue, 18 Feb 2014 14:50:55 +0000
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:205189
    [ ukryj nagłówki ]

    #v+
    ////////////////////////////////

    class Pixelbuffer {
    // klasa zawierajaca bufor obrazu.
    };

    /////////////////////////////////////

    class Window {
    private:
    MouseHandler& m;
    KeyboardHandler& k;

    public:
    // wspolne funkcje, istniejace dla kazdego okna

    // dodaje handler do okna
    void addMouseHandler(Handler& h);
    void addKeyboardHandler(Handler& h);
    void draw(Costam& cos);
    };

    ////////////////////////////////////////

    class Blitter {
    void blit(Window& win, Pixelbuffer& buf)
    {
    ///...
    }
    };

    ////////////////////////////

    class MouseHandler: public Handler {
    void onClicked(Slot& callback, Point& position) {
    callback.emit(position);
    }
    };

    /////////////////////////////////

    class Game {
    private:
    Pixelbuffer p;

    Blitter& blit;
    Window& w;

    public:
    Pixelbuffer& getBuffer() { return p; }

    void blit() {
    // dla każdego obiektu w grze, renderuje pixelbuffer dla tego obiektu

    // też może być wprowadzony podział na klasy software/hardware
    rendering
    blit.blit(w, p);
    }

    void run() {
    while(! done) {
    doGame();
    blit();
    }
    }
    };

    /////////////////////----

    int main() {
    Pixelbuffer p;
    Game game(p);
    HardwareBlitter blit; // lub: SoftwareBlitter, QuickBlitter, lub inne
    blittery
    Window gameWindow;

    game.addWindow(gameWindow);
    game.setBlitter(blit);

    MouseHandler m;
    KeyboardHandler k;

    gameWindow.addMouseHandler(m);
    gameWindow.addKeyboardHandler(k);

    m.onClicked([&] (Point& mousePos) {
    game.addSomeObject(mousePos);
    });

    gameWindow.show();
    game.run(); // działa, np. dopóki gameWindow istnieje
    return 0;
    }
    #v-

    wycialem by bylo drobinke prosciej, wiadomo ze mozna rozbudowywac

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: