Frage zur Textausgabe

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Messias

Betreff: Frage zur Textausgabe

BeitragSo, Apr 04, 2004 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie kann ich es machen wenn ich ein Text ausgeben will das dann die einzelnen Buchstaben langsamer ausgegeben werden? Question
 

IonPainter

BeitragSo, Apr 04, 2004 13:03
Antworten mit Zitat
Benutzer-Profile anzeigen
schlechte lösung:

Code: [AUSKLAPPEN]
Write "T"
delay 100
Write "E"
delay 100
Write "S"
delay 100
Write "T"
waitkey()


(ich weiss ich bin faul *g*)

Messias

BeitragSo, Apr 04, 2004 13:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ist denn wenn ich einen längeren Text ausgeben will dann ist diese Lösung glaube ich etwas zu aufwändig oder?

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Apr 04, 2004 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
in der Art wie man es von einer alten Schreibmaschiene kennt
muste mit left$ arbeiten
beispiel:
Code: [AUSKLAPPEN]
Graphics 640,480,16,2
Const ESC = 1
timer = CreateTimer(30)

a$ = "Ralllimen und der SchreibmaschienenEffeckt, es geht auch so..."
SetBuffer BackBuffer()
While Not KeyDown(ESC)
;#############################################
x= x +1
If Len(a$)  < x Then x = 0
Text 10,100,Left(a$,x)
;#############################################

WaitTimer (timer)
Flip:Cls:Wend:End
[BB2D | BB3D | BB+]

Jolinah

BeitragSo, Apr 04, 2004 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics 460,480,0,2
SetBuffer BackBuffer()

txt$ = "Text mit viel Buchstaben :)"

length = Len(txt$)
counter = 0
timer = 0
begin = 0

Repeat
Cls

   If MilliSecs() >= timer And counter < length And begin
      counter = counter + 1
      timer = MilliSecs() + 200
   EndIf

   Text 10,10,Left(txt$,counter)

   If KeyHit(57) Then begin = True

Flip
Until KeyHit(1)

End


Leertaste drücken damit es beginnt.

Ups war einer schneller, habs trotzdem mal gepostet.

Messias

BeitragSo, Apr 04, 2004 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie soll ich das in diesen Code z.b.s. reinbauen?

Code: [AUSKLAPPEN]

Graphics 800, 600, 16, 2

Color 0, 0, 255
Print "------------------------------Willkommen im Deleteprogram------------------------------"
x = Input("Gib das Passwort ein:")

If x = 45674 Then
  Print "Das Eingegebene Passwort ist richtig"
    Else
      Print "Das Eingegebene Passwort ist ungültig"
       WaitKey
        End
EndIf

Color 255, 255, 0
Print "Was möchten sie machen?"
y$ = Input$()

If y = "Festplatte löschen" Then
  Print "Welche Partition wollen sie löschen"
    ElseIf y = "Dateien löschen" Then
      Print "Geben sie bitte den Pfad der Datei/en an"
        ElseIf y = "Ordner löschen" Then
          Print "Geben sie den Pfad des Ordners an"
            Else
              Print "Diese Funktion steht nicht zur verfügung"
End If

z$ = Input$ ()
DeleteDir z$

WaitKey
End

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Apr 04, 2004 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
hab da mal eine neue function eingebaut, mußte es allerdings mit write und print machen , wegen der Vorgabe des codesCode: [AUSKLAPPEN]
Graphics 800, 600, 16, 2

Color 0, 0, 255
 Printx ("------------------------------Willkommen im Deleteprogram------------------------------" )
Printx ("Gib das Passwort ein:")
x = Input()

If x = 45674 Then
  Print ("Das Eingegebene Passwort ist richtig")
Else
  Printx ("Das Eingegebene Passwort ist ungültig")
  WaitKey
End
EndIf

Color 255, 255, 0
Printx ("Was möchten sie machen?")
y$ = Input$()

If y = ("Festplatte löschen") Then
        Printx ("Welche Partition wollen sie löschen")
