الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

فكرة مشروع الكتابة باللغة العربية

رائج
بدأه الطالب39 في 4 يناير 2014 · 59 رد · 3,658 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#26

فكرة جميلة جدا جدا 
اسمحو لي بان اشارك على قد معرفتي
هي عملت الاشكال الرئيسية لل 29 حرف ، طبعا مثل ما تم الاتفاق ولكن الابعاد 9*9

ولكن في محدودية كثير برسم الاحرف في مثل هذا المدى، واحرف اخرى من المستحيل ترسمها شبه دائري.

اترككم مع ملف الاحرف

alphabet.rar

تم تعديل هذه المشاركة بواسطة eng.ahmadshalabi في 12 يناير 2014 في 14:01

1
#27

!!! رائع  أخ أحمد .. ماهذه الروعة :)

لنبداً بشيء يثير الحماسة بعض الشيء

شجعتموني لكتابة برنامج صغير مبدئي .وبدائي جداً

البرنامج بلغة C وهو فقط لإظهار كيف ستظهر الحروف ذات الأبعاد 8*8

 يمكنك تجريب الأحرف

ا,ب,ج,د,ر,س,ص,ط

قثط

#include<windows.h>#include<conio.h>HDC DC;int pointer=0;Print(int a){    printf("printing %c\n",a);    int i,j;    int Alphabet[8][8][8]=    {    {//ا        {0,0,0,1,1,0,0,0},        {0,0,0,1,0,0,0,0},        {0,0,1,1,1,0,0,0},        {0,0,0,0,0,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,1,0,0,0}},    {//ب        {0,0,0,0,0,0,0,0},        {0,0,0,0,0,0,0,0},        {1,0,0,0,0,0,0,1},        {1,0,0,0,0,0,0,1},        {1,1,1,1,1,1,1,1},        {0,0,0,0,0,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,0,0,0,0}},    {//ج        {0,0,0,1,1,1,0,0},        {0,0,1,0,0,0,1,0},        {0,1,0,0,0,1,0,0},        {0,0,1,1,1,0,0,0},        {0,0,1,0,0,1,0,0},        {0,1,0,0,1,0,0,0},        {1,0,0,0,0,0,1,0},        {0,1,1,1,1,1,0,0}},    {//د        {0,0,0,0,0,0,0,0},        {0,0,1,0,0,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,0,1,1,0,0},        {0,0,0,0,0,1,0,0},        {0,0,0,0,0,1,1,0},        {0,1,1,1,1,1,0,0},        {0,0,0,0,0,0,0,0},},    {//ر        {0,0,0,0,0,0,0,0},        {0,0,0,0,0,0,1,0},        {0,0,0,0,0,0,1,0},        {0,0,0,0,0,1,1,0},        {0,0,0,0,0,1,0,0},        {0,0,0,0,1,1,0,0},        {0,0,0,1,1,1,0,0},        {0,1,1,0,0,0,0,0},},    {//س        {0,0,0,0,0,0,0,0},        {0,0,0,0,0,0,0,0},        {0,0,0,1,0,1,0,1},        {1,0,0,1,0,1,0,1},        {1,0,0,1,1,1,1,1},        {1,0,0,1,0,0,0,0},        {1,0,0,1,0,0,0,0},        {0,1,1,0,0,0,0,0}},    {//ص        {0,0,0,0,0,0,0,0},        {0,0,0,0,1,1,1,0},        {0,0,0,0,1,0,0,1},        {1,0,1,0,1,0,0,1},        {1,0,1,1,1,1,1,1},        {1,0,1,0,0,0,0,0},        {0,1,0,0,0,0,0,0},        {0,0,0,0,0,0,0,0}},    {//ط        {0,0,0,0,0,0,0,0},        {0,0,0,0,1,0,0,0},        {0,0,0,0,1,0,0,0},        {0,0,0,0,1,1,1,0},        {0,0,0,1,0,0,1,1},        {0,0,0,1,0,0,0,1},        {0,1,1,1,1,1,1,1},        {0,0,0,0,0,0,0,0}}        };        char letters[256];        letters['h']=0;        letters['f']=1;        letters['[']=2;        letters[']']=3;        letters['v']=4;        letters['s']=5;        letters['w']=6;        letters['\'']=7;    for(i=0;i<8;i++)        for(j=0;j<8;j++)            SetPixel(                     DC,200+i-8*pointer,200+j,0xFFFFFF*Alphabet[letters[a]%8][j]                     );    pointer++;}int main(){    DC = GetDC(GetDesktopWindow());    int a;    while((a=getch())!='\n')    {        Print(a);    }    return 0;}
 يمكنك تجريب البرنامج المرفق , اسحب النافذة لأقصى اليسار في الأعلى حتى تترك مساحة للكتابة فيها .. جربه على أي حال

