30 Aralık 2014 Salı

Tunyukuk Robot Kolu

Her hakkı saklıdır.

Yüksek lisans tezimde robot kolu yapmıştım (1994-1997). Çalışmanıŋ mekanik, elektronik ve yazılım ayağı vardı. O zamanlar nesneye yöŋelik programlama dilleri yoktu. MS-DOS altında çalışan ilkel derleyicilerde kod yazıyorduk. Mekanik ve elektronik yapısını tasarlayıp gerçekledikten soŋra, robotuŋ bilgisayardaki arayüzünde tüm ikonları, bevelleri, panelleri, gölgelendirmeleri  kendim tasarlamıştım. Arayüzde KökTörükçe de kullanmak istedim ve herbir KökTörük üsüğünü piksel piksel bir başlık (header) dosyasında tasarladım ve robot kolunuŋ kumanda arayüzünde kullandım. Üsükleriŋ tasarımı iki haftamı almıştı. Artık Turbo C'de KökTörükçe yazabiliyordum (1995). Tüm koduŋ sadece KökTörük üsüklerinden sorumlu kısmı KOKTURK.H başlık dosyasınıŋ içeriğini resmiŋ altında vėriyorum.


KOKTURK.H (1995)
/* This header file was prepared by Ulduz Tu§rul €AVDAR to use the Alphabet of K”ktrk in C or C++ applications.  May 2, 1996

     CHARACTER TABLE
  ---------------------------------------------------------------------
  a =   a,e      i =   ,i      o =   o,u      F =   ”,      Y =  (a)y
  y =  (e)y      B =  (a)b      b =  (e)b      c =   ‡,c      f = i‡,ic
  D =  (a)d      d =  (e)d      G =  (a)g      g =  (e)g      k =  (e)k
  q = ”k,k      K =  (a)k      w =    k      W = ok,uk      L =  (a)l
  l =  (e)l      x = lt,ld      m =     m      N =  (a)n      n =  (e)n
  ¤ =    ng      X =    ny      Q = n‡,nc      h = nd,nt      p =     p
  R =  (a)r      r =  (e)r      S =  (a)s      s =  (e)s      v =     Ÿ
  T =  (a)t      t =  (e)t      z =     z      V =     :
  1 =     1      2 =     2      3 =     3      4 =     4      5 =     5
  6 =     6      7 =     7      8 =     8      9 =     9      0 =     0
  ! =     !      + =     +      / =     /      = =     =      - =     -
  . =     .      % =     %      { =     }      } =     {      * =     *
  ( =     )      ) =     (      : =     :      @ =     @      ? =(inv)?
  ; =(inv);      , =(inv),      \"=     "

*/

int x,y,b;

