Texteingabe

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
estate
Beiträge: 110
Registriert: 10.09.2004 08:53
Wohnort: nähe Graz
Kontaktdaten:

Texteingabe

Beitrag von estate »

Hallo, ich habe ein kleines Problem:
Ich will einen Text unter direktX eingeben, was aber sehr umständlich ist.
Könnt ihr mir dabei helfen eine einfache Lösung zu finden?

Danke
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Code: Alles auswählen

; 
; simple screen input example 
; 
; by Danilo, 2005/04/11, german forum 
; 
#ScreenWidth  = 1024 
#ScreenHeight =  768 
#ScreenName   = "Input Test" 



Procedure.s InputProcedure(x,y) 
  Static Name$, LastCursorTime, ShowCursor, BackPushed 

  ; Input holen 
  Name$ + KeyboardInkey() 

  ; Backspace erlauben zum loeschen 
  If KeyboardPushed(#PB_Key_Back) And BackPushed=0 
    Name$ = Left(Name$,Len(Name$)-1) 
    BackPushed=ElapsedMilliseconds() 
  ElseIf BackPushed 
    If ElapsedMilliseconds() >= BackPushed+150 
      BackPushed=0 
    EndIf 
  EndIf 

  ; Laenge begrenzen 
  len=Len(Name$) 
  If len>25 
    Name$ = Left(Name$,len-1) 
  EndIf 

  ; Fenster zeichnen 
  If StartDrawing(ScreenOutput()) 
    Box(x+5,y+5,300,100,$404040) 
    Box(x,y,300,100,$D7D628) 
    Box(x,y,300,22,$579FA8) 
    Line(x    ,y,300,  0,$FFFFFF):Line(x,y    ,  0,100,$FFFFFF) 
    Line(x+300,y,  0,100,$000000):Line(x,y+100,300,  0,$000000) 
    Locate(x+2,y+2) 
    DrawingMode(1) 
    DrawText("Bitte Name eingeben") 
    Box(x+09,y+29,282,24,$000000) 
    Box(x+10,y+30,280,22,$FFFFFF) 
    Locate(x+13,y+33) 
    DrawText(Name$) 

    ; cursor blinken lassen 
    time = ElapsedMilliseconds() 
    If time >= LastCursorTime+500 
      LastCursorTime=time 
      ShowCursor ! 1 
    EndIf 
    ; cursor zeichnen 
    If ShowCursor 
      ;Line(x+13+TextLength(Name$),y+32,0,18,$000000) 
      Line(x+13+TextLength(Name$),y+50,10,0,$000000) 
    EndIf 

    StopDrawing() 
  EndIf 

  If KeyboardReleased(#PB_Key_Return) And Name$ 
    ProcedureReturn Name$ 
  EndIf 
EndProcedure 



If InitSprite()=0 Or InitKeyboard()=0 
  MessageRequester("ERROR","Cant initialize game engine!"):End 
EndIf 


If OpenScreen(#ScreenWidth,#ScreenHeight,32,#ScreenName)=0 
  If OpenScreen(#ScreenWidth,#ScreenHeight,24,#ScreenName)=0 
    If OpenScreen(#ScreenWidth,#ScreenHeight,16,#ScreenName)=0 
      MessageRequester("ERROR","Cant open screen ("+Str(#ScreenWidth)+"x"+Str(#ScreenHeight)+")!"):End 
EndIf:EndIf:EndIf 


Repeat 
  ExamineKeyboard() 
  If IsScreenActive() 
    FlipBuffers() 
    ClearScreen($3A,$65,$98) 
    If Status = 0 
      Name$ = InputProcedure(#ScreenWidth/2-150,#ScreenHeight/2-50) 
      If Name$ 
        Status+1 
      EndIf 
    Else 
      If StartDrawing(ScreenOutput()) 
        FrontColor($FF,$FF,$FF) 
        DrawingMode(1) 
        Locate(100,100): DrawText("Ihre Eingabe:") 
        Locate(100,130): DrawText("Vielen Dank! Bitte drcken sie eine Taste...") 
        FrontColor($00,$00,$00) 
        Locate(200,100): DrawText(Name$) 
        StopDrawing() 
      EndIf 
      If KeyboardPushed(#PB_Key_All) 
        Quit=#TRUE 
      EndIf 
    EndIf 
  EndIf 
Until Quit
:D
estate
Beiträge: 110
Registriert: 10.09.2004 08:53
Wohnort: nähe Graz
Kontaktdaten:

Beitrag von estate »

Danke für diesen Code, leider läuft er nicht bei mir.
Kann es daran liegen, dass ich Pb Version 3.3 habe?
estate
Beiträge: 110
Registriert: 10.09.2004 08:53
Wohnort: nähe Graz
Kontaktdaten:

Beitrag von estate »

Ich sehe gerade, das meine version den Befehl keyboardinkey() noch nicht kennt.
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

3.3 ist ein "bisschen" alt! Vielleicht mal updaten? /:->

Die Beste Variante fondest du HIER
(d.h. egtl. ist die editierte Vorgängerversion am Besten... Ich finde sie aber gerade nicht)
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
estate
Beiträge: 110
Registriert: 10.09.2004 08:53
Wohnort: nähe Graz
Kontaktdaten:

Beitrag von estate »

Danke, das hilft mir weiter.
Ich werde mich aber einmal nach einem Update umschauen.
Antworten