المهم ..

الكود الذي سأقوم بكتابته الآن هو لقراءة ملفات bmp التي تصممونها وسيقوم بتخزينها وعرضها بعد ذلك ..

قررت أن ننتهي من كل الكود بلغة C قبل أن نحوله للأسمبلي , علماً أن مرحلة كتابة الكود بالـ C هي التي أعتبرها التصميم , وسيكون التنفيذ على الأسمبلي سهلاً بعد ذلك

بالتوفيق للجميع , والسلام عليكم

Arabic__36a2__0.rar

1
#28

اخ مصطفى هل بامكانك ان تشرح الكود قيلا؟؟

وايضا هل نصمم الاحرف بابعاد 8*8 ام 12*16؟؟

وهل نرسم جميع حالات الحرف ام نكتفي بالشكل المنفصل؟؟

#29

الكود بدائي وضعته فقط من باب المشاركة وجاري العمل على الباقي الآن ..

يمكنك تجريب المرفقات , الطباعة تتم بشكل منفصل (فلم أقم بتصميم حالات الحروف حتى أصلها ببعضها ) ولكن بالطبع سنحتاج لرسم جميع الحالات للحرف ويُفضل أن يكون هناك عدة خطوط نختار منها ( يعني عدة أشخاص يعملون على التصميم فينتج لنا عدة خطوط )

يمكنكم التصميم بأي أبعاد تريدونها ( فالكود الذي أكتبه الآن يشمل ذلك )

كشرح سريع للكود :

DC تعني مقبض الأدوات في winAPI ونستخدمه للرسم وأمور أخرى وخصوصاً في الكود للدالة SetPixel التي تغير لون بكسل واحد في النافذة المعطى الـ DC لها

الـ main واضحة حيث نأخذ حرف ونستدعي دالة الطباعة

في دالة الطباعة قمت بتعريف المصفوفة Alphabet وهي من 3 أبعاد البعد الأول للحروف والبعدان الثاني والثالث لشكل الحرف ..

في هذا الجزء

letters['h']=0;
        letters['f']=1;
        letters['[']=2;
        letters[']']=3;
        letters['v']=4;
        letters['s']=5;
        letters['w']=6;
        letters['\'']=7;

أقوم بإسناد الرقم مميز لكل  حرف h تعني حرف الألف فهما مرتبطان في لوحة المفاتيح ,

هذا الرقم هو الـ index الخاص بالحرف في المصفوفة Alphabet

 

ثم حلقةتان متداخلتان لطباعة الحرف بكسلاً فبكسل :)

قم نزيد مؤشر الطباعة

(الشيء المعقد الوحيد هو تحديد مكان الحرف حسب موضع المؤشر )

قمت بتحديث الكود قليلاً بحيث يسمح بالرجوع للخلف عن طريق الـbackspace

والخروج عند الضغط على Enter

وأضفت بعض الحروف الأخرى

