3D Text aus Draw-3D Archiv// Text Zeichen für Zeichen ändern

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Cedric30003

Betreff: 3D Text aus Draw-3D Archiv// Text Zeichen für Zeichen ändern

BeitragSo, Mai 15, 2011 20:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute!

Teste grade an 3D Text rum bzw Draw 3D.

Wie bekomme ich einen beliebeig veränderbaren Text damit auf z.B. einen Cube??
Also als Textur.

Wie geht das denn?

Danke im Voraus

MfG Cedric

PS: In der SuFu habe ich nichts gescheites gefunden
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB)
  • Zuletzt bearbeitet von Cedric30003 am Di, Mai 17, 2011 17:05, insgesamt einmal bearbeitet

BladeRunner

Moderator

BeitragSo, Mai 15, 2011 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
So wie ich das sehe, garnicht, denn laut der Hilfe ist der Befehl dafür nicht gedacht:
Text3D
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Cedric30003

BeitragSo, Mai 15, 2011 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie könnte man das denn anders lösen??

Du kannst mir bestimmt eine Antwort geben Very Happy
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB)

BladeRunner

Moderator

BeitragSo, Mai 15, 2011 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne Draw3D (mit der ich nie arbeitete) habe ich den Weg ja in einem anderen Thread von Dir / PhillipB schon beschrieben. SetBuffer TextureBuffer und Text sollten da helfen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Mai 16, 2011 19:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Man kann mit der neueren Draw3D2 auch Text direkt auf ein Objekt platzieren. Dazu muss allerdings ein Pivot an Ort und Stelle gesetzt werden. Das sähe dann in etwa so aus (YOUR TIME...):
user posted image
Aus dem Beispiel: Draw3D2.V.1.1\_Draw3D2.bb\Draw3D2 Stuff, Game-Environment.bb

Oder...

Text der einfach so sich nach einem Objekt richtet, also nur die berechneten X/Y-Position aus den Objekt X/Y/Z-Position, kann man mithilfe CameraProjectEntity3D oder CameraProjectCoords3D auf die globalen Variablen ProjectedX3D und ProjectedY3D ausgeben lassen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Cedric30003

BeitragDi, Mai 17, 2011 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
So, mit Hilfe von PhillipB habe(n) ich/wir das hinbekommen.

Nun haben wir uns drangesetzt einen Text Zeichen für Zeichen ändern zu lassen.

So in etwa:

1.) BLITZ
2.) FLITZ
3.) FOITZ
4.) FORTZ
5.) FORUZ
6.) FORUM

ist Zwar bisschen blöde beschrieben, aber besser kann ichs halt nicht.

WIe können wir einen solchen Effekt hinbekommen??

Folgendes haben wir ausgearbeitet,aber der funktuiniert hinten und vorne nicht:

Code: [AUSKLAPPEN]

Graphics3D 640, 480, 32,2
SetBuffer BackBuffer()
camera = CreateCamera()
light = CreateLight(1)
RotateEntity light, 90, 0, 0
cube = CreateCube()
PositionEntity cube, 0, 0, 5
RotateEntity cube, 30, 30, 30

Global beschilderung1$


Global SchilderTimer=CreateTimer (500)
Global neu_schild = 0

Function Neubeschildern ()
   neueBeschilderungz1$ = Input("Test: ")
End Function

Function Schildern ()
   If SchilderTimer<MilliSecs()
      If neu_schild = 0 Then
         SchilderTimer = MilliSecs() + 500
         neu_schild = 1
      ElseIf neu_schild = 1 Then
         alteBeschilderungz1_1 = neueBeschilderungz1_1
         SchilderTimer = MilliSecs() + 500
         neu_schild = 2
      ElseIf neu_schild = 2 Then
         alteBeschilderungz1_2 = neueBeschilderungz1_2
         SchilderTimer = MilliSecs() + 500
         neu_schild = 3
      ElseIf neu_schild = 3 Then
         alteBeschilderungz1_3 = neueBeschilderungz1_3
         SchilderTimer = MilliSecs() + 500
         neu_schild = 4
      ElseIf neu_schild = 4 Then
         alteBeschilderungz1_4 = neueBeschilderungz1_4
         SchilderTimer = MilliSecs() + 500
         neu_schild = 5
      ElseIf neu_schild = 5 Then
         alteBeschilderungz1_5 = neueBeschilderungz1_5
         SchilderTimer = MilliSecs() + 500
         neu_schild = 6
      ElseIf neu_schild = 6 Then
         alteBeschilderungz1_6 = neueBeschilderungz1_6
         SchilderTimer = MilliSecs() + 500
         neu_schild = 0
      EndIf
   EndIf