ElseIf y = ("Dateien löschen") Then
      Printx ("Geben sie bitte den Pfad der Datei/en an")
ElseIf y = ("Ordner löschen") Then
      Printx ("Geben sie den Pfad des Ordners an")
Else
  Printx ("Diese Funktion steht nicht zur verfügung")
End If

z$ = Input$ ()
DeleteDir z$

WaitKey
End

Function Printx(A$)
   Repeat
   If MilliSecs() > timer
      timer = MilliSecs()+50
      x= x +1
      If Len(a$)  < x Then Exit
         Write Mid$(a$,x,1)
      End If
   Forever
   Print
End Function
[BB2D | BB3D | BB+]

Jolinah

BeitragSo, Apr 04, 2004 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier eine mögliche Lösung wenn du ne Schleife hast und das ganze mit Text machen müsstest.


Code: [AUSKLAPPEN]

Graphics 460,480,0,2
SetBuffer BackBuffer()

Type ausgabe
Field txt$
Field length, counter, timer
Field begin
Field x,y
End Type

Type normal
Field txt$
Field x,y
End Type


Repeat
Cls

   a.ausgabe = First ausgabe
   If Not a = Null Then a\begin = 1

   For a.ausgabe = Each ausgabe
      If a\begin
         If MilliSecs() >= a\timer And a\counter < a\length
            a\counter = a\counter + 1
            a\timer = MilliSecs() + 50
         EndIf

         Text a\x,a\y,Left(a\txt$,a\counter)

         If a\counter = a\length
            n.normal = New normal
            n\txt$ = a\txt$
            n\x = a\x
            n\y = a\y
            
            Delete a
         EndIf
      EndIf
   
   Next

   For n.normal = Each normal
      Text n\x,n\y,n\txt$
   Next

   If KeyHit(57)
      myprint(10,10,"Beispiel Text Nummer 1")
      myprint(10,30,"Und das ist Text Nummer 2")
   EndIf
      

Flip
Until KeyHit(1)

Delete Each ausgabe
Delete Each normal

End



Function myprint(x,y,txt$)
   a.ausgabe = New ausgabe
   a\txt$ = txt$
   a\length = Len(a\txt$)
   a\counter = 0
   a\timer = 0
   a\begin = 0
   a\x = x
   a\y = y
End Function

Travis

BeitragSo, Apr 04, 2004 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt zwar schon zwei Lösungen, habe aber auch eine entwickelt. Ich habe eine Funktion dazu geschrieben. Die Position und die Geschwindigkeit des Textes kann angegeben werden.

Code: [AUSKLAPPEN]

DelayText(20,20,"Das ist der Text", 70)

WaitKey
End

Function DelayText(x, y, Text$, del)
Locate x, y

For i = 1 To Len(Text$)
 Letter$ = Mid(Text$, i, 1)
 Output$ = Output$ + Letter$
 Text x,y, Output$
 Delay del
Next

End Function
www.funforge.org

Ich hasse WASD-Steuerung.

Man kann alles sagen, man muss es nur vernünftig begründen können.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Apr 04, 2004 15:46
Antworten mit Zitat
Benutzer-Profile anzeigen
hab mal die Printx version noch um einen einfachen Zeilenumbruch erweitert!Code: [AUSKLAPPEN]
Function Printx(A$)
 Repeat
  If MilliSecs() > timer
   timer = MilliSecs()+50
   x= x +1
   If Len(a$)  < x Then Exit
    If (StringWidth(Left(a$,x))-(GraphicsWidth()*zb+1))>GraphicsWidth()Print:zb=zb+1
     Write Mid$(a$,x,1)
  End If
 Forever
 Print
End Function


Mit Print ist es natürlich nicht der Hit!! genauso wie der Input Befehl!
aber ich denke das alle die mit Basic anfangen diese 2 Befehle als erstes nutzten werden, wegen des einfachen Code aufbaus.

>> man muss sich da nicht mit positionen rumschlagen!
(war bei mir jedenfalls so)
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group