#include<windows.h>#include<conio.h>HDC DC;int pointer=0;Print(int a){    printf("printing %c\n",a);    int i,j;    int Alphabet[12][8][8]=    {    {//ا        {0,0,0,1,1,0,0,0},        {0,0,0,1,0,0,0,0},        {0,0,1,1,1,0,0,0},        {0,0,0,0,0,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,1,0,0,0}},    {//ب        {0,0,0,0,0,0,0,0},        {0,0,0,0,0,0,0,0},        {1,0,0,0,0,0,0,1},        {1,0,0,0,0,0,0,1},        {1,1,1,1,1,1,1,1},        {0,0,0,0,0,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,0,0,0,0}},    {//ج        {0,0,0,1,1,1,0,0},        {0,0,1,0,0,0,1,0},        {0,1,0,0,0,1,0,0},        {0,0,1,1,1,0,0,0},        {0,0,1,0,0,1,0,0},        {0,1,0,0,1,0,0,0},        {1,0,0,0,0,0,1,0},        {0,1,1,1,1,1,0,0}},    {//د        {0,0,0,0,0,0,0,0},        {0,0,1,0,0,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,0,1,1,0,0},        {0,0,0,0,0,1,0,0},        {0,0,0,0,0,1,1,0},        {0,1,1,1,1,1,0,0},        {0,0,0,0,0,0,0,0},},    {//ر        {0,0,0,0,0,0,0,0},        {0,0,0,0,0,0,1,0},        {0,0,0,0,0,0,1,0},        {0,0,0,0,0,1,1,0},        {0,0,0,0,0,1,0,0},        {0,0,0,0,1,1,0,0},        {0,0,0,1,1,1,0,0},        {0,1,1,0,0,0,0,0},},    {//س        {0,0,0,0,0,0,0,0},        {0,0,0,0,0,0,0,0},        {0,0,0,1,0,1,0,1},        {1,0,0,1,0,1,0,1},        {1,0,0,1,1,1,1,1},        {1,0,0,1,0,0,0,0},        {1,0,0,1,0,0,0,0},        {0,1,1,0,0,0,0,0}},    {//ص        {0,0,0,0,0,0,0,0},        {0,0,0,0,1,1,1,0},        {0,0,0,0,1,0,0,1},        {1,0,1,0,1,0,0,1},        {1,0,1,1,1,1,1,1},        {1,0,1,0,0,0,0,0},        {0,1,0,0,0,0,0,0},        {0,0,0,0,0,0,0,0}},    {//ط        {0,0,0,0,0,0,0,0},        {0,0,0,0,1,0,0,0},        {0,0,0,0,1,0,0,0},        {0,0,0,0,1,1,1,0},        {0,0,0,1,0,0,1,1},        {0,0,0,1,0,0,0,1},        {0,1,1,1,1,1,1,1},        {0,0,0,0,0,0,0,0}},    {//ع        {0,0,0,1,1,1,0,0},        {0,0,1,0,0,0,0,0},        {0,1,0,0,0,1,0,0},        {0,0,1,1,1,0,0,0},        {0,0,1,0,0,0,0,0},        {0,1,0,0,0,0,0,0},        {1,0,0,0,0,0,1,0},        {0,1,1,1,1,1,0,0}},    {//ف        {0,0,0,0,0,0,1,0},        {0,0,0,0,0,0,0,0},        {0,0,0,0,0,1,1,0},        {1,0,0,0,1,0,0,1},        {1,0,0,0,0,1,1,0},        {1,0,0,0,0,0,1,0},        {0,1,1,1,1,1,0,0},        {0,0,0,0,0,0,0,0}},    {//ك        {0,0,0,0,0,0,0,1},        {0,0,0,1,1,0,0,1},        {0,0,1,0,0,0,0,1},        {0,0,0,1,1,0,0,1},        {1,0,1,1,1,0,0,1},        {1,0,0,0,0,0,1,0},        {0,1,1,1,1,1,0,0},        {0,0,0,0,0,0,0,0}},    {//م        {0,0,0,0,0,1,1,1},        {0,0,0,0,0,1,1,1},        {0,0,0,1,1,1,1,1},        {0,0,0,1,0,0,0,0},        {0,0,1,1,0,0,0,0},        {0,0,1,0,0,0,0,0},        {0,0,1,0,0,0,0,0},        {0,0,1,0,0,0,0,0}}        };        char letters[256];        letters['h']=0;        letters['f']=1;        letters['[']=2;        letters[']']=3;        letters['v']=4;        letters['s']=5;        letters['w']=6;        letters['\'']=7;        letters['u']=8;        letters['t']=9;        letters[';']=10;        letters['l']=11;    for(i=0;i<8;i++)        for(j=0;j<8;j++)            SetPixel(                     DC,200+i-8*pointer,200+j,0xFFFFFF*Alphabet[letters[a]%12][j]                     );    pointer++;}int main(){    DC = GetDC(GetDesktopWindow());    int a;   while((a=getch())!=13&&a!=10)  {        if(a=='\b')            pointer--;        else            Print(a);    }    return 0;}

أهم شيء أن تعرف أن الكود ليس جزءاً من المشروع بعد , فهو فقط للتجريب , أجرب الأفكار

بالتوفيق

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 13 يناير 2014 في 19:49 — السبب: تعديل الكود

1
#30

فاضل اكم سؤال ؟؟

 

