simple animationen in der Eingabeaufforderung (C)

ccmax

Grünschnabel
Ich wollte fragen ob mir jemand hier eine Funktion für c schreiben könnte, in der ein zeichen (z.b. >) sich vorwärts und rückwärts bewegen, und sich nach links und rechts drehen kann. Es wäre auch sehr nett wenn jemand mir erklärt wie ich es in einer dll Speicher und wie ich diese mit dem Hauptprogramm aufrufen kann.

Danke
 
Zuletzt bearbeitet:
Ja, ich brauche es noch. Auch das mit dem vorwärts und rückwärts. Kann man nicht auch Zeilen nach oben laufen? Oder Wieder nach unten? In etwa so wie in den alten "Star-Defender" und "Asteroids" spielen für DOS etc. , wenn du weist was ich meine. Bloß das es nicht über Tastatureingaben während dem laufenden Programm geschehen soll, sondern über eine reihe von Funktionen die im Hauptprogramm aus DLL´s aufgerufen werden.
 
Hallo,

sorry dass ich so lang nicht geantwortet hab.
war verreist

Vorwärts etc:

Schreib am Programmanfang was in der Art:

HANDLE h;
h=GetStdHandle(STD_OUTPUT_HANDLE);
COORD c;

Wenn du woanders hinspringen möchtest:

c.X=12;//irgendeine Koordinaten
c.Y=10;
SerConsoleCursorPosition(h,c);

Dort schreibst du dann mit printf, putc oder so etwas hin
Zum weglöschen springst du vor die zeichen, die zum löschen sind,
und schreibst einfach leerzeichen hin.

DLL:
DLL erstellen:

VC: Neues Win32-Dll(oder dynamic-link-library) projekt
In der Quelltextdatei:

1) Statt int-main oder so machst du folgende funktion

BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){/*XXX*/return TRUE;}

Statt dem /*XXX*/ kannst du bei bedarf noch code einfügen,
die funktion wird immer aufgerufen, wenn die dll geladen (und entladen) wird.

2)Alle Funktionen, die die dll haben soll, einfach dazuschreiben

3)Vor jede Funktion

extern "C" __declspec(dllexport)

einfügen.

zB
extern "C" __declspec(dllexport) int funktion1(int a,int b){/*XXX...und so weiter*/return a+b;}

4)Kompilieren
Ergebniss ist eine dll und eine lib-datei

DLL verwenden:

1)DLL und Lib in den Ordner vom Programm kopieren
(in den Projektordner UND Debug/Release)
Beim Fertigen Programm muss die DLL aber nur noch einmal im gleichen Ordner sein
Die Lib brauchst du dann gar nicht mehr

2)Im Programmquelltext:
Projektoptionen-Linker
Dort bei der Dateiliste (alles lib-dateien!) deine Lib dazuschreiben

3)Von jeder DLL-Funktion, die du verwenden willst,
die Signatur oben im Quelltext einfügen(wieder mit Zusatz: dll IMPORT:siehe Beispiel)

zB
extern "C" __declspec(dllimport) int funktion1(int a,int b);//Rest nicht mehr

4) Funktion kann jetzt im Quelltext verwendet werden: Kompilieren, fertig

Aber Achtung: Wenn du das fertige Programm weitergibst:
Der Quelltext muss nicht dabei sein
Die Lib muss nicht dabei sein
Die DLL MUSS dabei sein!
 
Zurück