Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

11

22.04.2006, 17:21

Zitat


Ich habe schon dieses Buch durchgearbeitet und verstanden:
http://www.amazon.de/exec/obidos/ASIN/3898426491/qid=1145718253/sr=1-13/ref=sr_1_2_13/303-5578792-2441845

In der Rezension zu diesem Buch steht, dass dort auch Klassen, Templates uund Vererbung drankommen.
Da du das in deiner Aufzählung nicht erwähnt hast vermute ich, dass du diese Konzepte noch vertiefen solltest, um ihre Relevanz für die Spieleprogrammierung zu verstehen.

Desweiteren solltest du dir noch in paar weitere Wochen Zeit für C++ nehmen, wenn du erst vor ein paar Tagen angefangen hast. Wirst schon merken, wenn D3D nicht mehr so schwer zu verstehen ist. Dann hast du genug Grundlagen ;)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

12

22.04.2006, 17:30

Zitat von »"F-Wölkchen"«

Ich habe schon dieses Buch durchgearbeitet und verstanden

Zwischen verstehen und anwenden können besteht ein himmelweiter Unterschied.
Nur durch das Lesen kommt man hier nicht weiter. Man muss selbst herumexperimentieren, um die nötige Erfahrung zu sammeln. Und das geht nicht von heute auf morgen.

13

22.04.2006, 18:16

Zitat


Zwischen verstehen und anwenden können besteht ein himmelweiter Unterschied.
Nur durch das Lesen kommt man hier nicht weiter. Man muss selbst herumexperimentieren, um die nötige Erfahrung zu sammeln. Und das geht nicht von heute auf morgen.


Ich weiß! Aber Anwenden kann ich es ja!
Ich habe schon einzelne Programme geschrieben.

Zitat


In der Rezension zu diesem Buch steht, dass dort auch Klassen, Templates uund Vererbung drankommen.


Das mit den Klassen habe ich nicht so verstanden :( !

Ich weiß nicht was sie bedeuten und was man mit diesen anfangen soll!

Das ist in dem Buch ein bisschen komisch erklärt!

Vielleicht kann mir ja einer von euch sagen was Klassen sind?

Gruß Flo

:wirbel:

Anonymous

unregistriert

14

23.04.2006, 03:33

Re: Totaler Anänger! Hab ein paar Fragen!

Zitat von »"F-Wölkchen"«


Ich kenne schon viele programmiersprachen (z.B. Java, Flash, PHP, (HTML), C++ ein bisschen)!


Zitat von »"F-Wölkchen"«


Jetzt wollte ich mal wissen wie man ein 3d Spiel Programmiert!
Was braucht man dafür?



Es sei denn du hast 2 Artikel in der Bravo gelesen (und auch dann) ist dies "ad absurdum". Ansonsten sind hier diverse Tips genannt worden. (Mensch bin ich schlecht drauf!)

Geh bitte auf http://www.robsite.de/tutorials.php?tut=c und lade irgendein Tut. die Frage der Klassen sollte somit erledigt sein. Tip= http://www.robsite.de/download.php?id=29&rubrik=tc

Anschliesend die Tuts von Daniel Deischl abarbeiten. (Workshop 1-4)

Solltest du das überstanden haben werden sich alle Wölkchen verziehen. Du wirst happy sein , die Sonne geniessen und nichts mehr von Java sabbeln 8)
cu

15

23.04.2006, 10:19

Zitat von »"F-Wölkchen"«

Reicht das wenn man so die Grundkenntnisse kann wie:
-for und while schleife
-if bedingungen
-dateien löschen/speichern und bearbeiten
-Textausgeben ( ;) )
-Funktionen
-Variablen (int,string,char usw..)+ globale Variablen

(guter Anfang, da gibt es aber noch deutlich mehr)


Ok, schauen wir mal was ein C++ Programmierer zudem an Rüstzeug mithaben sollte:
  • Pointer (Sowohl für normale Datentypen als auch Funktionen)
  • Typesysteme (Type Conversion etc.)
  • Union vs. Struct
  • Speicherallociieren und wieder freigeben. (Wie bekomme ich Daten auf den Heap?)
  • Arrays und Objecte
  • Operatoren überladen
  • Klassen
  • Vererbung
  • Polymorphie
  • Headerdateien (wichtig)
  • Templates (Sollte man ein wenig drüber wissen)
  • Debugging (Sollte man halbwegs mit umgehen können)
  • Betriebssystem spezifische Eigenheiten (z.B. Windows Nachrichtenschleife)

So, das war die kurze Darstellung nun kommt die lange. Wäre eigentlich ne prima Sache dies in ein FAQ zu packen.


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
Kontrollstrukturen
 - Schleifen, If, Rückgabeparameter, break, continue etc.

Datentypen
 - Standardtypen
 - Struct / Union
 - Pointer
   - call by Value
   - call by Refference
   - const
   - Funktionszeiger
 - Arrays und Strings
   - Deklaration
   - Speicheraufbau
     - Heap
     - Stack
   - Zugriff
   - Pointerarithmetik
   - Mehrdimensonale Arrays
 - Dynamic/Static Typed
 - Strongly Typed
 - Cast

Funktionen
 - Aufbau der Funktion (Prototyp)
 - Definition
 - Function Call
 - Deklaration
 - Rekursion
 - Iteration
 - Scope, Life Time, Linkage
 - Orthogonalität zweier Features
 - Verdeckung
 - Default Argumente
 - Funktion Overloading
 - inline Funktion
 - Funktion richtig dokumentieren
 - spezielle Funktionen (main, exit)
 - Librarys

