@Dimah:Naja...ist ja fast noch besser als system ("cls") *g*.
Da man alles in der FAQ findet dreh ich hier mal zu. So ne Art Exempel ;).
MfG SideWinder
Hallo Sic,
in Deiner Funktion Spielr() legst Du dir ja eine lokale Struktur Spieler an und initalisierst diese. Die Struktur Spieler in der main-Funktion wird nicht initialisert und enthält irgenwelche zufälligen Werte.
Probiers mal so:
#pragma argsused
int Spielr();
struct struct_Spieler
{
int iStr,iDex,iExp,iLevel,iLevelup;
int iAttributverteilpunkte,iLebenspunkte,imaxLebenspunkte;
int iAC,iAngriffswurf,iSchadenswurf;
};
struct_Spieler Spieler;
int main(int argc, char **argv)
{
Spielr();
cout<<"Str "<<Spieler.iStr<<endl<<"Dex "<<Spieler.iDex<<endl<<"Exp "<<Spieler.iExp<<endl<<"Level "<<Spieler.iLevel<<endl<<"ben. Exp "<<Spieler.iLevelup<<endl;
cout<<"verf. Attributp. "<<Spieler.iAttributverteilpunkte<<endl<<"Lebenspunkte "<<Spieler.iLebenspunkte<<endl<<"max. Lebensp. "<<Spieler.imaxLebenspunkte<<endl;
cout<<"Verteidigung "<<Spieler.iAC<<endl<<"Angriffswurf "<<Spieler.iAngriffswurf<<endl<<"Schadenswurf "<<Spieler.iSchadenswurf;
getchar();
return 0;
}
int Spielr()
{
Spieler.iDex=0;
Spieler.iLevel=1;
Spieler.iLevelup=1000;
Spieler.iLebenspunkte=30;
Spieler.imaxLebenspunkte=30;
Spieler.iAC=10;
return 0;
}
Schöner ist es natürlich wenn man die Struktur Spieler der Funktion Spielr als Parameter übergibt. Dann braucht man auch keine Globale Struktur.
MfG Neo
EditBySideWinder: Hier ist es üblich Code-Tags zu benützen!
[ Dieser Beitrag wurde am 07.10.2002 um 15:19 Uhr von SideWinder editiert. ]
Achso.Danke.Wusste ich gar nicht.Hab es gleich versucht aus der Funktion mit main(); wieder rauszukommen.Dann ist mir eingefallen, dass ja dann dauernd das gleiche passiert und hab mir gedacht jetzt frag ich was man da machen kann.
Hey stimmt, ich habe nur dieses Semikolon zuviel,sowas übersieht man sooo leicht.
Und ja ich habe noch mehr Code,aber es lag an dem Semikolon.
Vielen dank
#define cls system("cls");
ganz einfach: überall in deinem quellcode wird vor dem compilieren das "cls" durch "system("cls");" ersetzt. system() ist eine funktion, die auf die einen befehl an das betriebssystem übermittelt. in diesem fall "cls". dank dos gibts ja den befehl "cls" um den bildschirminhalt zu löschen.
Original erstellt von kingruedi:
jo, da kann man weder WinAPI noch conio.h (ausser mit der uconio Lib) nutzen. Aber für die improved console existieren Portierungen von mir.
auch dort würde ich meiner eigenen wege gehen ...
Oh, sorry, da hab ich was falsch verstanden...dachte du meinst "nicht über die Bereichsgrenze eines Arrays hinausschreiben", derweil meintest du eigentlich das vom User gezeichnete Fenster.
Nein, auf das passt er nicht auf. Kann man aber selbst machen:
// Übergeben wird die Länge des Fensters, der Cursor muss schon an der ersten Position des Eingabefelds stehen:
#include <string>
#include <conio.h>
using namespace std;
std::string input_in_a_field ( unsigned short int Laenge )
{
std::string Eingabe;
while ( Laenge-- )
{
Eingabe += getch ();
}
return ( Eingabe );
}
MfG SideWinder
Original erstellt von Shade Of Mine:
Einigen wir uns auf "String ist die Start-Adresse des Array"?
OK ..
Denn was du sagst ist auch falsch!
Was ist falsch an meiner Aussage?
**(String+3) == String[3]
String verhält sich wie ein const.
Naja ... Wenn ich mir mal dieses Programm hier anschaue:
#include <stdio.h>
int main(void)
{
char * const p = "Hallo";
char a[] = "Welt";
(char *)p = "Schoene";
printf("%s %s", p, a);
return 0;
}
dann funktioniert die Sache. Wenn du aber eine Zuweisung wie '(char *)a = "...";' verwendest, geht's nicht...
@kingruedi: Wolltest du mir nicht ne Libary schicken?
@DocJunioR: Das Beispiel Projekt für die Klasse hat ein paar Fehler, du solltest es nicht so online stellen, ich hab einiege Zeit gebraucht um es zum laufen zu kriegen.
sorry hab gedacht durch diese tastenkombination würde dann ö im editor stehen. das es im kompilierten programm dann ist, ist mir schon klar (sonst würde GermanCodes() net funktionieren :D)
jepp der code von hume ist net schlecht. jetzt muss ich nichtmal mehr die funktion GermanCodes() aufrufen um dt. Umlaute auszugeben.
falls ich mal irgendwann anfange c++ zu verwenden ist es bestimmt interessant :D:D:D
Wenn eine noch nicht gelesene Tastatureingabe vorliegt, liefert kbhit einen Wert ungleich Null. Andernfalls liefert kbhit den Wert 0.
Ich denk mal du brauchst da n bizzl fiese Hardwaredirektansteuerung vorausgesetzt du arbeitest unter DOS... wenn du unter Windows arbeitest musst du wohl einen Umweg über die API bzw über DirectX machen
edit: ich seh da grad was Ö_ö
tasten wiederholungsrate
[ Dieser Beitrag wurde am 01.10.2002 um 16:08 Uhr von dreaddy editiert. ]
Hmm, findest du? Ich meine man findet alle Funktionen die in Frage kämen und kann lesen (vielleicht wäre sehen tatsächlich besser), dass man bei Sondertasten auch noch mal gesondert einlesen muss...
Findest du ehrlich, das sich da was tun müsste?
MfG SideWinder