Fragen zu crlscr() und srand()
-
Hallo, ich schreibe grade an einem kleinen Textspiel, mehr eine Programmierübung als dass es wirklich ein Spiel werden soll. Es besteht aus Storyteilen und rundenweisem Kampf.
Erstes Problem:
Damit sich der Spieler zwischen den Kämpfen besser auf die Handlung konzentrieren kann, möchte ich alles,was während das Kampfes ausgegeben wurde vom Bildschirm löschen. Es stört dann einfach, wenn man hundertmal auf dem Bildschirm sehen kann, wieviel Gesundheit man in irgendeiner Kampfrunde hatte. Ich bräuchte also eine Funktion wie clrscr(), nur sollte sie nur einen bestimmten Bereich des Schirms löschen. Wie könnte sowas aussehen?Zweites Problem:
Ich verwende, um den Schaden auszuwürfeln eine Funktion wie:int damageBoss() { srand((unsigned) time(NULL)) ; int gegenSchaden = 0; if((rand() % 100) <= 60)//würfelt ob man überhaupt trifft { gegenSchaden = 8 + (rand() % 25);//würfelt den Schaden (hier 8-32) if(gegenSchaden >= 8 && (rand() % 100) <= 5) //kritische Treffer {gegenSchaden = gegenSchaden * 2;} } return gegenSchaden; }Hin und wieder kommt es allerdings vor, dass die Funktion 5-10 Mal nacheinander immer Null zurückgibt, obwohl sich in der Zwischenzeit die Rückgabe von time(NULL) geändert haben müsste. Dass die Funktion nur einmal Null zurückgibt kommt dagegen sehr selten vor, das erscheint mir seltsam und es stört den Spielfluss, weil bis zu 10 Kampfrunden lang nichts passiert. Was ist hier los?
3. Frage:
Ich würde gern eine Speichermöglichkeit einbauen, mir fällt aber keine Möglichkeit ein, wie man das machen könnte. Hat jemand eine Idee?Danke schonmal!
-
Oh, ich seh grade, falsches Forum...bitte verschieben. Danke!
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++/CLI mit .NET in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Zu 2.
Einen Zufallsgenerator initialisiert man genau ein mal und nicht öfter.
-
Zu 1.: Du kannst den Bildschirm nur komplett löschen. Du musst dann das Bild immer komplett neuaufbauen. D.h alles, was du beibehalten willst, musst du im Speicher ablegen und neu schreiben.
3.: Einfachste möglichkeit wäre alles in eine Datei zu schreiben mit einer festgelegtn Form. Ich weiß nicht, wie deine Daten aussehen, aber eine Möglichkeit wäre diese mit Kommata zu trennen.
-
Das Zufallsgenerator-Problem ist gelöst, ich initialisiere den Zufallsgenerator jetzt schon in der main().
Das mit dem Speichern des Textes der erhalten bleiben soll, ist eine gute Idee, darauf bin ich noch nicht gekommen.
Und dass ich die Daten mit Kommata getrennt in eine txt-Datei schreibe, soweit war ich auch schon. Das Programm muss also eine txt-Datei erstellen, beschreiben, auslesen und löschen können. Ich denke, das müsste doch alles mit iostream machbar sein, ich weiß nur nicht wie. Ich wäre dankbar für Codebeispiele.Tetrapak
-
Schau mal in den FAQ, da gibt es einen schönen Beitrag von Hume:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39469.html
-
Hallo ich habe erneut ein Problem mit clrscr(). Ich habe mein Spiel nun so aufgebaut, dass immer der ganze Bildschirm gelöscht wird und danach das was nötig its, wiederaufgebaut wird. Dafür habe ich #include<conio.h> in den Header geschrieben. Eine bessere Methode konnte ich nicht finden. Wenn ich nun aber im Programm clrscr(); schreibe, meldet Dev-Cpp: "[Linker Error] undefined reference to 'clrscr'". Was ist hier los?
-
Wie wär's mit der
Improved Console von SideWinder? Damit wärst du wenigstens auf Windows compilermäßig Portabel.Greetz, Swordfish