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

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

31

08.08.2013, 06:49

Das geht aber nur für die komplette Konsole
Dann gibt's ja noch immer die anderen MSDN-Links ;)
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Gelöschter Benutzer

unregistriert

32

08.08.2013, 07:58

Danke für eure vielen Antworten :) Ich denke ich lass die Konsole so wie sie ist (1x kann ich die Farbe ja ändern). Ihr müsst Bedenken das ich noch Anfänger bin, und noch mitten im Buch.

Gelöschter Benutzer

unregistriert

33

17.08.2013, 12:36

ich hätte nochmal eine frage, da ich aber nicht extra einen neuen thread aufmachen will, stelle ich sie mal hier: mein Problem: ich kann Funktionen und Variablen einer Klasse nicht in einer anderen verwenden. ich binde die Headerdatei der klasse zwar ein, mittels #include, aber es kommt dann immer der fehler LNK2005. Mehrfachdeklaration. ich habe schon viel probiert, komm aber nicht weiter, hier mal ein minimalistischer codeausschnitt:

//CKarte.hpp

//

class
CKarte

{
public:
int Breite;
int Hoehe;
public:
CKarte ();void zeichneKarte ();
};
//
//CSpieler.hpp

//

class
CSpieler
{
public:
int xKoordinate;
int yKoordinate;public:
CSpieler ();
};
//CKarte.cpp
//
#include<iostream>
#include"CKarte.hpp"
#include"CSpieler.hpp"
usingnamespace std;
//Konstruktor CKarteCKarte::CKarte ()
{
Breite = 79;
Hoehe = 23;
}//Konstruktor CKarte
//Instanz von CKarte
CKarte Karte_01;
//Instanz von CSpieler
CSpieler Spieler_01;voidCKarte::zeichneKarte ()
{int Zaehler_Breite = 0;
int Zaehler_Hoehe = 0;cout << "aktuelle Breite = " << Breite << endl;cout << "aktuelle Hoehe = " << Hoehe << endl;
cout << endl;
cout << "Karte zeichnen" << endl;cout << "==============" << endl;while (Zaehler_Hoehe < Hoehe)
{while (Zaehler_Breite < Breite)
{if (Spieler_01.xKoordinate == Zaehler_Breite)
{cout << "O";
}
else
{cout << "X";
}
Zaehler_Breite++;
}
cout << endl;
Zaehler_Hoehe++;
Zaehler_Breite = 0;
}
};
//main.cpp
//
#include<iostream>
#include"CKarte.hpp"
#include"CSpieler.hpp"
usingnamespace std;int main ()
{
//Instanz von CKarteCKarte Karte_01;
//Karte auf Bildschirm zeichnen
Karte_01.zeichneKarte ();
//Warten
cin.get ();
cin.ignore ();
//Beendenreturn 0;
}
//CSpieler.cpp
//
#include<iostream>
#include"CKarte.hpp"
#include"CSpieler.hpp"
usingnamespace std;
//Instanz von CKarte
CKarte Karte_01;
//Konstruktor CSpielerCSpieler::CSpieler ()
{
xKoordinate = Karte_01.Breite /2;
yKoordinate = Karte_01.Hoehe /2;
}
//Instanz von CSpieler
CSpieler Spieler_01;

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

34

17.08.2013, 12:45

Wenn ich das richtig sehe, hast du sowohl in CKarte.cpp als auch in CSpieler.cpp Variablen Namens Karte_01 und Spieler_01 definiert!? Schau dir mal an, was das Schlüsselwort extern genau tut... ;)

PS: In Zukunft bitte Code Tags verwenden, ist für dich wesentlich weniger Arbeit und für uns wesentlich besser lesbar.

Gelöschter Benutzer

unregistriert

35

17.08.2013, 17:39

@dot: danke für die schnelle antwort. das mit den code tags, würde ich gerne umsetzen, nur weis ich nicht wie ich dies machen soll. Wegen extern: könntest du mir das vielleicht kurz erklären? ich habe schon geschaut, ich finde jedoch nichts passendes was ich mit meinem wissen verstehen kann. ich bin noch Anfänger und noch mitten im Buch für Spieleprogrammierer. Schon mal danke.

edit: ich hab mal rumprobiert, und jetzt kommt nicht aufgelöste Externe. hab einfach mal unter die Klasse in der .hpp Datei extern CSpieler Spieler_01;. was muss ich jetzt noch machen?

edit 2: jetzt funktionierts. andere frage: gibt es einen cin befehl, den man nach der eingabe nicht mit enter bestätigen muss, z. B. möchte man ein objekt bewegen, mit den tasten w,a,s,d. nun ist es doch lästig jede eingabe immer mit enter zu bestätigen, grade wenn man lange strecken zurücklegen will.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »alex41018« (20.08.2013, 13:34)


Werbeanzeige