End Function

Global neueBeschilderungz1$ = 0
Global momentaneBeschilderungz1$ = 0


;Schriftart laden und in font speichern
font = LoadFont("ITCBLKAD",15,1)

;geladene Schriftart "setzen", also für spätere Textausgaben benutzen
SetFont font

Color 255, 255, 255
While Not KeyHit(1)
   
   ;Laden der Ziffern!
   If alteBeschilderungz1 <> neueBeschilderungz1 Then
      neueBeschilderungz1_1 = Mid$ (neueBeschilderungz1, 1 , 1)
      neueBeschilderungz1_2 = Mid$ (neueBeschilderungz1, 2 , 1)
      neueBeschilderungz1_3 = Mid$ (neueBeschilderungz1, 3 , 1)
      neueBeschilderungz1_4 = Mid$ (neueBeschilderungz1, 4 , 1)
      neueBeschilderungz1_5 = Mid$ (neueBeschilderungz1, 5 , 1)
      neueBeschilderungz1_6 = Mid$ (neueBeschilderungz1, 6 , 1)
      neueBeschilderungz1_7 = Mid$ (neueBeschilderungz1, 7 , 1)
      neueBeschilderungz1_8 = Mid$ (neueBeschilderungz1, 8 , 1)
      neueBeschilderungz1_9 = Mid$ (neueBeschilderungz1, 9 , 1)
      neueBeschilderungz1_10 = Mid$ (neueBeschilderungz1, 10 , 1)
      ;ALTEEEEEEEEE:
      alteBeschilderungz1_1 = Mid$ (alteBeschilderungz1, 1 , 1)
      alteBeschilderungz1_2 = Mid$ (alteBeschilderungz1, 2 , 1)
      alteBeschilderungz1_3 = Mid$ (alteBeschilderungz1, 3 , 1)
      alteBeschilderungz1_4 = Mid$ (alteBeschilderungz1, 4 , 1)
      alteBeschilderungz1_5 = Mid$ (alteBeschilderungz1, 5 , 1)
      alteBeschilderungz1_6 = Mid$ (alteBeschilderungz1, 6 , 1)
      alteBeschilderungz1_7 = Mid$ (alteBeschilderungz1, 7 , 1)
      alteBeschilderungz1_8 = Mid$ (alteBeschilderungz1, 8 , 1)
      alteBeschilderungz1_9 = Mid$ (alteBeschilderungz1, 9 , 1)
      alteBeschilderungz1_10 = Mid$ (alteBeschilderungz1, 10 , 1)
      Schildern
   EndIf
   
   
   momentaneBeschilderungz1$ = alteBeschilderungz1_1 + alteBeschilderungz1_2 + alteBeschilderungz1_3 + alteBeschilderungz1_4 + alteBeschilderungz1_5 + alteBeschilderungz1_6 + alteBeschilderungz1_7 + alteBeschilderungz1_8 + alteBeschilderungz1_9 + alteBeschilderungz1_10
   
   ;TEST TEXIS :
   texture1 = CreateTexture(128, 128)
   SetBuffer TextureBuffer(texture1)
   Text 0,0,momentaneBeschilderungz1$                          ;VARIABLE ZUM LADEN DES TEXTES
   SetBuffer BackBuffer()
   EntityTexture cube, texture1, 0, 0
   TextureBlend texture1, 2
   If KeyDown (200) Then
      Neubeschildern
   EndIf
   
   
   ;Schriftart wieder freigeben
   ;FreeFont font
   
   
   DebugLog neueBeschilderungz1
   DebugLog alteBeschilderungz1
   
   
   RenderWorld
   Flip
Wend
End


Danke im Voraus

MfG Cedric
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB)

Xeres

Moderator

BeitragDi, Mai 17, 2011 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist und Soll Strings auf eine Länge bringen (Leerzeichen). Zufälligen Buchstaben im Ist-String auswählen Rand, Len - zu Soll Buchstaben ändern - Warten / Zeit verstreichen lassen.
Einzelne Variablen für Buchstaben zu verwenden ist nie eine gute Idee, da unnötig, unübersichtlich und unvariabel.

