User Tag List

Seite 3 von 3 ErsteErste 123
Ergebnis 51 bis 57 von 57

Thema: wie entwickel ich eine spiel...

  1. #51
    maxim
    Gast
    was heisst imho?^^

    hmm...wieso oop? es ist doch so ähnlich wie strukturen, was ist überhaupt der unterschied?

    meine jetzige sig ist besser^^

  2. #52
    Mitglied Avatar von Klopfer
    Registriert seit
    09.2000
    Ort
    Berlin
    Beiträge
    7.788
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Original von maxim
    was heisst imho?^^
    In My Humble Opinion = meiner bescheidenen Meinung nach

    hmm...wieso oop? es ist doch so ähnlich wie strukturen, was ist überhaupt der unterschied?
    Objekte bringen ihre eigenen Methoden mit, um die in dem Objekt gespeicherten Daten zu manipulieren. Von außen sollte man (bei disziplinierter Programmierung) gar nicht an die internen Daten des Objekts rankommen, ohne eine der eingebauten Methoden des Objekts zu benutzen.
    Das verhindert, dass versehentlich unerwünschte Operationen mit den Daten durchgeführt werden.

    Außerdem gibt's den Vorteil der Vererbung.
    Wenn du zum Beispiel einen Computerspieler und einen menschlichen Spieler hast, dann kannst du dir angucken, welche Gemeinsamkeiten beide Spieler haben, daraus einen "Urspieler"-Typ (oder besser gesagt eine Klasse) zusammenstellen, und dann erben die Computerspiele-Klasse und die MenschSpieler-Klasse die Eigenschaften und Methoden von dem Urspieler, und die beiden neuen Klassen können dann jeweils einzeln erweitert werden. (Simples Beispiel, geht auch viel komplexer.) Das macht einige Sachen einfacher.
    Klopfers Web - Viele finden's lustig
    Klopfers Webservice - Textkorrekturen und Internetprogrammierung

  3. #53
    maxim
    Gast
    aber man könnte jedes programm mit oop auch ohne oop machne, oder?

    und was ist polymorphie und noch so was?

    was bringt vererbung überhaupt? man kann einfach die eine zu vererbende datei kopieren und die daten ändern, wäre doch dasselbe?!

  4. #54
    maxim
    Gast
    und kann man mit #if nur makros testen? oder ginge auch:

    int x;

    #if x==0
    blablabl
    #endif

    ?

    und was sind makros eigentlich genau?

  5. #55
    Mitglied Avatar von Kei-san
    Registriert seit
    10.2002
    Ort
    Kreis Aachen
    Beiträge
    1.037
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Original von maxim
    und kann man mit #if nur makros testen? oder ginge auch:

    int x;

    #if x==0
    blablabl
    #endif
    Das funktioniert nicht, weil #if eine Präprozessoranweisung (fangen mit # an) ist. Der Präprozessor arbeitet diese Befehle vor der eigentlichen Compilierung ab.
    int x ist eine Variable und wird vom Präpozessor gar nicht beachtet. (Zumal ihr Wert auch erst bei der Programmausführung feststeht.)


    Makro leitet sich von Makrobefehl bzw. macro instruction ab und bezeichnet im allgemeinen eine Folge von Anweisungen, die unter einem bestimmten Namen zusammengefaßt werden, der im Programm anstelle der Anweisungsfolge benutzt werden kann.
    Wie symbolische Konstanten werden sie mit #define definiert. Es gibt Makros mit und ohne Parameter.


    zum Thema OOP hab ich noch einen Link:
    Object-Oriented Programming for Game Programmers
    (ist auf Englisch) nach der Lektüre sollte man auch Polymorphie verstanden haben.

    aber man könnte jedes programm mit oop auch ohne oop machne, oder?
    Sicher. Man könnte es auch direkt im Assembler machen oder gar direkt den Code hexadezimal eingeben.
    Aber warum macht man es nicht? Weil es viel zu kompliziert wäre.
    Der Objektorientierte Ansatz ist einfach eine Methode um die Komplexität in den Griff zu bekommen.

  6. #56
    maxim
    Gast
    alles klar, danke!

    das ist glaub ich besser, auch weils deutsch ist!(englisch kann ich eben nich so gut...)

    teil 1

    teil 2 (vererbung)

    teil 3 (polymorphie)

  7. #57
    Mitglied
    Registriert seit
    11.2003
    Ort
    Brandis (Leipzig)
    Beiträge
    100
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Original von Klopfer
    Objekte bringen ihre eigenen Methoden mit, um die in dem Objekt gespeicherten Daten zu manipulieren. Von außen sollte man (bei disziplinierter Programmierung) gar nicht an die internen Daten des Objekts rankommen, ohne eine der eingebauten Methoden des Objekts zu benutzen.
    Das verhindert, dass versehentlich unerwünschte Operationen mit den Daten durchgeführt werden.

    Außerdem gibt's den Vorteil der Vererbung.
    Wenn du zum Beispiel einen Computerspieler und einen menschlichen Spieler hast, dann kannst du dir angucken, welche Gemeinsamkeiten beide Spieler haben, daraus einen "Urspieler"-Typ (oder besser gesagt eine Klasse) zusammenstellen, und dann erben die Computerspiele-Klasse und die MenschSpieler-Klasse die Eigenschaften und Methoden von dem Urspieler, und die beiden neuen Klassen können dann jeweils einzeln erweitert werden. (Simples Beispiel, geht auch viel komplexer.) Das macht einige Sachen einfacher.
    hmm...

    unter C kann ich einfach eine bestimmte Menge Funktionspointer machen, die dann eben auf spezielle Funktionen der Art verweisen. Das einzige Problem ist die Erweiterbarkeit von Klassen der Daten wegen her, die man nur durch Erweiterungen von ausserhalb (Weitere Daten werden in externer Datenbank gespeichert, Struktur ist Teil einer anderen Struktur...) hinzufügen kann.

    fuer alle dies nicht verstanden haben:

    typedef struct
    {
    unsigned short x, y;
    //wie kann man void* durch player_t ersetzen? :?
    void (*draw)(void*, bitmap*);
    void (*go)(void*);
    } player_t;

    void player_draw1(player_t* pl, bitmap* bmp);
    void player_draw2(...)...

    //das ganze mit den Run-Funktionen

    void player_go1(player_t* pl);
    ...

    //"Konstruktor":

    player_t create_player(unsigned short x,unsigned short y, int typ)
    {
    player_t* player = (player_t*) malloc(sizeof(player_t));
    switch (typ)
    {
    case TYP_BOB :
    player.draw = player_draw1;
    player.go = player_go1;
    break;
    case TYP_BEN :
    player.draw = player_draw2;
    player.go = player_go2;
    break;
    default :
    player.draw = player_draw_default;
    player.go = player_go_default;
    };
    return player;
    };

    int main(int argc, char** argv)
    {
    player_t* pl = create_player(100, 33, TYP_BEN);
    free(pl);
    return 0;
    };


    mit dem player kann man jetzt lustige Sachen anstellen z.b. einfach die Funktionspointer aendern oder so... das ist einfacher zu handhaben als über virtuals neue Objekte kreieren zu müssen, oder in einer draw()-Funktion mit ner Menge switches zu arbeiten

    uff... hoffe der Code geht... habe ihn nicht auf vollständigkeit und richtigkeit überprüft (einfach drauflosgeschrieben)

Seite 3 von 3 ErsteErste 123

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Das Splash-Netzwerk: Splashp@ges - Splashbooks - Splashcomics - Splashgames
Unsere Kooperationspartner: Sammlerecke - Chinabooks - Salleck Publications - Splitter - Cross Cult - Paninicomics - Die Neunte
Comicsalon Erlangen
Lustige Taschenbücher