في المصفوفة Alphabet ,

في البعدان الثاني والثالث ، على ماذا اعتمدت في تعيين البتات 0 و 1؟؟

هل سيكون هنالك كود c لتحميل ملفات bmp دالخ الكونسول؟؟

#31

ملاحظة : عندما اضغط على backspace يخرج من البرنامج

#32

شكراً , تم تعديل الكود في الرد

____

قمت بتعيين البتات يدوياً ويمكنك رؤية ذلك .. مجرد رأي في شكل الحرف لا أكثر .. (يدوياً )

سيكون هناك كود c بقراءة ملفات bmp وحيدة اللون وتحويلها إلى مصفوفات مقل المصفوفة Alphabet

 إن شاء الله

#33
مصطفى 36a2 كتب:

شكراً , تم تعديل الكود في الرد

____

قمت بتعيين البتات يدوياً ويمكنك رؤية ذلك .. مجرد رأي في شكل الحرف لا أكثر .. (يدوياً )

سيكون هناك كود c بقراءة ملفات bmp وحيدة اللون وتحويلها إلى مصفوفات مقل المصفوفة Alphabet

 إن شاء الله

 

لدي تعديل بسيط في رسم الاحرف بناء على المصفوفة Alphabet في الكود، بحيث يجعل الاحرف بابعاد 8*8 (كما اردت انت في البداية  ^_^ )

ستراه بعد ان تم العمل عليه (تقريبا بعد ساعتين).

ملاحظة : بالنسبة لحرف الميم اخر 4 بكسلات زيحهم بمقدار بكسلين لليمين 

بالتوفيق

#34
اقتباس

ملاحظة : بالنسبة لحرف الميم اخر 4 بكسلات زيحهم بمقدار بكسلين لليمين 

D:

أخبرتك أن الكود ليس جزءاً من المشروع :)

الكود التالي يقوم بقراءة صورة bmp وحيدة اللون ويطبع الصورة على الكونسول .

(عذراً للـ ambiguity  هوايتي )

#include<stdio.h>int main(){    int start,hight,width;    int i,j,q,l;    FILE*bmp=fopen("C:\\Users\\Mostafa36a2\\Downloads\\OnePixel.bmp","r");    fseek(bmp,10,SEEK_SET);fread((void *)&start, sizeof(int), 1, bmp);    fseek(bmp,18,SEEK_SET);fread((void *)&width, sizeof(int), 1, bmp);    fseek(bmp,22,SEEK_SET);fread((void *)&hight, sizeof(int), 1, bmp);    //printf("%d  %d  %d\n",start,width,hight);    fseek(bmp,start,SEEK_SET);    char **Letter=(char*)malloc(hight);    for(i=0;i<hight;i++,fread((void *)&l,1,(4-(width/8)%4)%4,bmp))        for(Letter[hight-1-i]=(char*)malloc(width),j=0;j<width;j++)            for(/*printf("%i\n",*/q=fgetc(bmp)/*);*/,l=0;l<8;l++,q/=2)                Letter[hight-1-i][width-1-j++]=q%2?' ':219;    fclose(bmp);    for(i=0;i<hight;i++,putchar(10))        for(j=0;j<width;j++)            putchar(Letter[j]);}

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 13 يناير 2014 في 21:42 — السبب: ;

#35

شكلك راح توديني في ستين داهية  :o

لكن الكود لم يعمل لدي يوجد فيه عدة اخطاء

1 −1
#36

السلام عليكم

لم أكن أعلم بأن المشروع سيكون معقد بهذا الشكل ولكن أصبح ممتع ومسلي في نفس الوقت نرجو من الجميع المشاركه

 

لقد حاولت رسم الحروف مراعيا بذلك حاله إتصال الحرف مع حرف آخر حيث سيكون مبدئيا تمثيل الحرف بأبعاد 14*8 سأحاول رسم الحروف المتصله من كلا الجهتين اليسار و اليمين

أما الحروف التي لاتتصل بما بعدها (التي تتصل على اليمين فقط) وهي * أ د ذ ر ز و * فهي موجوده في الصوره تم رسمها

 

post-273058-0-30230300-1389643338_thumb.

 

ما هو الكومبيلر الذي تستخدمه أخي مصطفى أعني في لغه السي

1 −1
#37

أخ مصطفي أنت تبذل مجهودات جبارة لكن لماذا تستخدم لغة السي مادمنا في قسم الأسمبلي

 

أنا مثلا لا أتقن السي و لا أعرف معني تلك الأوامر التي استعملتها.

 

هل يمكن كتابة نفس برامج قراءة البكسلات من ملف bmp  بلغة الأسمبلي.

 

و هل يمكننا كتابته في بأي لغة أخري مثلا لكن من دون استعمال الدوال الجاهزة

 

أقصد ما دمنا نتعلم الأسمبلي فمن الضروري أن نتعود علي الإستغناء عن الدوال الجاهزة لأن المغزي من تعلم هذه اللغة المعقدية و المدنية المستوي(الأسمبلي)

 

فمبرمج الأسمبلي المحترف لا يستعمل المقاطعات غالبا و إنما يتعامل مباشرة مع العتاد(و إلا فلماذا لا نستعمل اللغات العالية المستوى)

 

هو التعامل المباشر مع العتاد بها نستطيع تصميم واجهات و الطباعة علي الشاشة و تصميم لغات برمجة و إلي غير ذلك.

 

 

أنا لا أستعمل الدوال أبدا.

−1
#38

يا جماعة العشاء جاهز .. :)

البرنامج جاهز لقراءة الصور جميعاً ...

#include<stdio.h>int main(){    int start,hight,width;    int i,j,q,l;    int A;    char twoPowers[]={128,64,32,16,8,4,2,1};    char Alphabet[]="hfje[po]`v.sawq'_uytr;glki,d";    char path[100];    FILE*bmp;    for(A=0;Alphabet[A];A++)    {        sprintf(path,"%c.bmp",Alphabet[A]);        bmp=fopen(path,"r");            fseek(bmp,10,SEEK_SET);fread((void *)&start, sizeof(int), 1, bmp);            fseek(bmp,18,SEEK_SET);fread((void *)&width, sizeof(int), 1, bmp);            fseek(bmp,22,SEEK_SET);fread((void *)&hight, sizeof(int), 1, bmp);            fseek(bmp,start,SEEK_SET);            char **Letter=(char**)malloc(hight*sizeof(char*));            for(i=hight-1;i>=0;i--,fread((void *)&l,1,3-(width%32-1)/8,bmp))            {                for(Letter=(char*)malloc(width),j=0;j<width;)                {                    for(q=fgetc(bmp),l=0;l<8&&j<width;l++,j++)                        Letter[j]=q&twoPowers[l]?' ':219;                }            }            fclose(bmp);            for(i=0;i<hight;i++,putchar(10))                for(j=0;j<width;j++)                    putchar(Letter[j]);    }}

تجدون في المرفقات برنامج تجربة لطباعة الحروف  التي صممها الأخ أحمد ..

يمكنكم التعديل في ملفات الـ bmp  وسيتكفل البرنامج في طباعة الحرف

 

alphabet.rar

#39

@eng.ahmadshalabi

اقتباس

شكلك راح توديني في ستين داهية  :o

لكن الكود لم يعمل لدي يوجد فيه عدة اخطاء

عادي :) النسخة الجديدة ليس فيها أخطاء

 

@الطالب39

أهلاً وسهلاً بك ..أطلت الغياب ..  ممتاز ما قمت به ..

بانتظار التصميم الكامل .. ولكن هناك بعض التعديلات سأكتبها اليوم بإذن الله

@kenham

اقتباس

هل يمكن كتابة نفس برامج قراءة البكسلات من ملف bmp  بلغة الأسمبلي.

 طالما أننا لن نستعمل أي نظام تشغيل فالجواب : لا . لا يمكن التعامل مع الملفات من الBIOS (يمكننا في DOS وأنظمة التشغيل الأخرى )

ولكن لن نستخدم الملفات بل سيكون الكود الأسمبلي محتوياً على الخطوط المرفقة كلها

اقتباس

و هل يمكننا كتابته في بأي لغة أخري مثلا لكن من دون استعمال الدوال الجاهزة

لم أستحدم أي دالة جاهزة مجرد قراءة ملف وطباعة الخرج , ويمكن القيام بذلك بأي لغة أخرى

 

اقتباس

فمبرمج الأسمبلي المحترف لا يستعمل المقاطعات غالبا , و إنما يتعامل مباشرة مع العتاد

لست محترفاً لأجيبك بنعم أو لا , ولكن الطباعة على الشاشة غاية في السهولة وبدون استخدام المقاطعات :)

 

