einfach zu verwendende Konsole

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Klaas

Betreff: einfach zu verwendende Konsole

BeitragMi, Jan 26, 2005 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
sollte für sich selber sprechen

Code: [AUSKLAPPEN]

Type console_line
   Field row$
End Type

Global console_current_row.console_line = New console_line
Global console_current_pos,console_tick,console_cursor_blink,console_pos
Global console_status

Global console_x = 0
Global console_y = 0
Global console_width = GraphicsWidth()
Global console_height = 300

Global console_cls_r = 30
Global console_cls_g = 30
Global console_cls_b = 30

Global console_border_r = 250
Global console_border_g = 10
Global console_border_b = 10

Global console_font_r = 250
Global console_font_g = 250
Global console_font_b = 100

Global console_buffer = BackBuffer()

;-------------------------- so wirds verwendet
timer = CreateTimer(25)
While Not KeyHit(1)
   WaitTimer(timer)
   eingabe$ = consoleInput$()
   If eingabe <> "" Then consoleInsert("Du hast gesagt: "+eingabe$)
   consoleDraw(0,0,320,200)
   Flip()
Wend
;--------------------------

Function consoleInsert(txt$)
   c.console_line = New console_line
   Insert c After First console_line
   c\row$ = txt$
End Function

Function consoleInput$()
   newKey = GetKey()
   If KeyHit(28) Or KeyHit(156);enter
      ret$ = console_current_row\row$
      console_current_row.console_line = New console_line
      Insert console_current_row Before First console_line
      console_current_pos = 0
   ElseIf KeyHit(14);backspace
      If console_current_pos > 0
         console_current_row\row$ = Left(console_current_row\row$,console_current_pos-1) + Right(console_current_row\row$,Len(console_current_row\row$)-console_current_pos)
         console_current_pos = console_current_pos - 1
      EndIf
   ElseIf KeyHit(211);entfernen
      If console_current_pos < Len(console_current_row\row$)
         console_current_row\row$ = Left(console_current_row\row$,console_current_pos) + Right(console_current_row\row$,Len(console_current_row\row$)-console_current_pos-1)
         console_current_pos = console_current_pos
      EndIf
   ElseIf KeyHit(203);left
      If console_current_pos > 0
         console_current_pos = console_current_pos - 1
      EndIf
   ElseIf KeyHit(205);right
      If console_current_pos < Len(console_current_row\row$)
         console_current_pos = console_current_pos + 1
      EndIf
   ElseIf KeyHit(200);up
      c.console_line = After console_current_row
      If c <> Null
         console_current_row\row$ = c\row
         console_current_pos = Len(console_current_row\row$)
      EndIf
   ElseIf KeyHit(208);down
      console_current_row\row$ = ""
      console_current_pos = 0
   ElseIf KeyHit(207);ende
      console_current_pos = Len(console_current_row\row$)
   ElseIf KeyHit(199);pos1
      console_current_pos = 0
   ElseIf newKey > 31
      console_current_row\row$ = Left(console_current_row\row$,console_current_pos) + Chr(newKey) + Right(console_current_row\row$,Len(console_current_row\row$)-console_current_pos)
      console_current_pos = console_current_pos + 1
   EndIf
   Return ret$
End Function

Function consoleDraw(xoff,yoff,width,height)
   SetBuffer(console_buffer)
   
   Color(console_cls_r,console_cls_g,console_cls_b)
   Rect(xoff,yoff,width,height,1)

   Color(console_border_r,console_border_g,console_border_b)
   Rect(xoff,yoff,width,height,0)

   Color(console_font_r,console_font_g,console_font_b)
   theight = FontHeight() + 3
   x = xoff + 5
   y = yoff + height - 5
   
   ;cursor
   If Not console_tick Then console_cursor_blink = Not console_cursor_blink
   If console_cursor_blink
      l = Len(console_current_row\row$)
      cx = StringWidth(Left(console_current_row\row$,l-(l-console_current_pos))) + x
      Line(cx,y,cx,y-theight)
   EndIf
   console_tick = (console_tick + 1) Mod 8
   
   For r.console_line = Each console_line
      y = y - theight
      If y < yoff
         Delete r
         Return
      Else
         Text(x,y,r\row)
      EndIf
   Next
End Function

stfighter01

BeitragDo, Jan 27, 2005 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
feine sache sowas, werd ich gleich mal in meine libs reinwerfen.

mfg stfighter
Denken hilft!
 

David

BeitragDo, Jan 27, 2005 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ja, fein... Leider, leider kann man aber über den Rand der Konsole hinausschreiben...
Und Schade das es kein "Verlauf" gibt durch den man mit Cursor Up/Down navigieren kann...

grüße

Bms

BeitragDo, Jan 27, 2005 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
...da streikt leider mein b+...
 

ke^kx

BeitragDo, Jan 27, 2005 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Soll das als Eingaberoutine dienen oder wofür soll das gut sein?

(Es sprach nur ein Unwissender^^)

Jiriki
http://i3u8.blogspot.com
Asus Striker II
Intel Core2Quad Q9300 @ 2,5 GHz (aber nur zwei Kerne aktiv aufgrund der Instabilität -.-)
Geforce 9800 GTX
2GB RAM
 

Noob-Paul

BeitragFr, Jan 28, 2005 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
...bei mir auch...
Der Klügere gibt nach ....

...weil die Klugen immer nachgeben,
regieren die Dummen die Welt!

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group