Text vollständig löschen
Übersicht

NoName23Betreff: Text vollständig löschen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe da ein Problem. Wenn ich zb.:
Print "Beispieltext" Cls Print "Beispieltext 2" schreibe, dann wird "Beispieltext2" unter "Beispieltext1" ausgeben obwohl ich ja "Beispieltext1" gelöscht habe. Schreibe grade ein Textadventure. Ich könnte logischerweise auch: Print "Beispieltext" Cls Text 0,0, "Beispieltext 2" schreiben aber das ist in dem Fall eines Textadventures ziemlich umständlich. Gibs da eine andere Möglichkeit? |
||
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, eine Konsole ist keine Grafikausgabe. Mach ein "echtes" Fenster auf und arbeite mit "Text", dann geht alles.
cu |
||
Schnuff |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
lol, bitte nicht schlagen, aber was ist mit locate 0,0 ?
das müsste das nächste print wieder noch ganz oben setzen oder? |
||
Programmers dont die. They gosub without return... |
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sollte, aber ich versuche ja nur irgendwie die Leute dazu zu kriegen nicht wirklich den allerletzten Blödsinn zusammen zu schreiben. Ein Textadventure mit einem Konsolenbefehl gemischt mit Locate und im schlimmsten Fall auch noch Text das ist einfach nur Scheisse. Wieso sollte man das also fördern? | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Textadventures würde ich gleich mit TAG schreiben oder - sofern es nur Multiple Choice werden soll - mit HTML. Wenn es nur zum üben ist, darf es schon ein wenig mehr als nur Textausgabe sein... | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
NoName23 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also wenn ich jetzt Graphics 800, 600, 32, 2 eingebe hab ich das Problem immernoch. Ich mach euch nochmal ein Beispiel:
Print "yxyxyxyyxyxyxyxyx" Print "yxyxyxyxyxyxyxyxy" <--hier steht die Story drin.Da es ja keinen Zeilenumbruch gibt muss ich es so schreiben. Print "yxyxyxyxyxyxyxyxy" cls Print "Jetzt komt die Frage" Print "Die kann auch zwei Zeilen lang sein" Print "Antwortmöglichkeit1" Print "Antwortmöglichkeit2" Print "Antwortmöglichkeit3" Dieser ganze untere Teil wird so circa im zweiten Viertel des Bildschirms ausgegeben. Also unter dem anderen den man ja nicht mehr sieht. Gibs da eine Möglichkeit das dieser Text mit den Fragen und Antworten ganz oben links ausgegeben wird? Logisch könnt ich beim ersten Satz Locate 0, 0 schreiben aber was soll ich bei der 2. Zeile in Locate hineinschreiben damit der Satz genau darunter ausgegeben wird? Und überhaupt wäre das ziemlich umständlich. Ich mach das nur aus Spaß und auch Übung. Hab erst vorgestern angefangen mit Blitz. |
||
Rocys |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ver such dich doch gleich daran, mit den 'richtigen' Text Befehlen zu arbeiten, die kannst du dann auch spaeter noch benutzen. Print ist viel zu unflexibel.
Code: [AUSKLAPPEN] text 0,0,"yxyxyxyyxyxyxyxyx" text 0,20,"yxyxyxyxyxyxyxyxy" text 0,40, "yxyxyxyxyxyxyxyxy" flip repeat until getkey()<>0 cls text 0,0,"Jetzt komt die Frage" text 0,20,"Die kann auch zwei Zeilen lang sein" text 0,40,"Antwortmöglichkeit1" text 0,60,"Antwortmöglichkeit2" text 0,80,"Antwortmöglichkeit3" flip so sollte es funktionieren, und du lernst gleich ein bisschen mehr. |
||
NoName23 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke Rocys. Ich hab halt nicht gewusst welche Zahlen ich nach "Text" schreiben soll. Nun hab ich noch ein Problemchen:
Da es bei dem "Spiel"(wenn man das so nenne darf ![]() Auswahl = Input ("Gib 1, 2 oder 3 ein") Select Auswahl Case "1" Text 0,40, "yxyxyxyxyxyxyxyxyxyxyx(und dieser Text wird jetzt so lang das es über den Bildschirm hinaus geht)" Case "2" Text 0,60, "yxyxyxyxyxy" Case "3" Text 0,80, "yxyxyxyxyxy" End Select Jetzt kann ich nicht den ganzen Text von der Auswahlmöglichkeit 1 anzeigen denn ich kann ja den Text nicht aufteilen. Denn das: Case "1" Text 0,40, "Der Anfänger fragt im Forum nach(hier ist jetzt der Bildschirmrand)" Case "1" Text 0,60, "und bekommt viele Antworten" ..... geht ja nicht. Lösung?[/code] |
||
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Select lol
Case 1 Text 0, 0, "Zeile 1" Text 0, 15, "Zeile 2" Case 2 Text 0, 0, "Zeile 1" Text 0, 15, "Zeile 2" End Select Außerdem ist es schwachsinnig einen Integer('Auswahl') mit einem String(' "1" ') zu vergleichen, da solltest du dich für eins entscheiden. |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
NoName23 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das wäre auch gelöst. Aber da kommt gleich das nächste ![]() Text 0,20, " Gib deine Auswahl ein" Auswahl = Input () kommt dieses blinkende Kästchen wo man reinschreibt auf Position 0,0, und nicht auf 0,2. Mit dem Print hatte ich das Problem nicht da das ja alles ohne Positionsangabe ausgegeben wurde. Lösung? |
||
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Function GetInput$(x,y,sPrompt$,sFilter$,sDefault$,iMaxLength)
; x = x location of the prompt, if any, or text input ; y = y location ... ; sPrompt$ is the prompt, such as "Please enter your name:" ; sFilter$ is very useful. It ONLY allows the user to enter certain characters. For example, "ync" would only allow "y","n" or "c" ; There are also a few special 'codes': ; "/all" or "" means allow anything to be entered ; "/123" allows only 0 through 9 to be entered ; "/abc" allows only letters of the alphabet to be entered FlushKeys iFlashInterval = 300 ; The blinking cursor speed sTotal$ = sDefault$ iNumDigits = Len(sDefault$) If Lower$(sFilter$) = "/123" Then sFilter$ = "0123456789" ; All the numbers If Lower$(sFilter$) = "/abc" Then sFilter$ = "abcdefghijklmnopqrstuvwxyz" ; All the letters iTotalWidth = StringWidth(sPrompt$) + (iMaxLength * FontWidth()) iTotalHeight = FontHeight() hTextBuffer = CreateImage(iTotalWidth,iTotalHeight) ; Where the text will be drawn before blitting to the backbuffer() hCleanCopy = CreateImage(iTotalWidth,iTotalHeight) ; Will hold a clean copy of the backbuffer (not the whole thing) MaskImage hTextBuffer,255,0,255 ; Make the text background transparent so we can show text with BG showing SetBuffer ImageBuffer(hTextBuffer) ; We're going to draw to the text buffer ClsColor 255,0,255 ; Temporarily make the cls color the transparent color (magenta) Cls ; Now clear to magenta ; Foreground (text) will be drawn in the current color CopyRect x,y,iTotalWidth,iTotalHeight,0,0,BackBuffer(),ImageBuffer(hCleanCopy) ; Save a clean copy of the back buffer where the ; text is going to be SetBuffer BackBuffer() Repeat ; Blinking cursor code ******************************************************************************************************* iCurrentTime = MilliSecs() If bFlash = True Then If (iCurrentTime - iOldFlashTime) >= iFlashInterval Then bFlash = False iOldFlashTime = MilliSecs() EndIf Else If (iCurrentTime - iOldFlashTime) >= iFlashInterval Then bFlash = True iOldFlashTime = MilliSecs() EndIf EndIf ; Input starts here ********************************************************************************************************** iKeyPressed = GetKey() If iKeyPressed = 13 Then sKeyPressed$ = "" Else sKeyPressed$ = Chr$(iKeyPressed) EndIf ; If the key passes, add it to the total ************************************************************************************* If iKeyPressed Then If (sFilter$ = "/all") Or (sFilter$ = "") Or (Instr(sFilter$,sKeyPressed$) > 0) Then ; "all" does not filter any keys out If Len(sTotal$) < iMaxLength Then sTotal$ = sTotal$ + sKeyPressed$ ; Add it to the total string if it passes iNumDigits = iNumDigits + 1 EndIf EndIf EndIf ; If backspace was pressed, delete the last character from the total and update the number of digits ************************* If KeyDown(14) And iNumDigits > 0 Then sTotal$ = Left$(sTotal$,iNumDigits - 1) iNumDigits = iNumDigits - 1 Delay 50 EndIf ; Draw the clean background and then the text on the backbuffer() ************************************************************ DrawBlock hCleanCopy,x,y ; Draw the cursor if enough time has passed (change iFlashInterval for different speeds) ************************************* If Len(sTotal$) = iMaxLength Then rx = StringWidth(sPrompt$ + sTotal$) - StringWidth(Right$(sTotal$,1)) rw = StringWidth(Right$(sTotal$,1)) Else rx = StringWidth(sPrompt$) + (Len(sTotal$) * FontWidth()) rw = FontWidth() EndIf If bFlash = True Then Text x,y,sPrompt$ + sTotal$ Rect x + rx,y,rw,FontHeight(),True Else Text x,y,sPrompt$ + sTotal$ EndIf Flip Until iKeyPressed = 13 ; This is the 'return/enter' key ClsColor 0,0,0 ; Reset back to black Return sTotal$ End Function |
||
NoName23 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ähhhm....ok ich muss also eine eigene Funktion erstellen um das Problem zu lösen. Aber wie würde diese Funktion ausschauen? | ||
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sieht das da oben aus wie ein Poster von Bridney Spears? Das IST eine komplette Funktion, lies die Kommentare und benutze sie. Du brauchts sie nur in deinen Code zu pasten und aufzurufen. ![]() Code: [AUSKLAPPEN] jawatdenn = GetInput$(0,0,"Gib was ein :","/all","Nichts",28)
Wenn das schon zu viel ist dann fehlen dir die Basics was Functionen angeht, dann überlege was anderes bist du an dem Punkt bist. cu |
||
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und was bringt ihm diese Funktion, wenn er sie nicht versteht?
Du solltest Anfänger nicht durch vorkauen 'helfen'. Dabei lernt man nämlich nichts und übermorgen haben wir den nächsten Thread, weil der Anfänger immer noch genauso viel Ahnung hat wie vorher. @NoName: Das sollte helfen: Code: [AUSKLAPPEN] Locate X, Y
Im übrigen solltest du ab und zu mal die Suchfunktion benutzen(wenn du nichts findest machst du was falsch). Außerdem empfehle ich dir, dass du dir die(leicht veraltete) deutsche BB-Hilfe von www.blitzbase.de runterlädst, falls du das noch nicht getan hast. Am besten lernt man übrigens durch selber machen. Mir kommt es so vor, als ob du nur fünf Minuten rumprobierst und dann einfach mal ins Forum schreibst. Du kannst es dir vielleicht nicht vorstellen, aber es gibt Leute, die ganz ohne Forum, nur mit Hilfe der BB-Hilfe BB gelernt haben... Das Stichwort lautet Eigeninitiative. |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
NoName23 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@aMul
![]() ![]() Habe schon meine eigene Lösung gefunden: Print "" Print "" Print "" Print "" ... Bis Input in der richtigen Position ist. Nicht sehr elegant aber das Ergebnis ist das richtige ![]() Weis schon das ausprobieren das beste ist. Hab das Tutorial http://de.wikibooks.org/wiki/B...y-Tutorial in einem Zug bis Types durchgelesen habe aber fast garnichts behalten. Erst bis ich alles durchprobiert habe hab ichs gespeichert. ![]() Nochmals Dnake für eure Hilfe. |
||
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
aMul hat Folgendes geschrieben: Und was bringt ihm diese Funktion, wenn er sie nicht versteht?
Sie ist ja gut dokumentiert, ich verlange ja nicht das er "erraten" soll was er tun muss. Aber er hat ja schon einen Weg gefunden für den Moment. cu |
||
Tombi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Aber du solltest trotzdem mit Text X,Y,"Text" anfangen.
Wenn du z.b. auch einen Hintergrund machen willst, da reicht schon ein Clscolor 200,200,200 aus, wird der mit Print wieder gelöscht. Mit Text wird er beibehalten ![]() |
||
NoName23 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Tombi
Klar, ist ja viel praktischer. Wenn ich fertig bin kann ich ja den Code posten. Schauen was ihr dazu sagt ![]() |
||
Tombi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Na` vielleicht gibt es ja einige Leute die dir dann das gante in den Befehl Text umschreiben. Ich z.b. würde das schnell dann für dich machen ![]() |
||
Rocys |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wenn das ganze nur multiple-choice fragen sind, koenntest du dir schnell eine Abfrage fuer einzelne Tasten programmieren. Dafuer brauchst du glaub ich nur:
Code: [AUSKLAPPEN] text 0,200,"Gib eine Zahl von 1-3 ein!" repeat a$=chr$(getkey()) until a$="1" or a$="2" or a$="3" text 0,220,"Deine Eingabe: "+a$ so koennte mans denke ich machen. [/code] |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group