المشروع سيفشل 100% إن بدأنا بكتابته بالأسمبلي فوراً , بدون تخطيط وبدون تجربة الأفكار

بعد انتهاء جميع الأفكار وتطبيقها بلغة عالية المستوى , سيكون دليلاً على فهم المشروع بشكل كامل , عندها يمكن إنهاء كود الأسمبلي في ساعات ..

الأسمبلي لغة بسيطة ولكن تخطيط الكود وتنظيمه هو الصعب فيها .. وطالما أننا فهمنا الكفرة جيداً فلن نواجه صعوبات

 

أعتذر للتشويش في الأكواد .. سأشرح كل شيء عند انتهاء التخطيط بحيث لا نخطئ في شيء ..

أحببت أن يكون العمل أمامكم حتى لا تظنوا أن المشروع توقف ...

الأكواد حتى الآن لم تتجاوز مرحلة قراءة الخطوط

 

والكود القادم سيكون الكتابة بالعربي المقطع . بكسل بسكل .إن شاء الله

 

والله ولي التوفيق

#40

وهذا كود الطباعة .. أدخل حرفاً من الحروف المدعومة وسيتم طباعته على الشاشة السوداء بحجم كبير وعلى سطح المكتب مباشرة بالحجم الحقيقي الذي قمت بتصميمه

#include<stdio.h>char Alphabet[]="hfje[po]`v.sawq'_uytr;glki,d";char **Letter[sizeof(Alphabet)];int H,W;int GetLetters(const char*Path){    int start,hight,width;    int i,j,q,l;    int A;    char twoPowers[]={128,64,32,16,8,4,2,1};    char path[100];    FILE*bmp;    for(A=0;Alphabet[A];A++)    {        sprintf(path,"%s%c.bmp",Path,Alphabet[A]);        bmp=fopen(path,"r");        if(!bmp)            return -1;        fseek(bmp,10,SEEK_SET);fread((void *)&start, sizeof(int), 1, bmp);        fseek(bmp,18,SEEK_SET);fread((void *)&width, sizeof(int), 1, bmp);        fseek(bmp,22,SEEK_SET);fread((void *)&hight, sizeof(int), 1, bmp);        H=hight,W=width;        fseek(bmp,start,SEEK_SET);        Letter[A]=(char**)malloc(hight*sizeof(char*));        for(i=hight-1;i>=0;i--,fread((void *)&l,1,3-(width%32-1)/8,bmp))        {            for(Letter[A]=(char*)malloc(width),j=0;j<width;)            {                for(q=fgetc(bmp),l=0;l<8&&j<width;l++,j++)                    Letter[A][j]=q&twoPowers[l]?0:1;            }        }        fclose(bmp);        printLetter(A,hight,width);    }    return 0;}void printLetter(int A,int hight,int width){    int i,j;    for(i=0;i<hight;i++,putchar(10))            for(j=0;j<width;j++)                putchar(Letter[A][j]);}#include<windows.h>HDC DC;int pointer;void PixelLetter(int A,int hight,int width){    int i,j;    for(i=0;i<hight;i++)        for(j=0;j<width;j++)            SetPixel(DC,1000+i-pointer*width,100+j,Letter[A][j]*0xFFFFFF);    pointer++;}#include<conio.h>int main(){    int a,q;    DC=GetDC(GetDesktopWindow());    GetLetters("");    while((a=getch())!=10&&a!=13)    {        if(a=='/')            a='_';        for(q=0;q<sizeof(Alphabet);q++)            if(a==Alphabet[q])                printLetter(q,H,W),PixelLetter(q,H,W);    }}

في المرفقات البرنامج المبدئي وبجانبه الصور ..

يمكنك تعديل الصور كما تريد والمفترض أن البرنامج يمكنه قراءتها واستخدامها في الطباعة

 

 

هل هناك شيء باق قبل أن نتابع ؟

alphabet2.rar

2
#41

جميل جميل

التقدم واضح،

ولكن يوجد بعض الامور ، الا وهي :-

1- عند التعديل على الصور (اقصد بالتعديل هنا تعديل الصورة مع المحافظة على اسمها المقابل لها)، فعند الضغط على الحرف من الكيبورد يعلق يطلع الى الديبغر الخاص بالفيجوال الستديو (يعني في خطأ ما لا ادري اين)

