[Types] Text untereinander anzeigen
Übersicht BlitzBasic Beginners-Corner
N0XBetreff: [Types] Text untereinander anzeigen |
Sa, März 20, 2010 18:47 Antworten mit Zitat |
|
---|---|---|
Hey!
Ich möchte Text aus einem Type untereinander anzeigen lassen. Allerdings wird der Text hier nur aufeinander angezeigt. Warum? Code: [AUSKLAPPEN] Type message
Field txt$,y% End Type While Not KeyHit(1) If KeyHit(59) Then m.message = New message m\y% = m\y%+12 m\txt$ = Rnd(-10,10) EndIf For m.message = Each message Text 0,m\y%,m\txt$ Next Wend End Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
mpmxyz |
Sa, März 20, 2010 18:52 Antworten mit Zitat |
|
---|---|---|
BlitzBasic: [AUSKLAPPEN] m\y% = m\y%+12
m\y ist nach dem Erstellen immer 0. -> Nach dieser Operation ist der Wert immer 12. Du musst dir die Position des letzten Textes merken und bei einem neu erstellten Text diese, um den entsprechend Wert erhöht, für den nächsten Text nutzen. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
- Zuletzt bearbeitet von mpmxyz am Sa, März 20, 2010 18:53, insgesamt einmal bearbeitet
XeresModerator |
Sa, März 20, 2010 18:53 Antworten mit Zitat |
|
---|---|---|
y ist ein Field des Types d.h. jeder Type Eintrag hat die Variable y, die du bei allen auf 12 setzt und dann den Text dort ausgibst. Du brauchst eine Locale Variable die unabhängig von den Types hochgezählt wird. | ||
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) |
Eingeproggt |
Sa, März 20, 2010 18:53 Antworten mit Zitat |
|
---|---|---|
Code: [AUSKLAPPEN] m\y% = m\y%+12
Da liegt das Problem. Entweder du machst ein "globales" y (Muss nicht Global sein, aber muss unabhängig vom Type in der Schleife sein!) das du immer erhöhst oder du musst dir mittels Before den vorherigen Type-Eintrag herholen. Dieser darf dann aber logischerweise nicht m überschreiben mfG, Christoph. EDIT: Schon wieder soviele hilfbereite BBler |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
N0X |
Sa, März 20, 2010 19:01 Antworten mit Zitat |
|
---|---|---|
Hui, dankeschön!
Hab's mal probiert, aber so klappts nicht, denn jetzt werden ja alle Texte übereinander geschrieben, in jeder Zeile. Wie kann ich das umgehen? Code: [AUSKLAPPEN] Local my
Type message Field txt$,y% End Type While Not KeyHit(1) If KeyHit(59) Then m.message = New message m\txt$ = Rnd(-10,10) my = my+12 EndIf For m.message = Each message Text 0,my,m\txt$ Next Wend End |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
XeresModerator |
Sa, März 20, 2010 19:05 Antworten mit Zitat |
|
---|---|---|
Beim erstellen musst du m\y schon einen Wert zuweisen... oder du zählst die Variable beim darstellen gleich hoch. | ||
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) |
N0X |
Sa, März 20, 2010 19:11 Antworten mit Zitat |
|
---|---|---|
Hm?
Ich bekomm das nicht hin... Code: [AUSKLAPPEN] Local my
Type message Field txt$,y% End Type While Not KeyHit(1) If KeyHit(59) Then m.message = New message m\txt$ = Rnd(-10,10) EndIf For m.message = Each message Text 0,my,m\txt$ my = my+12 Next Wend End So wird der erste Typeeintrag immer weiter nach unten gereiht. Das soll ja nicht sein. Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
da_poller |
Sa, März 20, 2010 19:14 Antworten mit Zitat |
|
---|---|---|
ungetestet aber sollte gehen:
BlitzBasic: [AUSKLAPPEN]
so war das von eingeproggt mit der globalen gemeint. geh es schritt für schritt durch und versuch zu verstehen. viel erfolg |
||
XeresModerator |
Sa, März 20, 2010 19:18 Antworten mit Zitat |
|
---|---|---|
Entweder...
Code: [AUSKLAPPEN] Local my
Type message Field txt$,y% End Type While Not KeyHit(1) If KeyHit(2) Then m.message = New message m\txt$ = Rnd(-10,10) m\y = my my = my + 12 EndIf For m.message = Each message Text 0,m\y,m\txt$ Next Wend End Oder: Code: [AUSKLAPPEN] Local my
Type message Field txt$,y% End Type While Not KeyHit(1) If KeyHit(2) Then m.message = New message m\txt$ = Rnd(-10,10) EndIf my=0 For m.message = Each message Text 0,my,m\txt$ my=my+12 Next Wend End |
||
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) |
N0X |
Sa, März 20, 2010 19:36 Antworten mit Zitat |
|
---|---|---|
Und wie mache ich das, wenn ich die neuste Nachricht ganz unten angezeigt haben möchte und die Alten dann nach oben hin "weggehen"?
Hab' das mal so probiert, allerdings wird die neuste Nachricht nicht unten angezeigt sondern "aufgestapelt"! Wie krieg ich die Neuste jetzt ganz nach unten und die Alten nach oben? |||||||||||||||||||||||||||||||| -Älteste! -Alt 4 -Alt 3 -Alt 2 -Alt 1 - Neu! |||||||||||||||||||||||||||||||| Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
mpmxyz |
Sa, März 20, 2010 19:41 Antworten mit Zitat |
|
---|---|---|
Dann musst du die Position von den Nachrichten trennen:
1. Positions-Field entfernen 2. eine Zeichenfunktion für die Nachrichten erstellen 3. In dieser Funktion gibt es eine lokale Variable mit der aktuellen Position, welche für jeden durchlaufenen Text erhöht wird. 4. Damit alte Nachrichten verschwinden, muss noch eine Bedingung zum Verschwinden eingeführt werden. (Selber denken! ) mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
N0X |
Sa, März 20, 2010 19:47 Antworten mit Zitat |
|
---|---|---|
Hm, da steh ich jetzt aber irgendwie auf'm Schlauch...
Kannst du mir das nochmal genauer erklären? Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
count-doku |
Sa, März 20, 2010 19:48 Antworten mit Zitat |
|
---|---|---|
Hab grad auch sowas gemacht:
BlitzBasic: [AUSKLAPPEN]
Abgeändert dann auf deinen Fall: BlitzBasic: [AUSKLAPPEN] ;in der Mainloop zum anzeigen: mfg, count-doku |
||
N0X |
Sa, März 20, 2010 19:55 Antworten mit Zitat |
|
---|---|---|
Hm, danke, aber wie krieg ich das jetzt hin, dass die neuste Nachricht immer unten angezeigt wird und wenn eine neue hinzukommt das die erste dann um 12 Pixel nach oben wandert usw. ?
Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
count-doku |
Sa, März 20, 2010 20:03 Antworten mit Zitat |
|
---|---|---|
Hier: BlitzBasic: [AUSKLAPPEN] Graphics 800,600,0,2 Wo das eintragen beginnt/aufhört musst du halt verändern. Die Einträge sollen doch wenn sie zu hoch kommen gelöscht werden, oder? mfg, count-doku PS: Der Code ist sehr schlampig geproggt |
||
N0X |
Sa, März 20, 2010 20:09 Antworten mit Zitat |
|
---|---|---|
Ah, dankeschön!
Das klappt jetzt wunderbar, und jetzt versuch ich noch das zu verstehen, dann ist alles gut! Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
das wurgel |
Sa, März 20, 2010 20:13 Antworten mit Zitat |
|
---|---|---|
Du zählst jedes mal wenn eine nachricht dazu kommt wie viele Nachrichten es sind und löscht so oft die erste Nachricht (die neu dazukommenden werden hinten dran gehängt) bis sie eine bestimmte anzahl erreicht haben:
Code: [AUSKLAPPEN] Local my local anzahlNachrichten=0 Type message Field txt$,y% End Type While Not KeyHit(1) If KeyHit(2) Then m.message = New message m\txt$ = Rnd(-10,10) anzahlNachrichten=anzahlNachrichten+1 if anzahlNachrichten>10 then local zuviele=anzahlNachrichten-10 for i=1 to zuviele local ersteNachricht.message=first message delete ersteNachricht anzahlNachrichten=anzahlNachrichten-1 next endif cls EndIf my=0 For m.message = Each message Text 0,my,m\txt$ my=my+12 Next Wend End edit: Ooh zu spät, aber vll hilfts dir noch beim verstehen edit2: noch ein Cls eingesetzt |
||
1 ist ungefähr 3 |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group