void kharf(char code)
  {
  switch (code)
    {
    case 'a':line(x,y+3,x-3,y);                    //  a,e
     line(x-3,y,x-3,y+10);
     line(x-3,y+10,x-6,y+7);
     x-=9;
     break;
    case 'i':line(x,y+3,x-3,y);                    //  ,i
     line(x-3,y,x-3,y+10);
     x-=6;
     break;
    case 'o':line(x-5,y,x,y+5);                    //  o,u
     line(x,y+5,x-5,y+10);
     x-=8;
     break;
    case 'F':line(x,y,x,y+5);                      //  ”,
     line(x,y+5,x-5,y);
     line(x-5,y,x-5,y+10);
     x-=8;
     break;
    case 'Y':line(x-5,y,x-5,y+10);                 //  (a)y
     arc(x-5,y+5,270,90,5);
     x-=8;
     break;
    case 'y':circle(x-3,y+3,3);                    //  (e)y
     arc(x-5,y+5,270,0,5);
     x-=8;
     break;
    case 'B':arc(x-3,y+7,135,90,3);                //  (a)b
     arc(x,y+1,160,230,4);
     x-=9;
     break;
    case 'b':line(x-6,y+10,x,y+3);                 //  (e)b
     line(x,y+3,x-3,y);
     line(x-3,y,x-6,y+3);
     line(x-6,y+3,x,y+10);
     x-=9;
     break;
    case 'c':line(x,y+10,x-3,y+6);                 //  ‡,c
     line(x-3,y+6,x-6,y+10);
     line(x-3,y+6,x-3,y);
     x-=9;
     break;
    case 'f':line(x-3,y+10,x-3,y);                 //  i‡,ic
     line(x-3,y+5,x,y);
     line(x-3,y+5,x-6,y);
     x-=9;
     break;
    case 'D':line(x-3,y,x,y+3);                    //  (a)d
     line(x,y+3,x-2,y+5);
     line(x-2,y+5,x,y+7);
     line(x,y+7,x-3,y+10);
     line(x-6,y,x-3,y+3);
     line(x-3,y+3,x-5,y+5);
     line(x-5,y+5,x-3,y+7);
     line(x-3,y+7,x-6,y+10);
     x-=9;
     break;
    case 'd':line(x,y,x-6,y+10);                   //  (e)d
     line(x-6,y,x,y+10);
     x-=9;
     break;
    case 'G':line(x-3,y+6,x-3,y+10);               //  (a)g
     arc(x,y+2,90,270,2);
     arc(x-6,y+2,270,90,2);
     x-=9;
     break;
    case 'g':line(x-4,y,x-6,y+6);                  //  (e)g
     line(x-4,y,x,y+3);
     line(x-4,y+4,x,y+7);
     arc(x-1,y+5,180,270,5);
     x-=9;
     break;
    case 'k':line(x-4,y,x,y+2);                    //  (e)k
     line(x,y+2,x,y+10);
     line(x-4,y+3,x,y+5);
     x-=7;
     break;
    case 'q':line(x-5,y,x-5,y+10);                 //  ”k,k
     line(x-5,y,x,y);
     line(x,y,x-1,y+3);
     line(x-5,y+6,x,y+6);
//      line(x,y+6,x,y+10);
     arc(x+2,y+8,135,240,3);
     x-=8;
     break;
    case 'K':line(x,y,x,y+10);                     //  (a)k
     line(x,y+6,x-4,y+4);
     arc(x-14,y+5,330,0,10);
     x-=8;
     break;
    case 'w':line(x,y,x,y+10);                     //  k
     line(x,y,x-5,y+5);
     line(x-5,y+5,x,y+10);
     x-=8;
     break;
    case 'W':line(x-3,y,x-3,y+10);                 //  ok,uk
     line(x-3,y+10,x,y+6);
     line(x-3,y+10,x-6,y+6);
     x-=9;
     break;
    case 'L':line(x,y,x,y+10);                     //  (a)l
     line(x,y+10,x-4,y+6);
     x-=7;
     break;
    case 'l':line(x,y,x-3,y+5);                    //  (e)l
     line(x-3,y+5,x-6,y);
     line(x-3,y+5,x-3,y+10);
     x-=9;
     break;
    case 'x':line(x,y,x,y+10);                     //  lt,ld
     line(x-8,y,x-8,y+10);
     line(x,y,x-4,y+5);
     line(x-4,y+5,x-8,y);
     x-=11;
     break;
    case 'm':line(x-5,y,x,y+5);                    //  m
     line(x,y+5,x-5,y+10);
     line(x-8,y+3,x-3,y+8);
     line(x-8,y+7,x-3,y+2);
     x-=11;
     break;
    case 'N':arc(x-5,y+5,290,80,5);                //  (a)n
     x-=8;
     break;
    case 'n':line(x,y,x,y+6);                      //  (e)n
     line(x,y+6,x-4,y+3);
     line(x-4,y,x-4,y+10);
     line(x-4,y+7,x-8,y+4);
     line(x-8,y+4,x-8,y+10);
     x-=11;
     break;
    case '¤':line(x,y,x,y+10);                     //  ¤
     line(x,y+6,x-4,y+2);
     x-=7;
     break;
    case 'X':arc(x-3,y+3,270,90,3);                //  ny
     arc(x-3,y+7,270,90,3);
     x-=6;
     break;
    case 'Q':line(x-3,y,x,y+3);                    //  n‡,nc
     line(x,y+3,x-2,y+5);
     line(x-2,y+5,x,y+7);
     line(x,y+7,x-3,y+10);
     x-=6;
     break;
    case 'h':arc(x-5,y+5,125,55,5);                //  nd,nt
     putpixel(x-3,y+4,getcolor());
     putpixel(x-7,y+4,getcolor());
     putpixel(x-5,y+6,getcolor());
     x-=13;
     break;
    case 'p':line(x,y,x,y+10);                     //  p
     line(x,y,x-3,y+3);
     x-=6;
     break;
    case 'R':line(x,y,x,y+10);                     //  (a)r
     line(x,y+4,x-5,y+6);
     arc(x-12,y+2,330,10,8);
     x-=8;
     break;
    case 'r':line(x,y+3,x-2,y);                    //  (e)r
     line(x-2,y,x-4,y+3);
     line(x-4,y+3,x-6,y);
     line(x-6,y,x-8,y+3);
     line(x-4,y+3,x-4,y+10);
     x-=11;
     break;
    case 'S':arc(x,y+2,90,250,2);                  //  (a)s
     arc(x-3,y+7,270,60,3);
     arc(x,y+1,160,270,5);
     x-=8;
     break;
    case 's':line(x,y,x,y+10);                     //  (e)s
     x-=3;
     break;
    case 'v':line(x,y+4,x-6,y+4);                  //  Ÿ
     line(x-3,y+4,x-1,y);
     line(x-5,y,x-3,y+4);
     line(x-3,y+4,x-3,y+10);
     x-=9;
     break;
    case 'T':line(x-3,y,x,y+3);                    //  (a)t
     line(x-3,y,x-6,y+3);
     line(x-3,y,x-3,y+4);
     line(x-3,y+4,x,y+7);
     line(x-3,y+4,x-6,y+7);
     line(x-6,y+7,x-3,y+10);
     line(x,y+7,x-3,y+10);
     x-=9;
     break;
    case 't':line(x-5,y,x-5,y+10);                 //  (e)t
     line(x-5,y+6,x-1,y+4);
     arc(x+9,y+5,180,210,10);
     x-=8;
     break;
    case 'z':line(x-4,y,x-4,y+10);                 //  z
     line(x,y,x,y+5);
     line(x,y+5,x-8,y+5);
     line(x-8,y+5,x-8,y+10);
     x-=11;
     break;
    case 'V':putpixel(x-1,y+2,getcolor());         //  word separator
     putpixel(x-1,y+8,getcolor());
     x-=5;
     break;
    case '!':line(x-3,y,x-3,y+7);                  //  interjection
     putpixel(x-3,y+10,getcolor());
     line(x-2,y,x-2,y+7);
     putpixel(x-2,y+10,getcolor());
     x-=12;
     break;
    case '+':line(x-1,y+5,x-7,y+5);                //  plus
     line(x-4,y+2,x-4,y+8);
     x-=11;
     break;
    case '/':line(x-1,y,x-6,y+10);                 //  slash
     x-=11;
     break;
    case '=':line(x-1,y+4,x-6,y+4);                //  sign of equality
     line(x-1,y+6,x-6,y+6);
     x-=10;
     break;
    case '-':line(x-1,y+5,x-7,y+5);                //  minus
     x-=11;
     break;
    case '"':line(x-1,y,x-1,y+3);                  //  double quotation mark
     line(x-3,y,x-3,y+3);
     x-=7;
     break;
    case '?':arc(x-2,y+3,30,250,3);                //  inverse question mark
     arc(x-3,y+3,30,250,3);
     line(x-3,y+6,x-3,y+7);
     line(x-2,y+6,x-2,y+7);
     putpixel(x-3,y+10,getcolor());
     putpixel(x-2,y+10,getcolor());
     x-=12;
     break;
    case ';':outtextxy(x,y-5,":");                 //  inverse semicolon
     line(x-3,y+3,x-2,y+1);
     x-=12;
     break;
    case ',':line(x-3,y+6,x-2,y+6);                //  inverse comma
     line(x-3,y+5,x-2,y+3);
     x-=12;
     break;
    case '0':outtextxy(x-2,y-5,"0");               //  zero
     x-=9;
     break;
    case '1':outtextxy(x-2,y-5,"1");               //  one
     x-=9;
     break;
    case '2':outtextxy(x-2,y-5,"2");               //  two
     x-=9;
     break;
    case '3':outtextxy(x-2,y-5,"3");               //  three
     x-=9;
     break;
    case '4':outtextxy(x-2,y-5,"4");               //  four
     x-=9;
     break;
    case '5':outtextxy(x-2,y-5,"5");               //  five
     x-=9;
     break;
    case '6':outtextxy(x-2,y-5,"6");               //  six
     x-=9;
     break;
    case '7':outtextxy(x-2,y-5,"7");               //  seven
     x-=9;
     break;
    case '8':outtextxy(x-2,y-5,"8");               //  eight
     x-=9;
     break;
    case '9':outtextxy(x-2,y-5,"9");               //  nine
     x-=9;
     break;
    case '.':outtextxy(x-3,y-5,".");               //  full stop
     x-=12;
     break;
    case '%':outtextxy(x-6,y-5,"%");               //  per cent
     x-=15;
     break;
    case '}':outtextxy(x-7,y-5,"{");               //  close curly bracket
     x-=13;
     break;
    case ')':outtextxy(x-5,y-5,"(");               //  close parenthesis
     x-=11;
     break;
    case '(':outtextxy(x-6,y-5,")");               //  open parenthesis
     x-=11;
     break;
    case '{':outtextxy(x-8,y-5,"}");               //  open curly bracket
     x-=13;
     break;
    case '*':outtextxy(x-7,y-5,"*");               //  star
     x-=11;
     break;
    case ':':outtextxy(x,y-5,":");                 //  colon
     x-=12;
     break;
    case ' ':outtextxy(x-9,y-5," ");               //  space
     x-=12;
     break;
    case '@':outtextxy(x-2,y-5,"@");               //  at
     x-=9;
     break;
    }
  }

void ulduz(char text[80],int xx,int yy,int color)
  {
  struct textsettingstype textinfo;

  gettextsettings(&textinfo);
  setcolor(color);
  settextstyle(2,0,6);
  settextjustify(1,2);
  x=xx;
  y=yy;
  b=0;
  do
    {
    kharf(text[b]);
    b++;
    }
  while (b<strlen(text));
  settextstyle(textinfo.font,textinfo.direction,textinfo.charsize);
  settextjustify(textinfo.horiz,textinfo.vert);
  }

4 yorum:

  1. Hocam bilgisayar mühendisiydiniz. Hangi programlama dilleri ve ne tarz projeler üzerinde çalışıyorsunuz?

    YanıtlaSil
    Yanıtlar
    1. Çalışma alanlarım: Haberleşme ve bilgisayar ağları, Kuantum hesaplama ve kuantum bilgisayarlar, Robotlar.

      Sil