Mohamad Reza Baghbani

وبلاگ محمد رضا باغبانی
دنبال کنندگان ۲ نفر
این وبلاگ را دنبال کنید
طبقه بندی موضوعی
بایگانی

Mohamad Reza Baghbani

وبلاگ محمد رضا باغبانی

فارسی نویسی در گادو انجین - (متن‌های پویا)

سه شنبه, ۲۵ اسفند ۱۳۹۴، ۰۶:۳۳ ب.ظ
در ادامه‌ی بخش قبل، اگر گیمی داشته باشیم که متن‌های آن به صورت پیش‌فرض، یا ثابت نباشند با مشکل مواجه می‌شویم، برای مثال، زمانی که کاربر نام خود را وارد می‌کند، یا همانند بازی "حروف ریز" که کاربر متن آن را به صورت تصادفی انتخاب می‌کند...


برای این مورد، حقیر درحد توان و معلوماتم قطعه کدی نوشته‌ام که امیدوارم به کار شما نیز بیاید (البته اگر شخصی بدین منظور سورس گودوت را ویرایش کند یا راه حلی بهتر ارائه نماید لطف بزرگی در حق بنده حقیر و دوست‌داران این انجین انجام داده است) :

می‌توانید قطعه کد را از اینجا دانلود کنید یا در ادامه مطلب مشاهده فرمایید.




extends Node2D

var persiaWords = [
"آ","ﺎ","آ","ﺎ",
"ا","ﺎ","ا","ﺎ",
"ب","ﺐ","ﺑ","ﺒ",
"پ","ﭗ","ﭘ","ﭙ",
"ت","ﺖ","ﺗ","ﺘ",
"ث","ﺚ","ﺛ","ﺜ",
"ج","ﺞ","ﺟ","ﺠ",
"چ","ﭻ","ﭼ","ﭽ",
"ح","ﺢ","ﺣ","ﺤ",
"خ","ﺦ","ﺧ","ﺨ",
"د","ﺪ","د","ﺪ",
"ذ","ﺬ","ذ","ﺬ",
"ر","ﺮ","ر","ﺮ",
"ز","ﺰ","ز","ﺰ",
"ژ","ﮋ","ژ","ﮋ",
"س","ﺲ","ﺳ","ﺴ",
"ش","ﺶ","ﺷ","ﺸ",
"ص","ﺺ","ﺻ","ﺼ",
"ض","ﺾ","ﺿ","ﻀ",
"ط","ﻂ","ﻃ","ﻄ",
"ظ","ﻆ","ﻇ","ﻈ",
"ع","ﻊ","ﻋ","ﻌ",
"غ","ﻎ","ﻏ","ﻐ",
"ف","ﻒ","ﻓ","ﻔ",
"ق","ﻖ","ﻗ","ﻘ",
"ک","ﮏ","ﮐ","ﮑ",
"گ","ﮓ","ﮔ","ﮕ",
"ل","ﻞ","ﻟ","ﻠ",
"م","ﻢ","ﻣ","ﻤ",
"ن","ﻦ","ﻧ","ﻨ",
"و","ﻮ","و","ﻮ",
"ه","ﻪ","ﻫ","ﻬ",
"ی","ﯽ","ﯾ","ﯿ",
"ﻻ","ﻼ","ﻻ","ﻼ"]

var persia=["آ","ا","ب","پ","ت","ث","ج","چ","ح","خ","د","ذ","ر","ز","ژ","س","ش","ص","ض","ط","ظ","ع","غ","ف","ق","ک","گ","ل","م","ن","و","ه","ی"]

var special = ["آ","ا","د","ذ","ر","ز","ژ","و",
" ","‌",".","+","-",")","(","*","&","^","%","$",
"#","@","!","~","`","\"","\\","|","}","{","0","9",
"8","7","6","5","4","3","2","1","0","?","/",">",
"<","ء",":","،","ٍ","ٌ","ً","ّ","ِ","َ","؛",",","=","_","[","]","«","»","ـ"]

func specialno(text):
    for i in range(special.size()):
        if(text==special[i]):
            return true
    return false

func specialChar( letter ):
    for i in range( 8, special.size() ):
        if( special[ i ] == letter ):
            if ( i == 0 ):
                return -2
            else:
                return  (-i)-2
    return -1

func persiaSet(end,array):
    var text = ""
    var no
    var pos
    for i in range( end ):
        pos = specialChar( array[ i ] )
        print(pos)
        for j in range(persia.size()):
            if(persia[ j ]==array[ i ]):
                pos=j
                break
        if ( i == 0 ):
            if( i == end - 1 ):
                no = 0
            else:
                no = 2
        elif( specialno(array[ i - 1 ]) ):
            if( i  != end - 1):
                if(  specialChar( array[ i + 1 ] ) < -1):
                    no = 0
                else:
                    no = 2
            else:
                no = 0
        else:
            if(i != end-1):
                if(  specialChar( array[ i + 1 ] ) < -1):
                    no = 1
                else:
                    no = 3
            else:
                no = 1
        if (pos >= 0):
            text = persiaWords[(pos*4)+no]+text
        else:
            text = special[abs(pos+2)]+text

    return text
    pass
func _ready():
    var SampleText = ")متن 1: این متن »نمونه‌ای« است برای بررسی \"صحت حروف‌چینی\" _*+گودوت‌انجین+*_ ("
    get_node("Label").set_text(persiaSet(SampleText.length(),SampleText))
    get_node("Label 2").set_text(SampleText)
    pass



موافقین ۰ مخالفین ۰ ۹۴/۱۲/۲۵
محمد رضا باغبانی

فارسی نویسی در گادو انجین

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی