IntegerInput - Eingaberoutine für natürliche Zahlen

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

SpionAtom

Betreff: IntegerInput - Eingaberoutine für natürliche Zahlen

BeitragSo, Mai 20, 2012 13:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier ist eine Function für die Eingabe von natürlichen Zahlen.
Ziffern können die Zifferleiste oder über den Nummernblock eingegeben werden.
Mit der Rücktaste wird die letzte Ziffer gelöscht.
Eingabebestätigung muss man selber implementieren (siehe Beispiel).


Code: [AUSKLAPPEN]
Graphics 400, 300, 0, 2
SetBuffer BackBuffer()

   SetFont LoadFont("Arial", 24, 0)
   Local eingabeZahl, ausgabe$
   Repeat

      Cls
      ;Eingabe
      eingabeZahl = IntegerInput(eingabeZahl, 50, 100)

      ;Enter wurde gedrückt
      If KeyHit(28) Or KeyHit(156) Then
         ausgabe = "Die letzte Eingabe lautet: " + eingabeZahl
         eingabeZahl = 0
         FlushKeys()
      End If

      ;Ausgabe
      Text 0, GraphicsHeight() - StringHeight("|"), ausgabe
      Flip()

   Until KeyDown(1)
   End





;Eingabefunktion zur Eingabe von natürlichen Zahlen (also keine negativen Zahlen)
;zahl            - ist die Variable für die Eingabe
;x, y            - sind die Position
;linienlaenge    - ist die Länge der Eingabelinie, muss nicht angegeben werden
;maximaleStellen - begrenzt die Eingabe auf eine maximale Anzahl an Stellen, muss nicht angegeben werden
Function IntegerInput(zahl, x, y, linienlaenge = 100, maximaleStellen = 3)

   Local tastegedrueckt = False
   Local ziffergedrueckt = False, gedrueckteZiffer
   If KeyHit(11) Or KeyHit(82) Then   gedrueckteZiffer = 0: tastegedrueckt = True: ziffergedrueckt = True
   If KeyHit(2) Or KeyHit(79) Then   gedrueckteZiffer = 1: tastegedrueckt = True: ziffergedrueckt = True
   If KeyHit(3) Or KeyHit(80) Then   gedrueckteZiffer = 2: tastegedrueckt = True: ziffergedrueckt = True
   If KeyHit(4) Or KeyHit(81) Then   gedrueckteZiffer = 3: tastegedrueckt = True: ziffergedrueckt = True
   If KeyHit(5) Or KeyHit(75) Then   gedrueckteZiffer = 4: tastegedrueckt = True: ziffergedrueckt = True
   If KeyHit(6) Or KeyHit(76) Then   gedrueckteZiffer = 5: tastegedrueckt = True: ziffergedrueckt = True
   If KeyHit(7) Or KeyHit(77) Then   gedrueckteZiffer = 6: tastegedrueckt = True: ziffergedrueckt = True
   If KeyHit(8) Or KeyHit(71) Then   gedrueckteZiffer = 7: tastegedrueckt = True: ziffergedrueckt = True
   If KeyHit(9) Or KeyHit(72) Then   gedrueckteZiffer = 8: tastegedrueckt = True: ziffergedrueckt = True
   If KeyHit(10) Or KeyHit(73) Then gedrueckteZiffer = 9: tastegedrueckt = True: ziffergedrueckt = True

   ;Rücktaste gedrückt, letzte Stelle löschen
   If KeyHit(14) Then
      tastegedrueckt = True
      zahl = zahl / 10
   End If

   ;Ziffer gedrückt, Ziffer an letzte Stelle anfügen,
   ;aber nur, wenn die maximale Anzahl erlaubten ziffern nicht überschritten wird
   If tastegedrueckt Then
      If ziffergedrueckt Then
         Local stellen = 0, n = zahl
         While n > 0
            stellen = stellen + 1
            n = n / 10
         Wend
         If stellen < maximaleStellen Then zahl = zahl * 10 + gedrueckteZiffer
      End If
      FlushKeys()
   End If

   ;Der Eingabebereich wird durch eine Linie gekennzeichnet
   Rect x, y + StringHeight("|"), linienlaenge + 1, 1

   ;Zahl ausgeben
   Local cursor$ = "_"
   If (MilliSecs() Mod 1000) < 500 Then cursor = ""
   Local ausgabe$ = cursor
   Text x, y, zahl + cursor

   ;Zahl zurückgeben
   Return zahl

End Function
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group