PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2 Mini Fragen C++



dadie
30.04.2005, 11:55
Hallo ,

Ich baue gerade ein Kleines Spiel ^^

nur habe ich gerade 2 Probleme die nett Lösen kann

1,Wie Lösche ich nochmal alles was bsiher auf dem Bildschirm ausgegeben wurde (in Dos Fenster)

2,Folgender Code macht immer Faxen -.-

Bei Zahlen kann unentlich viele eingeben doch buchstaben nur 1nen sonst spaltet er das Wort und verteilt es auf alle Spieler oO?



for(i=1;i<=spieler;i=i+1)
{

char Spielername_i ;
cout << "Name für den Spieler Nr. " << i << " Eingeben " << endl;
cin>> Spielername_i ;

}


Kann mir jemand erklähren ? Charist doch für Buchstaben gedacht -.-

Mfg Dadie

Hippokrates
30.04.2005, 12:02
Ja, aber char kann auch nur einen einzigen Buchstaben aufnehmen. Um einen Spielernamen zu speichern musst du ein char-array oder gleich einen std::string benutzen.

Und AFAIK kann man in DOS den Bildschirm nicht wirklich loeschen...

Lukas
30.04.2005, 12:03
Ja, char ist für Buchstaben gedacht. Für einen Einzigen Buchstaben (genauer: für Zeichen).
Strings sind in C++ Array von chars. Alternativ kannst du auch mit dem Datentyp String arbeiten:
#include <string>
#include <iostream>

using namespace std;
main()
{
string Spielername;
cin >> Spielername;
cout << Spielername;
}Außerdem existieren Variablen nur in dem Block, in dem sie initialisiert wurden (und in untergeordneten Blöcken), also wird Spielername_i nach jedem Durchlauf der for-Schleife neu erstellt.

Ach ja, die Variable heißt Spielername_i, nicht Spielername_1, Spielername_2 usw.

dadie
30.04.2005, 12:25
Ach ja, die Variable heißt Spielername_i, nicht Spielername_1, Spielername_2 usw.

So etwas habe ich schon geahnt -.- wie speicher ich sie den _1 _2 usw. ab ? mit "" kann ixh nix machen das bringt nur errors -.-

MagicMagor
30.04.2005, 12:28
Statt Char-Arrays kann man auch noch auf die netten Char-Pointer zurückgreifen um nullterminierte Strings zu speichern..

Was die Eingabe angeht, würde ich persönlich zu cin.getline() greifen, damit kriegst du die Eingabe direkt in ein Char-Array geliefert..

Vielleicht solltest du mal ein grundlegendes C(++)-Tutorial durchackern, die Sprache ist in einigen Dingen recht eigenwillig..


So etwas habe ich schon geahnt -.- wie speicher ich sie den _1 _2 usw. ab ? mit "" kann ixh nix machen das bringt nur errors -.-
C++ ist kein PHP, schon mal was von Arrays gehört?

Lukas
30.04.2005, 12:29
Afaik gar nicht. C++ ist zum einen kompiliert und zum anderen älter als Php, da ist deutlich weniger Flexibilität drin.
Du solltest dir mal klarmachen, dass C++ und Php zwei völlig unterschiedliche Dinge sind. Gleiche Syntax != gleiche/ähnliche Sprache

dadie
30.04.2005, 12:31
C++ ist kein PHP, schon mal was von Arrays gehört?

Ja klarkenn ich Arrarys ich hätte es nur lieber mit jewals einer eigenen Variable gelöst -.-

Ynnus
30.04.2005, 13:54
Hier mal die alte C Variante mit char arrays:

#include <iostream>
using namespace std;

struct spielername_struct
{
char name[100];
}spielername[2];


int main()
{
char tmp[100];

for (int i = 0; i < 2; i++)
{
cout<<"Bitte den Spielername Nr. "<<i<<" eingeben: ";
cin>>spielername[i].name;
}

for (int i = 0; i < 2; i++)
{
cout<<"Name Nr. "<<i<<" lautet: "<<spielername[i].name<<"\n";
}

char a;
cin>>a;

return 0;
}

Ist noch eine Structur mit reingebaut, um das Doppeldimensionieren zu verhindern. So lässt es sich imo leichter handlen als mit spielername[100][2].

Dai2kMaster
30.04.2005, 14:27
C++ und PHP sind in dem Sinne verwandt, da PHP urspünglich von Perl stammt und dieses wiederum u.A. von C abgeguckt wurde!


C++ ist kein PHP, schon mal was von Arrays gehört?

Folglich gibt es in PHP auch Arrays ;)

Lukas
30.04.2005, 17:52
1,Wie Lösche ich nochmal alles was bsiher auf dem Bildschirm ausgegeben wurde (in Dos Fenster)
Die Frage hab ich bei meinem ersten Post überlesen. Afair ging das mit dem DOS-Befehl cls (unter Linux heißt das clear; DOS bin ich mir eben nicht ganz sicher). Ein einfacher System-Call sollte demnach genügen:
#include <iostream>

using namespace std;

main(){
cout << "blub";
system("cls");
}