Edit: Ein Testprogramm dazu muss auch nicht 3D oder unbedingt mit Hauptschleife ausgestattet sein. Print und die Funktion, die die Arbeit erledigt, reicht ja schon aus.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

PhillipB

BeitragDi, Mai 17, 2011 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Könntest du da villt. etwas genauer werden?
Also welche Befehle wir benutzen müssten wenn wir nicht mit jeder Ziffer arbeiten würden?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Mai 17, 2011 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Beispiel-Code: [AUSKLAPPEN]
Local Text1$="Hallihallo"
Local Text2$="Da bin ich"
Local Laengeres%=0
Local Count

If Len(Text1)>Len(Text2) Then
   Laengeres=Len(Text1)
Else
   Laengeres=Len(Text2)
End If

For Count=0 To Laengeres
   Print Mid(Text2,1,Count)+Mid(Text1,Count+1,Laengeres)
Next

WaitKey
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Xeres

Moderator

BeitragDi, Mai 17, 2011 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Left, Right, Mid, Len & ggf. Variablen für Positionen.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Cedric30003

BeitragDi, Mai 17, 2011 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
So, des geht schomal ganz okay, ABER, ich möchte, die angezeigt variable, die mit Text anzegeigt wird, gelöscht wird.

Schaut euch am besten mal das Programm an, dann wird sich mein Problem wohl selbst erklären:

Code: [AUSKLAPPEN]
Local Text1$="Halli hallo hallo!!!!!!!!!"
Local Text2$="Da bin ich                "
Local Laengeres%=0
Local Count

If Len(Text1)>Len(Text2) Then
   Laengeres=Len(Text1)
Else
   Laengeres=Len(Text2)
End If

For Count=0 To Laengeres
   Delay(200)
   anzeige$ = Mid(Text2,1,Count)+Mid(Text1,Count+1,Laengeres)
   DebugLog anzeige$
   Text 0,0,anzeige$
Next

WaitKey()




JA, Delay soll ich nciht verwenden, weiß ich, aber ich hatte grad keine Lust nen Timer zu basteln.

Danke im Voraus

MfG Cedric
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB)

count-doku

BeitragDi, Mai 17, 2011 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Musst halt nurnoch den alten Text löschen: (CLS)
BlitzBasic: [AUSKLAPPEN]
Local Text1$="Halli hallo hallo!!!!!!!!!" 
Local Text2$="Da bin ich "
Local Laengeres%=0
Local Count

If Len(Text1)>Len(Text2) Then
Laengeres=Len(Text1)
Else
Laengeres=Len(Text2)
End If

For Count=0 To Laengeres
anzeige$ = Mid(Text2,1,Count)+Mid(Text1,Count+1,Laengeres)
DebugLog anzeige$
Text 0,0, anzeige$
Delay 200
Cls
Next

WaitKey()
 

Cedric30003

BeitragMi, Mai 18, 2011 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
So, habe das ganze jez ein wenig angepasst, aber irgendwie hab ich grad nee Denksperre beim Timer.

Sorry wenn ich jetzt eine so dumme Frage stelle, aber ich steh mal wieder auf´m schlauch
Code: [AUSKLAPPEN]

Local Text1$="Hallihallo"
Local Text2$="Da bin ich"
Local Laengeres%=0
Local Count

If Len(Text1)>Len(Text2) Then
   Laengeres=Len(Text1)
Else
   Laengeres=Len(Text2)
End If

Global Timer = MilliSecs +500

While Not KeyHit (1)

   For Count=0 To Laengeres
   If Timer < MilliSecs Then
   anzeige$ = Mid(Text2,1,Count)+Mid(Text1,Count+1,Laengeres)
   DebugLog anzeige$
   Text 0,0, anzeige$
   Timer = MilliSecs + 500
EndIf
   If Count <> Laengeres Then
      Cls
   EndIf
Next

WaitKey()

Flip
Wend
End
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB)

Xeres

Moderator

BeitragMi, Mai 18, 2011 21:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktionen ohne Klammern liefern keine Werte zurück.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

PhillipB

BeitragDo, Mai 19, 2011 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Trotz des veränderns geht es nicht alles schwarz :
Code: [AUSKLAPPEN]
Local Text1$="Hallihallo"
Local Text2$="Da bin ich"
Local Laengeres%=0
Local Count

If Len(Text1)>Len(Text2) Then
   Laengeres=Len(Text1)
