Programm Batch Hilfe

Dieses Thema im Forum "Programmierung" wurde erstellt von Ich5003, 2. November 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Ich5003
    Offline

    Ich5003

    Registriert seit:
    9. Januar 2012
    Beiträge:
    341
    Minecraft:
    ich5003
    [GELÖST] Batch Hilfe

    Hallo Leute, ich bin mir nicht siher, ob das jetzt okay ist, dass ich das in so einem Forum Frage, aber ich habs mal unter Programmierung geschreiben.

    Ich brauche eine Zeichenbegrenzung bei Batch (.bat / .cmd)
    Ich habe den Befehl:
    Nun kann man ja ber belibig viele zeichen eingeben, als Beispiel so:
    Ich möchte aber, dass man maximal ein Zeichen eingeben kann, bzw. dass eine Zeichenanzahlüberprüfung ausgeführt wird, wenn es mehr zeichen als 1 ist, dann soll eben etwas ausgeführt werden, hat jemand da eine Idee, wie das geht, oder gaht das mit Bacth nicht?

    Im Anhang findet ihr das fertige Spiel (Tic-Tac-Toe) einfach von .txt in .bat umbenennen, wenn ihr Fehler findet, oder einen Verbesserungsvorschlag habt, antwortet einfach, danke! ;)

    UPDATE:
    Ich habe nun auch eine einzelspielerfunktion eingebaut! Der Computer setzt aber noch auf zufallsprinzip, werde ich aber bald auch noch ausbessern!
     

    Anhänge:

    #1
  2. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Ich glaube nicht das das möglich ist.
    Eine Lösung würde mir einfallen aber die wäre extrem ineffizient.
     
    #2
  3. Ich5003
    Offline

    Ich5003

    Registriert seit:
    9. Januar 2012
    Beiträge:
    341
    Minecraft:
    ich5003
    Was heisst inefizient?
    Mir fällt da noch was ein, man könnte die Eingabe ja in eine .txt speichern:
    Und diese mit einem anderen Programm überprüfen lassen.
     
    #3
  4. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Du könntest alle buchstaben überprüfen.

    Code (Text):
    1.  
    2. [COLOR=#FFFFFF][I]set /p x=Gib hier ein Zeichen ein:
    3. [/I][/COLOR]if %x% == "a" goto ok
    4. if %x% == "b" goto ok
    5. if %x% == "c" goto ok
    6. if %x% == "d" goto ok
    7. if %x% == "e" goto ok
    8. if %x% == "f" goto ok
    9. echo Fehler unbekannter buchstabe/zahl oder zu viele buchstaben/zahlen eingegeben!
    10. pause
    11. exit
    12. :ok
    13. echo "Es wurde nur ein Buchstabe eingegeben!"
    14. pause
    15.  
     
    #4
  5. Ich5003
    Offline

    Ich5003

    Registriert seit:
    9. Januar 2012
    Beiträge:
    341
    Minecraft:
    ich5003
    Okay, stimmt, das wäre eine Möglichkeit, aber da auch alle sonderzeichen... verfügbar sein sollen, ist das etwas aufwendig, ich habe sowas i.wo schonmal vereinfacht gesehen.
     
    #5
  6. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Code (Text):
    1.  
    2. set str=abasldkfdslkf
    3. set str=%str:~0,1%
    4. echo.%str%
    5.  
     
    #6
  7. Ich5003
    Offline

    Ich5003

    Registriert seit:
    9. Januar 2012
    Beiträge:
    341
    Minecraft:
    ich5003
    Sieht sher einfach aus, aber was ist das genau, also die zweite zeile?
     
    #7
  8. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    ist im Endeffekt nichts anderes als ein substring(0,1) in Java oder substr ($string,0,1) in PHP.

    Code (Text):
    1.  
    2. set str=abasldkfdslkf
    3. set str=%str:~3,6%
    4. echo.%str%
    5.  
    würde demnach sldkfd zurückgeben.
     
    #8
  9. Ich5003
    Offline

    Ich5003

    Registriert seit:
    9. Januar 2012
    Beiträge:
    341
    Minecraft:
    ich5003
    Des ist schonmal sehr gut, nun wäre es noch schön, dass wenn amn aber mehrere ZEichen eingibt, es nicht einfach gekürtzt wird, sondern am besten, nochmal zurückgeht (goto), sonst wäre das perfekt
     
    #9
  10. Crafter213
    Offline

    Crafter213

    Registriert seit:
    9. August 2012
    Beiträge:
    353
    Prüf doch, ob das gekürzte gleich der Originaleingabe ist

    Wenn nur ein Zeichen eingegeben wurde und auf ein Zeichen gekürzt wurde, wurde ja im Grunde nichts gemacht
    -> beides ist das gleiche

    Sonst weisst du, dass mehr als ein Zeichen eingegeben wurde.


    Hoffe das hilft und funktioniert :)
     
    #10
  11. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Code (Text):
    1.  
    2. @echo off
    3. :eingabe
    4. set length=0
    5. set /p str=Gib hier den Zeichen ein:
    6. :loop
    7. if defined str (set str=%str:~1%&set /A length += 1&goto loop)
    8. if %length% gtr 1 (echo Parameter zu Lang!&goto :eingabe)
    9. echo Parameter ok!
    10.  
     
    #11
  12. Ich5003
    Offline

    Ich5003

    Registriert seit:
    9. Januar 2012
    Beiträge:
    341
    Minecraft:
    ich5003
    Danke Leute, ich seid die besten, die idee von Crafter kann ich bersser ins Programm einbringen, aber trotzdem danke an alle! :)
     
    #12
  13. Ich5003
    Offline

    Ich5003

    Registriert seit:
    9. Januar 2012
    Beiträge:
    341
    Minecraft:
    ich5003
    Ich habe das jetzt so gelöst:
    Code (Text):
    1. :Zeichen1
    2. echo.
    3. echo.
    4. set /p Zeichen1=%Player1%, gib dein Zeichen ein:
    5. set Test-Zeichen1=%Zeichen1%
    6. set Zeichen1=%Zeichen1:~0,1%
    7. if not %Test-Zeichen1%==%Zeichen1% goto Zeichen1
    8. if not %Zeichen1%==0 if not %Zeichen1%==1 if not %Zeichen1%==2 if not %Zeichen1%==3 if not %Zeichen1%==4 if not %Zeichen1%==5 if not %Zeichen1%==6 if not %Zeichen1%==7 if not %Zeichen1%==8 if not %Zeichen1%==9 goto Zeichen2
    9. echo Dies ist eine Zahl, da diese im Spiel vorkommt kannst du sie nicht verwenden.
    10. ping localhost -n 3 >nul
    11. goto Zeichen1
    Das fertige SPIEL (Tic-Tac-Toe) hab ich in den ersten Post als .txt rein, einfach von .txt ind .bat umbenennen!
    Wenn ihr Bugs findet, schreibt sie einfach!
     
    #13
Status des Themas:
Es sind keine weiteren Antworten möglich.