2- عند الضغط على حرف ى لا يظهر مع العلم ان الحرف موجودة رستمه بين الملفات

3- عند الضغط على backspace لا يحدث شيء

#42

2- لم أدرجه في الحروف 

3- لم أكتب شيئاً بخصوصه

1- هل يمكنك توثيق الحالة ؟ ربما تقوم بحفظ الملف بصيغة 24 بت .. والمطلوب صيغة وحيدة اللون

هل يمكنك إرفاق الملف المعدل إن لم يكن السطر السابق صحيحاً ؟

بالمناسبة .. لا أدري لماذا اقترحت صيغة لون واحد , مع العلم أن كود التعامل مع صيغة 24 بت أسهل p:

بالتوفيق

#43

السلام عليكم و رحمة الله و بركاته  

احسنتم صنعا جميعا و و فقكم الله و زادكم علما و تفوقا

اخي الكريم مصطفى لقد جربت جميع الحروف و كلها ظهرت ماعدا الالف المقصورة "ى" و قد انتقلت بين جميع اللغات فرنسية و عربية و انجليزية لكنها لم تظهر و لا ادري لماذا؟

لكن عملكم هذا يستحق حقا الثناء تابعوا و انا ساحاول ان اتعلم منكم باذن الله 

موفقون جميعا

ابتسم للدنيا تبتسم لك و افعل الخير و انساه و لا تنسى أي أمر سيء قمت به حتى لا تكرره


لا تنسونا من صالح دعائكم أعانكم الله و ثبتكم على سواء السبيل


:)  :lol:  ^_^ 

#44

اعذرني لعدم توثيق الحالة التي طلبتها، لدي مشكلة في رفع الصور على المنتدى

#45

لقد أتممت جميع الحروف تقريبا ممكن بقي حرف أو إثنين كـ ئ المهم مقاس الحروف وهو 15*9  ما يهمنا هنا 15 أي عدد الأسطر التي سيتم فيها عرض الحرف

 

وقد إخترت 15 هذا بحساب حرف الألف مع الهمزه " أ "سيحدد لي عدد البيكسل فوق السطر وعرف الـ"ي" المكسوره ستحدد لي عدد البيكسل أسفل السطر

 

وبهذا الحدم المحدد لعرض الحرف سنتمكن من من تكوين جمله عند وضع الحروف بجانب بعض لقد حسبت لذلك يمكنكم تجريب وضع الحروف بالقرب من بعض لتكوين جمله لترو النتائج

 

لا يهم شكل الحروف (نوع الخط :D ) فهذا مشروع بحد ذاته لأن تحسين الخط يعتمد على تمثيل الحرف في عدد أكبر ن البيكسل

 

المهم اظن أننا تجاوزنا مرحله تشكيل الحروف يمكن التقدم بالمشروع إلى مراحله أخرى

alphabet.rar

تم تعديل هذه المشاركة بواسطة الطالب39 في 14 يناير 2014 في 21:20

#46

سؤال خارج الموضوع: إذا كان الكود المكتوب بالـ C، فلماذا الموضوع بقسم الأسمبلي؟

 

إذا كان البرنامج سيستمر بها يرجي نقله للقسم المناسب.

 

 

و الله ولي التوفيق

مدونتي: C++ Tips and Tricks

#47

شكراً لك أخي C++er  المشروع يجب أن يكون بالأسمبلي , ولكن لن أكتب الكود بنفسي بل سأكتب برنامج بالـC ليكتب الكود

أرجو منك تصحيح أي خلل تراه , ونقل الموضوع إن رأيت ذلك أفضل

 

الموضوع هنا اسمه "فكرة مشروع .. " وليس هو  الــ"مشروع" بعد

 

شكراً لك

1
#48

اليكم بعض التعديلات الجذرية التي قمت بها على الاحرف، بحيث تغطي الاحرف المطبوعة على الكيبورد

مثل : ة ى آ لا لآ ؤ ء ئ إ لإ أ

ومن ثم قمت بتعديل بسيط على الكود ليقبل المعطيات الجديدة. (بعد اذنك اخي مصطفى)

 

جربوه واعطوني رأيكم 

 

My alphabet.rar

تم تعديل هذه المشاركة بواسطة eng.ahmadshalabi في 16 يناير 2014 في 04:44

1
#50

لماذا توقفتم على المشروع

مواضيع مشابهة