Else
   Laengeres=Len(Text2)
End If

Global Timer = MilliSecs () +500

While Not KeyHit (1)
   
   
   For Count=0 To Laengeres
      If Timer < MilliSecs () Then
         anzeige$ = Mid(Text2,1,Count)+Mid(Text1,Count+1,Laengeres)
         DebugLog anzeige$
         Text 0,0, anzeige$
         Timer = MilliSecs () + 500
      EndIf
      If Count <> Laengeres Then
         Cls
      EndIf
   Next
   
   WaitKey()
   
   Flip
Wend
End


mfg

mpmxyz

BeitragDo, Mai 19, 2011 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht solltest du nicht immer wieder alles löschen? Wink
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Sir Gauss der III

BeitragDo, Mai 19, 2011 23:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Verstehst du/ihr euren Code überhaubt?

- was macht der Len-Befehl und die sauber rein kopierten Zeilen im einzelnen?
- warum "count to Laengeres"?
- wozu das Kompl. ermiteln von Laengeres?
- was macht eig. die Zeile "anzeige$ = Mid(Text2,1,Count)+Mid(Text1,Count+1,Laengeres)" genau?

Ich möchte euch hier mal nicht zu nahe treten, doch das Programm wirkt auf mich als wenn euch noch grundlegende denkstrukturen fehlen.

Klar, alle Befehle usw. kann man gar nicht kennen. verlangt ja auch keiner. bis eben habe ich die Befehle Len und Mid noch nicht benötigt, geschweige denn angeschaut. Beim überfliegen eures Codes sticht einem aber auch so schon einiges ins Auge. Hab mich also mal mit der Materie befasst.

Erst mal solltet ihr wirklich wissen was ihr schreibt. macht euch mal ganz genau klar, wie Len und Mid arbeiten, und wie sie hier eingesetzt werden. Kommentiert doch einfach mal eure Zeilen, damit man mal sehen kann ob ihr sie verstanden habt, bzw. um dann gezielter antworten zu können.

Dann macht euch mal genau klar, was bei einem Ablauf von eurem Programm so alles passiert. geht Zeile für zeile durch. Überlegt, was der PC gerade rechnet, welche Werte erhöht/verändert werden und welche nicht.

Schaut mal nach, wann und wie oft denn nun einzelne Zeilen ausgeführt werden.

wenn ihr hier sauber vorgeht, werdet ihr den(die) Fehler schnell finden.
Im genauen: für die Lösung ist es wichtig zu wissen was mit count und Laengeres gemacht wird und wann diese benötigt werden.
Timer stimmt eigentlich.
wie oft wird cls aufgerufen? wann wird Cls aufgerufen?
>>>>> !! Programmstruktur !!
wenn ihr da mal (auch für Testprogramme) drauf achtet, werden schon viele Fehler vermieden.
z.B.
Code: [AUSKLAPPEN]
Graphics ... ;(ganz am anfang .. braucht ihr ja nicht)
Buffer ;Buffer ebenfalls am Anfang setzten

;wenn ihr den Kopf gut gestaltet, könnt ihr ihn per strg+C in jedem Programm wieder verwenden
;und müsst evtl nur kleine änderungen vornehmen.

;Variable als erstes ganz oben definieren
;klar, geht auch weiter unten, doch man verliert die Übersicht
Global ...
Dim ...

Local... ;werden die benötigt? meist nur in Functionen. lieber grundsätzlich Global verwenden und Local wirklich nur als Ausnahme

;dann alle Einstellungen wie
;* Werteübergabe an Variable (soweit noch nicht bei der deklarierung geschehen)
;* Laden der Bilder
;* Laden der Dateien
;* Grundeinstellungen zum Programm
Test$1="Hal...


;Die Hauptschleife
repeat