Klassen/Objekte
 - Definition
 - Deklaration
 - Aufruf
 - privat / public / protected
 - Terminologie
 - Komposition / Assoziation
 - Konstruktor
   - Copy Konstruktor
 - Destruktor
 - Initialisierungsliste
 - Header + Source
 - Zuweisungsoperator
   - Deklaration
   - Definition
   - Shallow Copy / Deep Copy
   - this Zeiger
   - memcpy();
 - expricite / static
 - New / Delete
   - Gang of three
   - Funktoren
 - Operatoren
   - Präfix / Postfix / Unär / Binär

Vererbung
 - Syntax
 - nicht vererbte Methoden (gang of three)
 - Initialiserung
   - Konstruktorenreihenfolge
   - Destruktorenreihenfolge
   - Copy Konstruktor
   - Zuweisungsoperator
   - Upcasting
   - Redifinition / Overriding
 - Überschreiben von Funktionen
 - Überladen von Funktionen
 - Verbergen von Funktionen
 - virtuelle Methoden
 - slicing

Polymorphie
 - RTTI [dynamic_cast<Typ*>(Quelle) ]
 - Mehrfachvererbung
 - Mehrdeutigkeit
   - virtual
 - Abstrakte Funktionen (ADT)
   - Implementierung

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

16

23.04.2006, 12:33

@F-Wölkchen
Wie kann es sein, dass du Java programmieren kannst, aber keine Ahnung von OOP hast!??!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

17

23.04.2006, 12:40

Zitat von »"F-Wölkchen"«

Ich hatte erst vor ein paar tagen mit C++ angefangen!


Zitat von »"F-Wölkchen"«

Ich weiß! Aber Anwenden kann ich es ja!


Zitat von »"F-Wölkchen"«

Vielleicht kann mir ja einer von euch sagen was Klassen sind?


Zitat von »"F-Wölkchen"«

Ich kenne schon viele programmiersprachen (z.B. Java, Flash, PHP, (HTML), C++ ein bisschen)!


Das sagt doch bereits alles.
Es hat wenig Sinn, die Diskussion fortzusetzen!

18

23.04.2006, 13:17

Zitat von »"F-Wölkchen"«

Das mit den Klassen habe ich nicht so verstanden :( !


Eigentlich wäre es besser wenn du das wirklich mal in einem Buch nachschlägst.

Kurz, Klassen sind ähnlich wie Variablen eine Box in die man Dinge stopfen kann. In Variablen kann man nur Daten stecken, in Klassen auch noch Funktionen (im Fachjargon dann Methoden genannt). Die Daten nennt man Felder oder Attribute.

Warum das ganze? Weil man damit logisch zusammenhängende Strukturen kapseln kann.

Ganz nebenbei kann man damit so tolle Sachen wie Vererbung betreiben. Was damit gemeint ist liest du aber lieber ausführlich in einem Buch, ist einfach zu viel für einen Forenbeitrag.

Schau auch mal in die Wikipedia hinein.

Noch ein kleines Beipiel zum Schluss. Du hast ein Auto was du beschreiben musst.

Dieses Auto hat bestimmte Attribute wie z.B. Länge, Breite, Geschwindigkeit etc. diese Speichern wir in Variablen.

Dann kann unser Auto noch bestimmte Sachen z.B. beschleunigen, Türe auf/zu und loopings machen ;) ...

Jetzt kann man dies in einer Klasse modellieren, das sähe dann z.B. so aus.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Auto
{

// Die Attribute

float Geschwindigkeit;
float Breite;
float Laenge;

// Die Methoden, also was unser Auto kann.

void gibGas(float);
void haltAn();
float getBreite();
...

};

// Jetzt muss man für die Methoden noch festlegen was sie machen.


void Auto::gibGas(float speed){
   Geschwindigkeit = Geschwindikeit + speed; // <-- hier wird auf ein Attribut des Objektes zugegriffen

}

float Auto::getBreite(){
   return Breite; // <-- hier gleich nochmal

}

void Auto::haltAn(){
  Geschwindigkeit = 0;
}


So, der Anfang ist etwas umständlich und damit alleine kann ich nicht viel anfangen. Wir haben uns jetzt erstmal einen Datentypen erstellt.

Den jetzt zu benutzen ist allerdings recht einfach.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void main(){
    Auto Flitzer1 = new Auto; // <-- hier wird aus der Klasse ein Objekt erstellt.

    Auto Flitzer2 = new Auto; // <-- hier noch ein zweites.


// Nun lasse ich meine Autos fahren.


Flitzer1.gibGas(50);   // Wer gewinnt wohl? :-)

Flitzer2.gibGas(150);

Flitzer1.haltAn();
Flitzer2.haltAn();

// Achtung, was so einfach nicht geht ist.

Auto.haltAn(); // <-- Denn welches Auto ist jetzt gemeint? Beide?


// Es gibt natürlich einen Weg dies über Klassenmethoden zu machen. Wäre doch prima wenn man alle Autos gleichzeitig anhalten lassen könnte. Viel Spaß beim Herausfinden. :D


}


Achtung, das ist alles jetzt sehr schlampig hingeschrieben. Man muss dabei noch einiges weitere beachten und so ist das alles auch nicht wirklich auf die feine Art, aber wie gesagt -> BUCH <-.

Hinweisen möchte ich noch gerne auf den Unterschied Objekt und Klasse. Ein Objekt ist eine Instanz einer Klasse, also in unserem Fall der Flitzer, die Klasse selber ist nur das Gerüst aus Methoden und Feldern.

19

23.04.2006, 17:45

Das nenne ich mal eine Liste!
Wow!
Ok da habe ich noch eine mänge vor!

Vielen Dank!

Gruß Flo

20

23.04.2006, 17:50

Danke für die erleuterung!
Jetzt ist alles klar!


Gruß Flo

PS: so schlampig war das garnicht! Besser als im Buch ;)

Werbeanzeige