Al Bhed Umwandler

  • Hallo Mitglieder.

    Da ich ein großer Final Fantasy Fan bin, wollte ich mir ein kleines Tool schreiben.

    In Final Fantasy gibt es eine Sprache die Al Bhed genannt wird, diese Sprache setzt sich jedoch nicht aus Worten zusammen, sondern lediglich aus anderen Buchstaben.

    Ein Beispiel:
    Deutsch | Al Bhed
    Hallo | Rymmu
    Bye | Poa

    Ich würde jetzt gerne ein Programm schreiben, der mir diese Buchstaben automatisch per Tastendruck umwandelt, da ich so ungestört mit meinen Freunden schreiben kann, da sie diese Sprache auch kennen, falls ich mal Besuch haben sollte, der den Inhalt nicht lesen soll.

    Eine Liste, welche Buchstabe welcher ist, habe ich, ich weiß nur nicht, wie ich dieses Programm schreiben kann.

    Könnte mir einer helfen?

    Mit freundlichem Gruß
    Daisuke

  • In Final Fantasy gibt es eine Sprache die Al Bhed genannt wird, diese Sprache setzt sich jedoch nicht aus Worten zusammen, sondern lediglich aus anderen Buchstaben.


    Anhand deines Beispiels denke ich aber, dass die Sprache - wie jede andere auch - aus anderen Wörtern besteht.
    Ich würde ein kleines Übersetzungstool basteln, und den Text dann ins Spiel kopieren. z.B.:

    [autoit]

    GUICreate('Deutsch -> Al Bhed', 400, 300)
    $gText = GUICtrlCreateEdit('Text', 20, 20, 360, 230)
    $gButton = GUICtrlCreateButton('Übersetzen', 20, 260, 160, 20)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    Do
    $Msg = GUIGetMsg()
    If $Msg = $gButton Then
    $Text = GUICtrlRead($gText)
    $Text = StringReplace($Text, 'Hallo', 'Rymmu')
    ;...
    GUICtrlSetData($gText, $Text)
    EndIf
    Until $Msg = -3

    [/autoit]
  • Danke campweb und progandy, werde ich machen.

    @James1337
    Ich merke dass mein Beispiel etwas unverständlich ausgedrückt ist.

    Hier mal die Liste.

    Spoiler anzeigen

    A = Y
    B = P
    C = L
    D = T
    E = A
    F = V
    G = K
    H = R
    I = E
    J = Z
    K = G
    L = M
    M = S
    N = H
    O = U
    P = B
    Q = X
    R = N
    S = C
    T = D
    U = I
    V = J
    W = F
    X = Q
    Y = O
    Z = W

  • @James1337
    Ich merke dass mein Beispiel etwas unverständlich ausgedrückt ist.


    Ok, danke.
    Dann ist meine Idee viel zu umständlich.

  • Danke an alle, ich glaube das mit den Keyboard Layout ist das simpelste.

    Ich bin auch bereits damit fertig ^^
    Jetzt müsste ich nur noch wissen, wo ich das Keyboard Layout hinpacken muss. ^^

  • Die andere Methode würde übrigens so funktionieren ;).

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <String.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $aCodec[26][2] = [['A', 'Y'],['B', 'P'],['C', 'L'],['D', 'T'],['E', 'A'],['F', 'V'],['G', 'K'],['H', 'R'],['I', 'E'],['J', 'Z'],['K', 'G'],['L', 'M'],['M', 'S'],['N', 'H'],['O', 'U'],['P', 'B'],['Q', 'X'],['R', 'N'],['S', 'C'],['T', 'D'],['U', 'I'],['V', 'J'],['W', 'F'],['X', 'Q'],['Y', 'O'],['Z', 'W']]

    [/autoit] [autoit][/autoit] [autoit]

    $hWnd = GUICreate("Translate", 200, 60)
    $cInput = GUICtrlCreateInput("", 5, 5, 190, 20)
    $cButton = GUICtrlCreateButton("Translate", 5, 30, 190, 25)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $cButton
    $sText = GUICtrlRead($cInput)
    If $sText = "" Then ContinueLoop

    [/autoit] [autoit][/autoit] [autoit]

    $aSplit = StringSplit(StringUpper($sText), "")
    $sTextNew = ""

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To $aSplit[0]
    $bCharFound = False
    For $i2 = 0 To 25
    If $aSplit[$i] == $aCodec[$i2][0] Then
    $sTextNew &= $aCodec[$i2][1]
    $bCharFound = True
    ExitLoop
    EndIf
    Next
    If Not $bCharFound Then $sTextNew &= $aSplit[$i]
    Next

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSetData($cInput, _StringProper($sTextNew))
    EndSwitch
    WEnd

    [/autoit]
  • Moin,

    weil ich mal mit Hotkeys spielen wollte:

    Deutsch / Al Bhed - Tastaturumschaltung für Arme
    [autoit]

    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("^!t", "SetupHotKeys")

    [/autoit] [autoit][/autoit] [autoit]

    Global $aTranslate[256]
    Dim $Deutsch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    $Deutsch &= StringLower($Deutsch)
    Dim $Al_Bhed = "YPLTAVKREZGMSHUBXNCDIJFQOW"
    $Al_Bhed &= StringLower($Al_Bhed)
    Dim $aASCII = StringToASCIIArray($Deutsch)
    Dim $aSplit = StringSplit($Al_Bhed, "", 2)
    For $I = 0 To UBound($aASCII) - 1
    $aTranslate[$aASCII[$I]] = $aSplit[$I]
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Global $hGui = GUICreate("Deutsch / Al Bhed - Umschalten mit Strg+Alt+t")
    Global $idLabel = GUICtrlCreateLabel("Deutsch", 20, 20, 360, 20)
    Global $idEdit = GUICtrlCreateEdit("", 20, 40, 360, 320)
    Global $idButton = GUICtrlCreateButton("Deutsch -> Al Bhed", 20, 370, 360)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $idButton
    Translate()
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Exit
    ; ======================================================================================================================
    Func SetupHotkeys()
    Static $HotKeyFunc = "HotKeyFunc"
    Static $On = False
    Local $Func = ""
    $On = Not $On
    If $On Then $Func = $HotKeyFunc
    Local $aS = StringSplit($Deutsch, "")
    For $I = 1 To $aS[0]
    If $Func Then
    HotKeySet($aS[$I], $Func)
    GUICtrlSetData($idLabel, "Al Bhed")
    GUICtrlSetState($idButton, $GUI_DISABLE)
    Else
    HotKeySet($aS[$I])
    GUICtrlSetData($idLabel, "Deutsch")
    GUICtrlSetState($idButton, $GUI_ENABLE)
    EndIf
    Next
    GUICtrlSetData($idEdit, "")
    EndFunc
    ; ======================================================================================================================
    Func HotKeyFunc()
    Local $Chr = $aTranslate[Asc(@HotKeyPressed)]
    If $Chr Then
    HotKeySet($Chr)
    Send($Chr, 1)
    HotKeySet($Chr, "HotKeyFunc")
    Else
    HotKeySet(@HotKeyPressed)
    Send(@HotKeyPressed, 1)
    HotKeySet(@HotKeyPressed, "HotKeyFunc")
    EndIf
    EndFunc
    ; ======================================================================================================================
    Func Translate()
    Local $Edit = GUICtrlRead($idEdit)
    Local $aA = StringToASCIIArray($Edit)
    Local $aS = StringSplit($Edit, "", 2)
    Local $Trans = ""
    Local $Chr = ""
    For $I = 0 To UBound($aA) - 1
    $Chr = $aTranslate[$aA[$I]]
    If $Chr Then
    $Trans &= $Chr
    Else
    $Trans &= $aS[$I]
    EndIf
    Next
    MsgBox(0, "Deutsch -> Al Bhed", $Edit & @CRLF & @CRLF & $Trans, 0, $hGui)
    EndFunc

    [/autoit]


    Würdest Du den Thread bitte auf "gelöst" setzen?