;Was muss immer zuerst gemacht werden?
;leeres blatt?
.....
;was muss danach gemacht werden?
;bsp. Bilder (entsprechend der Reihenfollge (maus zuletzt einzeichnen)
....
;was muss ganz am ende EINMAL gemacht werden
;bsp. flip (welcher Buffer ist denn gesetzt?)
....

until ... ;Bedingungen zum Beenden der Schleife

;was muss nun zum Schluss des Programs gemacht werden?
;bsp. end
...


;Function 1
...
;Function 2
...




Das ist jetzt nur mal ein grober aufbau. wie darin schon mal angesprochen, wenn ihr ihn sauber und ordentlich mal erstellt, könnt ihr ihn komplett für ein neues Programm nutzen, und habt einen guten Grundaufbau schon mal vorliegen.

Wenn ihr das Testprogramm mal danach strukturiert, solltet ihr schon mal die ersten (ich glaub 2) Fehler beseitigt haben.


Für den letzten Fehler, den ich so auf die schnelle gefunden habe, schlüsselt mal wirklich zeile für zeile euren hauptcode auf. geht dabei immer sagen wir mal pro Durchgang von +100 Millisecs aus.

Damit mein ich in etwa so (Das ist jetzt noch euer Code):
Code: [AUSKLAPPEN]
Global Timer = MilliSecs () +500
;Diese Zeile gibt dem Timer den Wert 500, da ich davon ausgehe dass Millisecs =0

While Not KeyHit (1)
;Ab hier wiederholt sich alles, allso wird die erste zeile nicht mehr aufgerufen
;(Timer=500, Millisecs=0)
   
   For Count=0 To Laengeres
;Diese Schleife zählt Count mit jedem Durchgang von 0-Laengeres
;Annahme: Pro Durchgang Millisecs=millisecs+10
;Durchgang1: (Timer=500, Millisecs=0 , count=0,Laengeres=3 (als annahme))
;Durchgang2: (Timer=500, Millisecs=10,count=1,Laengeres=3 (als annahme))
;Durchgang3: (Timer=500, Millisecs=20,count=2,Laengeres=3 (als annahme))
;Durchgang4: (Timer=500, Millisecs=30,count=3,Laengeres=3 (als annahme), anzeige=""(leer))

      If Timer < MilliSecs () Then
;Der vollgende Code wird nur ausgeführt wenn timer < Millisecs (trifft bei keinem der vier Durchgänge zu)

;---------------------------------Wird nicht ausgeführt -----------------

         anzeige$ = Mid(Text2,1,Count)+Mid(Text1,Count+1,Laengeres)
; ...... ?????? Was passiert in dieser Zeile mit Anzeige$ ?????? .........

         DebugLog anzeige$
;hier wird der Inhalt von Anzeige in den Debugger gegeben

         Text 0,0, anzeige$
;Anzeige wird mittels Text ausgegeben (Bildschirm)

         Timer = MilliSecs () + 500
;Der Timer wird nach oben korrigiert
;neuer Timerwert wäre Timer = 0/10/20/30 + 500
;Timer bleibt weiterhin 500 Da der Code nicht ausgeführt wurde

      EndIf
;Ab hier wird der Code wieder ausgeführt
;---------------------------------Wird ausgeführt --------------------


      If Count <> Laengeres Then
;Wird bei Durchgang 1,2,3 ausgeführt

         Cls
; TIPP: Was passiert hier?

      EndIf

   Next
; Fertig mit der Schleife die Count zählt
;Werte jetzt:
;(Timer=500, Millisecs=40,count=3,Laengeres=3 (als annahme), anzeige ="" (immer noch leer))

   WaitKey()
;wartet auf Taste
   
   Flip
;.............. hm........................????? (s. Programmstruktur weiter oben)

Wend
;beendet Hauptschleife, beginne von vorne


Da If timer<millisecs() nocht ausgeführt wurde, wiederhole ich das ganze, diesmal nur mit der Annahme, dass millisecs nun schon auf 490 hoch ist. mal sehen........


Code: [AUSKLAPPEN]
While Not KeyHit (1)
;Ab hier wiederholt sich alles, allso wird die erste zeile nicht mehr aufgerufen
;(Timer=500, Millisecs=490)
   
   For Count=0 To Laengeres
;Diese Schleife zählt Count mit jedem Durchgang von 0-Laengeres
;Annahme: Pro Durchgang Millisecs=millisecs+10
;Durchgang1: (Timer=500, Millisecs=490 , count=0,Laengeres=3 (als annahme))
;Durchgang2: (Timer=500, Millisecs=500,count=1,Laengeres=3 (als annahme))
;Durchgang3: (Timer=500, Millisecs=510,count=2,Laengeres=3 (als annahme))
;Durchgang4: (Timer=1010, Millisecs=520,count=3,Laengeres=3 (als annahme), anzeige=""(leer))

      If Timer < MilliSecs () Then
;Der vollgende Code wird nur ausgeführt wenn timer < Millisecs (trifft bei Durchgang 3 zu)

;---------------------------------Wird bei Durchgang 3 ausgeführt -----------

         anzeige$ = Mid(Text2,1,Count)+Mid(Text1,Count+1,Laengeres)
; ...... ?????? Was passiert in dieser Zeile mit Anzeige$ ?????? .........

         DebugLog anzeige$
;hier wird der Inhalt von Anzeige in den Debugger gegeben

         Text 0,0, anzeige$
;Anzeige wird mittels Text ausgegeben (Bildschirm)

         Timer = MilliSecs () + 500
;Der Timer wird nach oben korrigiert
;neuer Timerwert wäre Timer = millisecs (Durchgang3=510)+ 500
;Timer =1010

      EndIf
;Ab hier wird der Code wieder immer ausgeführt
;---------------------------------Wird immer ausgeführt ------------------

      If Count <> Laengeres Then
;Wird bei Durchgang 1,2,3 ausgeführt
;Aufmerksamme Leser entgeht hier nicht, dass Durchgang 3 vorher schon mal etwas ausgeführt hat

         Cls
; TIPP: Was passiert hier?

      EndIf

   Next
; Fertig mit der Schleife die Count zählt
;Werte jetzt:
;(Timer=1010, Millisecs=530,count=3,Laengeres=3 (als annahme), anzeige ="Voll mit Text" )

   WaitKey()
;wartet auf Taste
   
   Flip
;.............. hm........................????? (s. Programmstruktur weiter oben)

Wend
;beendet Hauptschleife, beginne von vorne




Ich hoffe, ihr habt die Fehler gefunden und konntet was mit dem hier anfangen.

Mr.Hyde

Newsposter

BeitragFr, Mai 20, 2011 11:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Tut zwar nichts zur Sache, wollte aber an dieser Stelle mal verdienten Respekt an Sir Gauss der III. aussprechen für diese äußerst umfangreiche und sehr sehr sehr sinnvolle Hilfestellung. Ich hoffe die Arbeit die da drin steckt zahlt sich für euch aus!
BBP News RSS | Chaos Interactive | Watanien 2 Screens, Infos und Download | Watanien 2 Worklog | PuzzleMasters
http://abgeordnetenwatch.de - http://www.regierungs-beratung.de - Der Regierung auf die Finger schauen

BladeRunner

Moderator

BeitragFr, Mai 20, 2011 11:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Jop, vorbildlich. Nun seid ihr grfragt, versucht alle Fragen die euch Sir Gauss gestellt hat zu beantworten.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

PhillipB

BeitragSa, Mai 21, 2011 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Also erstmal auch von mir einen großes Lob.
-Der Lenn befehl zehlt die Ziffern aus einen Wort/Variable
-count erhöht sich immer um 1 (pro durchgang) bis es auf der ausgereschneten LEN ist
-Die Zeile Anzeige gibt aus vom 2Text startziffer (1) und die Anzahl (COUNT)die mit hilfe von Len immer erhöht wird. Dannach wird noch dahinter geschrieben vom 1 Text von der Startposition (Count + 1), als anzahl wir der wert von LEN benutzt.

Sry aber das mit der strucktur , ich sehe bei uns keinen Fehler.

Da ich das mit den Durchgängen nicht so ganz verstehe habe ich jetzt mal das ausprobiert:
Code: [AUSKLAPPEN]
Local Text1$="Hallihallo"
Local Text2$="Da bin ich"
Local Laengeres%=0

Global Timer = MilliSecs () +500
Global Count = 0

MilliSecs ()

If Len(Text1)>Len(Text2) Then
   Laengeres=Len(Text1)
Else
   Laengeres=Len(Text2)
End If

While Not KeyHit (1)
   
   MilliSecs ()
   
   If Count <> Laengeres Then
      Count = Count + 1
      If Timer < MilliSecs () Then
         anzeige$ = Mid(Text2,1,Count)+Mid(Text1,Count+1,Laengeres)
         DebugLog anzeige$
         Text 0,0, anzeige$
         Timer = MilliSecs () + 500
         Cls
      EndIf
   EndIf
   
   DebugLog MilliSecs ()
   
   
   WaitKey()
   
   Flip
Wend
End


Dabei ist mir aufgefallen das der DebugLog MilliSecs () immer konstant ist außer wenn man das prog schließt und neu startet.

Ich hoffe du verlierst nicht die gedult mit uns.

mfg
PhillipB.

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group