Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Hướng dẫn C | Phân tích màn hình DOS ( C for DOS ) (none đồ họa)

  1. #1
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Mặc định Hướng dẫn C | Phân tích màn hình DOS ( C for DOS ) (none đồ họa)

    Nói trước là mình ko trình bày về graph tại đây vì theo cá nhân mình ko nên đi sâu vào đồ họa trong DOS!

    1. Tọa độ
    Với C for DOS : BC , TC ...
    +Ở chế độ bt ( khi trong bài ko khởi động loại textmode nào lên cả) thì màn hình ct của bạn sẽ có cấu trúc là các ô với kích thước là : 80 x 50
    ngang màn hình có 80 ô, dọc màn hình là 50 ô. Mỗi ô chỉ chứa 1 kí tự. do đó ko có kí tự ngắn hay dài trong dos vì các ô này là const và chữ nằm ngọn trong ô ( chữ n và chữ m trong dos là như nhau hi hi hi )

    +
    coi hệ tọa độ màn hình như sau :

    O-----------------> x
    |
    |
    |
    |
    |
    V y


    ta sẽ có gốc của màn hình đựoc coi là vị trí trên cùng bên phải có tọa độ là 1,1

    dòng thứ 1 của màn hình có tọa độ là y=1.
    dòng thứ 2 của màn hình có tọa độ là y=2.
    .........
    dòng thứ i của màn hình có tọa độ là y=i.


    điểm dữa dòng dòng 1 có tọa độ là x=39,y=1 và x=40, y=1;

    để đến được điểm đó thì ta sẽ dùng gotoxy(39,1) hi hi hi hi


    vậy để nhảy đến cột x, dòng thứ y thì ta sẽ dùng gotoxy();


    2. Các ô

    + Ô để thể hiện chữ. Về màu sắc thì có 2 thành phần khác nhau :
    _ màu chữ : dùng lệnh textcolor() để thiết lập.Màu chữ của mỗi ô là 1 giá trị riêng , mặc định ban đầu là chữ màu đen, do đó khi bạn printf sẽ có màu trắng.

    Sau khi bạn thiết lập textcolor thì màu của con trỏ sẽ thay đổi. Con trỏ màu đi đến ô nào màu của ô đó sẽ được thiết lập giá trị mới. Do đó sau khi bạn viết ra cprintf sẽ thấy maù.

    cprintf : color printf
    chức năng của nó là thiết lập lại màu cho ô tại con trỏ, sau đó mới viết

    bạn có thể thiết lập đặc tính màu cho toàn bộ các ô luôn sau đó dùng printf bình thường cũng có màu :
    C Code:
    1. textcolor(YELLOW);
    2. clrscr();
    3. printf("QUANG XENG");

    + Màu nền. Màu nên là màu của toàn bộ phần còn lại của ô trừ phần chữ ra.
    màu nền cũng có đặc tính như của màu chữ .

    + Sâu hơn 1 tí :
    đặc tính của mỗi ô màn hình được lưu trong bộ nhớ bởi 1 byte thông tin .
    1 byte gồm 8 bit:
    +bit đầu tiên quy định việc chữ đó có nhấp nháy hay ko
    +4 bit tiếp theo quy định về màu chữ : do đó có 2 mũ 4 = 16 màu chữ khác nhau
    +3 bit tiếp theo quy định về màu nên : do đó có 2 mũ 3 = 8 màu nên khác nhau


    3. Cửa sổ.
    Khi mặc định . Màn hình hiển thị trùng với màn hình làm việc. Tuy nhiên bạn có thể thiết lập màn hình làm việc lại. bằng lệnh window.
    window(x,y,x2,y2)

    a-----------------------------
    |-----------------------------|
    |-----------------------------|
    |-----------------------------|
    |-----------------------------|
    |-----------------------------|
    |-----------------------------|
    |-----------------------------b

    sẽ được 1 cửa sổ trong trong đó
    x,y là tọa độ của a
    x2,y2 là tọa độ của b

    hi hi hi
    khi bạn thiết lập chế độ của sổ mới thì :
    + bạn clrscr() sẽ chỉ xóa text trong cửa sổ đó
    + bạn cprintf thì sẽ ko bao giờ ra khỏi cửa sổ đó
    + gotoxy tính theo tọa độ mới là tọa độ trong cửa sổ đó
    .............



    tặng bạn đoạn code này chạy thử sẽ có khung hình tương đối đẹp nè :
    C Code:
    1.         textmode(C80)
    2.  
    3.         window(1,1,80,1)
    4.         textcolor(RED);
    5.         textbackground(WHITE);
    6.         clrscr();
    7.         gotoxy(1,30);
    8.         printf("Chuong trinhf chay thu thoi ma");
    9.  
    10.         window(1,2,80,24)
    11.         textcolor(GREEN);
    12.         textbackground(BLUE);
    13.         clrscr();
    14.         printf("Hi hi hi hi hi hi hi hi hi hi hi hi");
    15.  
    16.  
    17.         window(1,25,80,25)
    18.         textcolor(RED);
    19.         textbackground(WHITE);
    20.         clrscr();
    21.         printf("Sinh vien : quang xeng");



    4. Sâu hơn tí nữa về ô : nghỉ tí đã


    tu bi con ti niu
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  2. #2
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    4. về ô chữ :
    theo textmode(C80)
    bản chất mỗi chữ , 1 ô chữ được thể hiện bằng 16x16 ô màu nhỏ khác nhau
    ngang 16 ô dọc 16 ô


    trong máy sẽ được biểu diễn bởi 32 ô nhớ <=> 16 int.
    các bạn có thể sử dụng hàm tiếng việt sau để khởi tạo lại nội dung của bảng mã qua đó.




    PHP Code:
     void tiengviet(void){
            
    int ij;
            
    char    vnfont[16*256]={       
        
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        
    24,24,24,24,24,24,24,248,0,0,0,0,0,0,0,0,
        
    240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,
        
    255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
        
    0,254,2,3,63,3,3,3,3,3,3,3,255,255,0,0,
        
    0,254,254,254,254,126,62,30,14,6,254,254,254,254,254,0,
        
    255,1,1,1,1,1,1,249,249,1,1,1,1,1,1,255,
        
    0,0,0,0,0,0,24,60,60,24,0,0,0,0,0,0,
        
    0,255,0,0,0,0,0,0,0,0,0,0,255,255,0,0,
        
    0,254,254,126,62,30,14,6,126,126,126,126,126,254,254,0,
        
    0,254,254,126,126,126,126,126,6,14,30,62,126,254,254,0,
        
    0,0,248,4,254,2,3,3,3,3,3,3,255,255,0,0,
        
    255,128,129,131,135,143,159,191,131,131,131,131,131,128,128,255,
        
    0,254,2,3,3,255,3,3,3,3,3,3,255,255,0,0,
        
    0,254,2,115,131,131,131,115,3,3,3,3,255,255,0,0,
        
    0,254,2,3,195,67,251,67,195,3,3,3,255,255,0,0,
        
    0,0,64,96,112,120,124,126,124,120,112,96,64,0,0,0,
        
    0,0,1,3,7,15,31,63,31,15,7,3,1,0,0,0,
        
    0,254,2,243,139,243,147,139,3,3,3,3,255,255,0,0,
        
    0,254,2,251,131,243,131,251,3,3,3,3,255,255,0,0,
        
    255,1,125,125,171,215,239,239,239,215,187,109,85,41,1,255,
        
    0,254,130,130,130,84,40,16,16,40,68,130,170,214,254,0,
        
    0,0,0,0,0,0,0,255,24,24,24,24,24,24,24,24,
        
    0,1,3,2,6,4,12,136,216,80,112,32,0,0,0,0,
        
    0,0,0,0,8,28,62,127,28,28,28,28,0,0,0,0,
        
    0,0,0,0,28,28,28,28,127,62,28,8,0,0,0,0,
        
    0,0,0,0,0,0,24,12,254,12,24,0,0,0,0,0,
        
    0,0,0,0,0,0,48,96,254,96,48,0,0,0,0,0,
        
    0,127,126,124,127,111,79,0,0,79,111,127,124,126,127,0,
        
    0,126,62,30,126,118,114,0,0,114,118,126,30,62,126,0,
        
    0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
        
    255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
        
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        
    0,0,0,0,24,60,60,60,24,24,0,24,24,0,0,0,
        
    0,0,0,102,102,102,36,0,0,0,0,0,0,0,0,0,
        
    0,0,0,0,108,108,254,108,108,108,254,108,108,0,0,0,
        
    0,0,24,24,124,198,194,192,124,6,134,198,124,24,24,0,
        
    0,0,0,0,0,0,194,198,12,24,48,102,198,0,0,0,
        
    0,0,0,0,56,108,108,56,118,220,204,204,118,0,0,0,
        
    0,0,0,48,48,48,96,0,0,0,0,0,0,0,0,0,
        
    0,0,0,0,12,24,48,48,48,48,48,24,12,0,0,0,
        
    0,0,0,0,48,24,12,12,12,12,12,24,48,0,0,0,
        
    0,0,0,0,0,0,102,60,255,60,102,0,0,0,0,0,
        
    0,0,0,0,0,0,24,24,126,24,24,0,0,0,0,0,
        
    0,0,0,0,0,0,0,0,0,0,24,24,24,48,0,0,
        
    0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,
        
    0,0,0,0,0,0,0,0,0,0,0,24,24,0,0,0,
        
    0,0,0,0,2,6,12,24,48,96,192,128,0,0,0,0,
        
    0,0,0,0,124,198,206,222,246,230,198,198,124,0,0,0,
        
    0,0,0,0,24,56,120,24,24,24,24,24,126,0,0,0,
        
    0,0,0,0,124,198,6,12,24,48,96,198,254,0,0,0,
        
    0,0,0,0,124,198,6,6,60,6,6,198,124,0,0,0,
        
    0,0,0,0,12,28,60,108,204,254,12,12,30,0,0,0,
        
    0,0,0,0,254,192,192,192,252,6,6,198,124,0,0,0,
        
    0,0,0,0,60,96,192,192,252,198,198,198,124,0,0,0,
        
    0,0,0,0,254,198,6,12,24,48,48,48,48,0,0,0,
        
    0,0,0,0,124,198,198,198,124,198,198,198,124,0,0,0,
        
    0,0,0,0,124,198,198,198,126,6,6,12,120,0,0,0,
        
    0,0,0,0,0,24,24,0,0,0,24,24,0,0,0,0,
        
    0,0,0,0,0,24,24,0,0,0,24,24,48,0,0,0,
        
    0,0,0,0,6,12,24,48,96,48,24,12,6,0,0,0,
        
    0,0,0,0,0,0,0,126,0,0,126,0,0,0,0,0,
        
    0,0,0,0,96,48,24,12,6,12,24,48,96,0,0,0,
        
    0,0,0,0,124,198,198,12,24,24,0,24,24,0,0,0,
        
    0,0,0,0,124,198,198,222,222,222,220,192,124,0,0,0,
        
    0,0,0,0,16,56,108,198,198,254,198,198,198,0,0,0,
        
    0,0,0,0,252,102,102,102,124,102,102,102,252,0,0,0,
        
    0,0,0,0,60,102,194,192,192,192,194,102,60,0,0,0,
        
    0,0,0,0,248,108,102,102,102,102,102,108,248,0,0,0,
        
    0,0,0,0,254,102,98,104,120,104,98,102,254,0,0,0,
        
    0,0,0,0,254,102,98,104,120,104,96,96,240,0,0,0,
        
    0,0,0,0,60,102,194,192,192,222,198,102,58,0,0,0,
        
    0,0,0,0,198,198,198,198,254,198,198,198,198,0,0,0,
        
    0,0,0,0,60,24,24,24,24,24,24,24,60,0,0,0,
        
    0,0,0,0,30,12,12,12,12,12,204,204,120,0,0,0,
        
    0,0,0,0,230,102,108,108,120,108,108,102,230,0,0,0,
        
    0,0,0,0,240,96,96,96,96,96,98,102,254,0,0,0,
        
    0,0,0,0,198,238,254,254,214,198,198,198,198,0,0,0,
        
    0,0,0,0,198,230,246,254,222,206,198,198,198,0,0,0,
        
    0,0,0,0,56,108,198,198,198,198,198,108,56,0,0,0,
        
    0,0,0,0,252,102,102,102,124,96,96,96,240,0,0,0,
        
    0,0,0,0,124,198,198,198,198,214,222,124,12,14,0,0,
        
    0,0,0,0,252,102,102,102,124,108,102,102,231,0,0,0,
        
    0,0,0,0,124,198,198,96,56,12,198,198,124,0,0,0,
        
    0,0,0,0,126,126,90,24,24,24,24,24,60,0,0,0,
        
    0,0,0,0,198,198,198,198,198,198,198,198,124,0,0,0,
        
    0,0,0,0,198,198,198,198,198,198,108,56,16,0,0,0,
        
    0,0,0,0,198,198,198,198,214,214,254,124,108,0,0,0,
        
    0,0,0,0,198,198,108,56,56,56,108,198,198,0,0,0,
        
    0,0,0,0,102,102,102,102,60,24,24,24,60,0,0,0,
        
    0,0,0,0,254,198,140,24,48,96,194,198,254,0,0,0,
        
    0,0,0,0,60,48,48,48,48,48,48,48,60,0,0,0,
        
    0,0,0,0,128,192,224,112,56,28,14,6,2,0,0,0,
        
    0,0,0,0,60,12,12,12,12,12,12,12,60,0,0,0,
        
    0,0,16,56,108,198,0,0,0,0,0,0,0,0,0,0,
        
    0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,
        
    0,0,48,48,24,0,0,0,0,0,0,0,0,0,0,0,
        
    0,0,0,0,0,0,0,120,12,124,204,204,118,0,0,0,
        
    0,0,0,0,224,96,96,120,108,102,102,102,124,0,0,0,
        
    0,0,0,0,0,0,0,124,198,192,192,198,124,0,0,0,
        
    0,0,0,0,28,12,12,60,108,204,204,204,118,0,0,0,
        
    0,0,0,0,0,0,0,124,198,254,192,198,124,0,0,0,
        
    0,0,0,0,56,108,100,96,240,96,96,96,240,0,0,0,
        
    0,0,0,0,0,0,0,118,204,204,204,124,12,204,120,0,
        
    0,0,0,0,224,96,96,108,118,102,102,102,230,0,0,0,
        
    0,0,0,0,24,24,0,56,24,24,24,24,60,0,0,0,
        
    0,0,0,0,6,6,0,14,6,6,6,6,102,102,60,0,
        
    0,0,0,0,224,96,96,102,108,120,108,102,230,0,0,0,
        
    0,0,0,0,56,24,24,24,24,24,24,24,60,0,0,0,
        
    0,0,0,0,0,0,0,236,254,214,214,214,198,0,0,0,
        
    0,0,0,0,0,0,0,220,102,102,102,102,102,0,0,0,
        
    0,0,0,0,0,0,0,124,198,198,198,198,124,0,0,0,
        
    0,0,0,0,0,0,0,220,102,102,102,124,96,96,240,0,
        
    0,0,0,0,0,0,0,118,204,204,204,124,12,12,30,0,
        
    0,0,0,0,0,0,0,220,118,102,96,96,240,0,0,0,
        
    0,0,0,0,0,0,0,124,198,112,28,198,124,0,0,0,
        
    0,0,0,0,16,48,48,252,48,48,48,54,28,0,0,0,
        
    0,0,0,0,0,0,0,204,204,204,204,204,118,0,0,0,
        
    0,0,0,0,0,0,0,102,102,102,102,60,24,0,0,0,
        
    0,0,0,0,0,0,0,198,198,214,214,254,108,0,0,0,
        
    0,0,0,0,0,0,0,198,108,56,56,108,198,0,0,0,
        
    0,0,0,0,0,0,0,198,198,198,198,126,6,12,248,0,
        
    0,0,0,0,0,0,0,254,204,24,48,102,254,0,0,0,
        
    0,0,0,0,14,24,24,24,112,24,24,24,14,0,0,0,
        
    0,0,0,0,24,24,24,24,0,24,24,24,24,0,0,0,
        
    0,0,0,0,112,24,24,24,14,24,24,24,112,0,0,0,
        
    0,0,0,0,118,220,0,0,0,0,0,0,0,0,0,0,
        
    0,0,0,0,0,0,16,56,108,198,198,254,0,0,0,0,
        
    0,0,0,0,0,0,124,198,192,192,198,124,24,12,248,0,
        
    0,0,0,0,204,204,0,204,204,204,204,204,118,0,0,0,
        
    0,0,0,0,108,108,0,120,12,124,204,204,118,0,0,0,
        
    0,0,48,72,72,48,0,120,12,124,204,204,118,0,0,0,
        
    0,0,0,0,108,108,0,124,198,254,192,198,124,0,0,0,
        
    0,0,0,0,108,108,0,56,24,24,24,24,60,0,0,0,
        
    0,0,0,24,60,102,0,56,24,24,24,24,60,0,0,0,
        
    0,0,0,0,108,222,26,26,126,216,216,218,108,0,0,0,
        
    0,0,0,0,204,204,0,124,198,198,198,198,124,0,0,0,
        
    0,0,0,48,120,204,0,204,204,204,204,204,118,0,0,0,
        
    0,0,0,0,198,198,0,198,198,198,198,126,6,12,120,0,
        
    0,0,24,24,24,124,198,192,192,198,124,24,24,24,0,0,
        
    0,0,0,56,108,100,96,240,96,96,102,230,188,0,0,0,
        
    0,0,0,102,102,102,60,24,126,24,60,24,24,0,0,0,
        
    0,0,0,252,102,102,124,98,102,111,102,102,243,0,0,0,
        
    0,0,0,0,118,220,0,220,102,102,102,102,102,0,0,0,
        
    0,0,0,0,0,0,54,108,216,108,54,0,0,0,0,0,
        
    0,0,0,0,0,0,216,108,54,108,216,0,0,0,0,0,
        
    0,0,0,0,24,24,24,126,24,24,24,0,126,126,0,0,
        
    0,0,0,0,96,48,24,12,24,48,96,0,124,124,0,0,
        
    0,0,0,0,12,24,48,96,48,24,12,0,124,124,0,0,
        
    24,24,24,60,60,126,126,255,24,24,24,24,24,24,24,24,
        
    24,24,24,24,24,24,24,24,255,126,126,60,60,24,24,24,
        
    0,0,0,0,0,64,112,124,255,124,112,64,0,0,0,0,
        
    0,0,0,0,0,2,14,62,255,62,14,2,0,0,0,0,
        
    0,224,32,48,48,48,48,48,48,48,48,48,240,240,0,0,
        
    255,128,128,128,128,128,128,159,159,128,128,128,128,128,128,255,
        
    192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,
        
    255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        
    0,240,24,28,30,30,3,3,3,3,3,3,255,255,0,0,
        
    0,254,1,0,124,254,254,254,254,124,0,1,254,0,0,0,
        
    0,0,0,128,128,64,64,64,64,128,128,0,0,0,0,0,
        
    0,0,0,0,0,0,0,255,192,192,192,192,192,192,192,192,
        
    0,0,108,56,0,56,108,198,198,254,198,198,198,0,0,0,
        
    0,16,56,108,0,56,108,198,198,254,198,198,198,0,0,0,
        
    0,16,56,68,254,102,98,104,120,104,98,102,254,0,0,0,
        
    0,16,56,68,56,108,198,198,198,198,198,108,56,0,0,0,
        
    0,0,3,1,58,108,198,198,198,198,198,108,56,0,0,0,
        
    0,0,3,1,199,198,198,198,198,198,198,198,124,0,0,0,
        
    0,0,0,0,248,108,102,102,254,102,102,108,248,0,0,0,
        
    0,0,0,0,108,56,0,120,12,124,204,204,118,0,0,0,
        
    0,0,0,0,56,108,0,120,12,124,204,204,118,0,0,0,
        
    0,0,0,0,56,108,0,124,198,254,192,198,124,0,0,0,
        
    0,0,0,0,56,108,0,124,198,198,198,198,124,0,0,0,
        
    0,0,0,0,0,3,1,126,198,198,198,198,124,0,0,0,
        
    0,0,0,0,0,3,1,206,204,204,204,204,118,0,0,0,
        
    0,0,0,0,12,62,12,60,108,204,204,204,118,0,0,0,
        
    0,224,96,112,112,112,112,112,112,112,112,112,240,240,0,0,
        
    0,255,0,0,0,0,0,0,0,0,0,0,255,255,0,0,
        
    0,255,192,192,195,194,223,194,195,192,192,192,255,63,0,0,
        
    0,255,192,192,192,192,192,192,192,192,192,192,255,63,0,0,
        
    24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,
        
    255,255,192,192,192,192,192,192,192,192,192,192,192,192,192,192,
        
    0,0,192,96,48,0,0,120,12,124,204,204,118,0,0,0,
        
    0,0,56,8,16,0,0,120,12,124,204,204,118,0,0,0,
        
    0,0,0,118,220,0,0,120,12,124,204,204,118,0,0,0,
        
    0,0,6,12,24,0,0,120,12,124,204,204,118,0,0,0,
        
    0,0,0,0,0,0,0,120,12,124,204,204,118,0,48,48,
        
    54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,
        
    0,0,96,16,76,56,0,120,12,124,204,204,118,0,0,0,
        
    0,0,7,1,110,56,0,120,12,124,204,204,118,0,0,0,
        
    0,0,118,220,108,56,0,120,12,124,204,204,118,0,0,0,
        
    0,0,12,16,108,56,0,120,12,124,204,204,118,0,0,0,
        
    0,0,0,0,0,0,0,248,24,24,24,24,24,24,24,24,
        
    255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
        
    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,255,
        
    255,255,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
        
    0,7,6,6,6,6,6,6,6,6,6,6,7,1,0,0,
        
    0,255,0,6,6,12,12,152,216,240,112,0,255,255,0,0,
        
    192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,255,
        
    0,0,0,0,108,56,0,120,12,124,204,204,118,0,48,48,
        
    0,0,192,96,56,108,0,120,12,124,204,204,118,0,0,0,
        
    0,0,7,1,58,108,0,120,12,124,204,204,118,0,0,0,
        
    0,0,118,220,56,108,0,120,12,124,204,204,118,0,0,0,
        
    0,0,6,12,56,108,0,120,12,124,204,204,118,0,0,0,
        
    0,0,0,0,56,108,0,120,12,124,204,204,118,0,48,48,
        
    0,0,192,96,48,0,0,124,198,254,192,198,124,0,0,0,
        
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,
        
    0,0,56,8,16,0,0,124,198,254,192,198,124,0,0,0,
        
    0,0,0,118,220,0,0,124,198,254,192,198,124,0,0,0,
        
    0,0,6,12,24,0,0,124,198,254,192,198,124,0,0,0,
        
    0,0,0,0,0,0,0,124,198,254,192,198,124,0,24,24,
        
    0,48,24,12,56,108,0,124,198,254,192,198,124,0,0,0,
        
    0,0,7,1,58,108,0,124,198,254,192,198,124,0,0,0,
        
    0,0,118,220,56,108,0,124,198,254,192,198,124,0,0,0,
        
    0,0,6,12,56,108,0,124,198,254,192,198,124,0,0,0,
        
    0,0,0,0,56,108,0,124,198,254,192,198,124,0,24,24,
        
    0,0,192,96,48,0,0,56,24,24,24,24,60,0,0,0,
        
    0,0,56,8,16,0,0,56,24,24,24,24,60,0,0,0,
        
    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
        
    255,255,192,192,192,192,192,192,192,192,192,192,192,192,192,192,
        
    255,128,128,128,128,128,128,159,159,128,128,128,128,128,128,255,
        
    0,0,0,118,220,0,0,56,24,24,24,24,60,0,0,0,
        
    0,0,6,12,24,0,0,56,24,24,24,24,60,0,0,0,
        
    0,0,0,0,24,24,0,56,24,24,24,24,60,0,24,24,
        
    0,0,192,96,48,0,0,124,198,198,198,198,124,0,0,0,
        
    0,0,0,0,62,96,192,192,254,192,192,96,62,0,0,0,
        
    0,0,56,8,16,0,0,124,198,198,198,198,124,0,0,0,
        
    0,0,118,220,0,0,0,124,198,198,198,198,124,0,0,0,
        
    0,0,6,12,24,0,0,124,198,198,198,198,124,0,0,0,
        
    0,0,0,0,0,0,0,124,198,198,198,198,124,0,24,24,
        
    0,0,192,96,56,108,0,124,198,198,198,198,124,0,0,0,
        
    0,0,7,1,58,108,0,124,198,198,198,198,124,0,0,0,
        
    0,0,118,220,56,108,0,124,198,198,198,198,124,0,0,0,
        
    0,0,6,12,56,108,0,124,198,198,198,198,124,0,0,0,
        
    0,0,0,0,56,108,0,124,198,198,198,198,124,0,24,24,
        
    0,0,192,96,48,3,1,126,198,198,198,198,124,0,0,0,
        
    0,0,56,8,16,3,1,126,198,198,198,198,124,0,0,0,
        
    0,0,118,220,0,3,1,126,198,198,198,198,124,0,0,0,
        
    0,0,6,12,24,3,1,126,198,198,198,198,124,0,0,0,
        
    0,0,0,0,0,3,1,126,198,198,198,198,124,0,24,24,
        
    0,0,192,96,48,0,0,204,204,204,204,204,118,0,0,0,
        
    0,0,0,0,0,254,0,0,254,0,0,254,0,0,0,0,
        
    0,0,56,8,16,0,0,204,204,204,204,204,118,0,0,0,
        
    0,0,118,220,0,0,0,204,204,204,204,204,118,0,0,0,
        
    0,0,6,12,24,0,0,204,204,204,204,204,118,0,0,0,
        
    0,0,0,0,0,0,0,204,204,204,204,204,118,0,48,48,
        
    0,0,192,96,48,3,1,206,204,204,204,204,118,0,0,0,
        
    0,0,56,8,16,3,1,206,204,204,204,204,118,0,0,0,
        
    0,0,118,220,0,3,1,206,204,204,204,204,118,0,0,0,
        
    0,0,6,12,24,3,1,206,204,204,204,204,118,0,0,0,
        
    0,0,0,0,0,3,1,206,204,204,204,204,118,0,48,48,
        
    0,0,192,96,48,0,0,198,198,198,198,126,6,12,248,0,
        
    0,0,56,8,16,0,0,198,198,198,198,126,6,12,248,0,
        
    0,0,0,118,220,0,0,198,198,198,198,126,6,12,248,0,
        
    0,0,6,12,24,0,0,198,198,198,198,126,6,12,248,0,
        
    0,0,0,0,0,0,0,198,198,198,198,126,4,12,251,3,
        
    0,254,1,0,0,0,0,0,0,0,0,1,254,0,0,0
     
    };
            
    textmode(C80);
            
    asm{
                    
    cli            
                    mov dx
    ,0x3c4   
                    mov ax
    ,0x100   
                    out dx
    ,ax
                    mov ax
    ,0x402   
                    out dx
    ,ax
                    mov ax
    ,0x704   
                    out dx
    ,ax
                    mov ax
    ,0x300   
                    out dx
    ,ax
       
                    mov dx
    ,0x3ce   
                    mov ax
    ,0x204   
                    out dx
    ,ax
                    mov ax
    ,0x5     
                    out dx
    ,ax
                    mov ax
    ,0x406   
                    out dx
    ,ax
                
    }
                for(
    i=0;i<256;++i)
                    for(
    j=0;j<16;++j)
                        
    pokeb(0xa000i*32+jvnfont[i*16+j]); 
            
    asm{
                    
    mov dx,0x3c4
                    mov ax
    ,0x100   
                    out dx
    ,ax
                    mov ax
    ,0x302   
                    out dx
    ,ax
                    mov ax
    ,0x304   
                    out dx
    ,ax
                    mov ax
    ,0x300   
                    out dx
    ,ax
       
                    mov dx
    ,0x3ce
                    mov ax
    ,0x4     
                    out dx
    ,ax
                    mov ax
    ,0x1005  
                    out dx
    ,ax
                    mov ax
    ,0xe06   
                    out dx
    ,ax
                    cli
                
    }
        } 
    Hướng dẫn sử dụng thư viện này:


    Hãy sử dụng hệ thống soạn thảo mã lệnh khác. Ví dụ Notepad++, Notepad; sử dụng font .VnTime , Unikey để soạn thảo tiếng Việt.

    Trong hàm main(), trước mọi các thao tác hiển thị, hãy gọi hàm

    Bây giờ bạn có thể viết tiếng Việt ra màn hình trong những hàm kết xuất dữ liệu ra màn hình (ví dụ printf("Alo Alo Hì Hì")




    chú ý thêm: khi gọi hàm này, các kí tự bảng mã ASCII mở rộng đã bị thay đổi. Để thiết lập lại bảng mã ASCII mở rộng mặc định, hãy sử dụng hàm:

    textmode(C40); để reset
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    và đây là 1 ví dụ cụ thể sau khi các bạn nghiên cứu về màn hình



    PHP Code:
    #include <string.h>
    #include <stdio.h>
    #include <conio.h>
    #include <dos.h>


    void viet(char xau[],int tre)
        {
            
    int i;
            for ( 
    i=i<strlen(xau) ; ++i)
                { 
    putch(xau[i]);delay(tre);}
        }
    void gau(int x,int y,int chungloai)
        {
            switch (
    chungloai)
            {
            case 
    2:
            
    gotoxy(x,y+1);  printf(" / _` | | | |/ _` | '_ \\ / _` | \\ \\/ / _ \\ '_ \\ / _` |");
            
    gotoxy(x,y+2);  printf("| (_| | |_| | (_| | | | | (_| |  >  <  __/ | | | (_| |");
            
    gotoxy(x,y+3);  printf(" \\__, |\\__,_|\\__,_|_| |_|\\__, | /_/\\_\\___|_| |_|\\__, |");
            
    gotoxy(x,y+4);  printf("    | |                   __/ |                  __/ |");
            
    gotoxy(x,y+5);  printf("    |_|                  |___/                  |___/");

            break;
            }
        }
    void PRint xgoc int ygoc int xdich int ydich char xau[] , int tre int mau int cach)
        {
            
    int i,j=0;
            
    textcolor(mau);
            if (
    xgoc==xdich&&ygoc>ydich&&cach==1)
              {
                for (
    j=j<=strlen(xau) ; j++)
                   {
                  if (
    xau[j]!=32)
                       for (
    i=ygoc i>= ydich i--)
                     {
                       
    gotoxy(xgoc,i);putch(xau[j]);
                       
    gotoxy(xgoc,i+1);putch(' ');
                       
    delay(tre);
                     }
                  else {
    gotoxy(xgoc,ydich);putch(' ');}
                
    xgoc++;
                   }
              }

            if (
    ydich==ygoc&&xgoc>xdich&&cach==1)
              {
                for (
    j=j<=strlen(xau) ; j++)
                   {
                  if (
    xau[j]!=32)
                       for (
    i=xgoc i>= xdich i--)
                     {
                       
    gotoxy(i,ygoc);cprintf("%c ",xau[j]);
                       
    delay(tre);
                     }
                  else {
    gotoxy(xgoc,ydich);putch(' ');}
                      
    xdich++;
                   }

              }
        }
    void tiengviet(void//copy ở bên trên hàm này nhé
        

    void start(void)
        {
            
    int i;

            
    clrscr();
            
    fflush(stdin);
            
    tiengviet();

            
    window(1,1,80,1);
            
    textbackground(LIGHTGRAY);
            
    clrscr();

            
    window(1,2,80,25);
            
    textbackground(BLUE);
            
    clrscr();
            
    gau(22,4,1);

            
    window(1,25,80,25);
            
    textbackground(LIGHTGRAY);
            
    clrscr();
            
    textcolor(RED);
            
    cprintf("   Sinh viªn  : ");
            
    textcolor(BLACK);
            
    cprintf(" Bïi TÊn Quang ");
            
    textcolor(RED);
            
    cprintf("                         Líp :");
            
    textcolor(BLACK);
            
    cprintf("  X ");
            
    window(1,1,80,1);
            
    PR60,1,25,1,"Gi¶i hÖ thèng bµi tËp tin A2",1,RED,1);
            
    window(1,2,80,24);
            
    textbackground(BLUE);
            
    textcolor(GREEN);
            
    gotoxy(28,21);
            
    viet("B¾t ®Çu",30);
            
    viet("............",100);
        }
    /*************************************************************************/


    void main(void)
        {
            
    start();



            
    getch();
            
    textmode(C40);
        } 
    Đã được chỉnh sửa lần cuối bởi langman : 01-04-2010 lúc 11:22 PM.
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  4. #4
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Tạo hiệu ứng chữ chạy trên màn hình

    5. Hiệu ứng đơn giản nhất : viết từng chữ cái lên màn hình :
    với C thì xâu cũng là 1 mảng . để viết từng chữ lên màn hình ta sẽ sử dụng delay thôi mà đơn giản chỉ là :

    ........................
    + viết xâu tại i
    + delay(5 đến 30);
    + viết xâu tại i+1
    + delay(5 đến 30);
    ............................

    ví dụ :
    PHP Code:
    void viet(char xau[])
        {
            for (
    int i=0;i<strlen(xau);i++)
                
    printf("%d",xau[i]),delay(10);
        } 
    sau đó
    PHP Code:
    viet("Chao cac ban "); 
    6. Để tạo 1 chữ bay ngang, bay dọc , bay chéo màn hình :
    để làm việc này đầu tiên bạn phải nghĩ đến công thức đường bay của chữ đầu tiên. sau đó ta sẽ tạo việc bay như sau:

    + viết chữ tại vị trí ban đầu.
    + delay(10);
    + xóa chữ tại vị trí lúc nãy ( có thể là nhảy đến chỗ đó viết dấu cách hoặc là viết chữ đó với màu chữ là màu nền) + viết chữ tại vị trí mới

    +delay(10)
    + xóa chữ tại vị trí lúc nãy ( có thể là nhảy đến chỗ đó viết dấu cách hoặc là viết chữ đó với màu chữ là màu nền) + viết chữ tại vị trí mới

    +delay(10)
    + xóa chữ tại vị trí lúc nãy ( có thể là nhảy đến chỗ đó viết dấu cách hoặc là viết chữ đó với màu chữ là màu nền) + viết chữ tại vị trí mới
    ................

    cứ như thế

    ví dụ :

    tham khảo hàm PR ở bên trên






    Tái bút : chú giải thêm về hàm textattr
    như đã trình bày ở trên, mỗi ô trên màn hình được biểu diễn bởi 2 ô byte, 1 byte quyết định trạng thái của ô chữ , 1 byte lưu mã ACSII của kí tự được thể hiện lên.

    lệnh texatttr(char x) là lệnh thiết lập trạng thái ô với quy cách như sau.
    1byte gồm 8 bít tôi gọi là
    b1 b2 b3 b4 b5 b6 b7 b8;

    ta có b1 là quyết định tính nháy của ô hiển thị, nếu b1 =0 thì ko nháy, b1=1 thì ô này sẽ nhấp nháy,
    3 bít tiếp theo b2 b3 b4 lập thành 1 số quyết định màu của nền của ô chữ vâng hiển nhiên do thế mà ta có 2 mũ 3 = 8 màu khác nhau tương ứng với 8 màu đầu tiên trong enum sau đây.

    ví dụ:
    giả sử b2 b3 b4 = 0 0 0 tức là = 0 ta có màu BLACK
    b2 b3 b4 = 1 0 0 tức là 4 ta có màu RED

    PHP Code:
    enum COLORS {
        
    BLACK,          /* dark colors */ 
        
    BLUE,
        
    GREEN,
        
    CYAN,
        
    RED,
        
    MAGENTA,
        
    BROWN,
        
    LIGHTGRAY,
        
    DARKGRAY,       /* light colors */
        
    LIGHTBLUE,
        
    LIGHTGREEN,
        
    LIGHTCYAN,
        
    LIGHTRED,
        
    LIGHTMAGENTA,
        
    YELLOW,
        
    WHITE
    }; 
    và 4 bít cuối cùng sẽ quyết định màu của chữ, do đó ta chỉ có 2 mũ 4 = 16 cách thể hiện màu nền khác nhau tương ứng với 16 màu của enum trên.


    tổng hợp lại, giả sử tôi muốn có kiểu chữ : nhấp nháy , màu đỏ, nền xanh BLUE ta sẽ :
    bít đầu tiên : 1
    3 bít tiếp theo : 1 0 0
    4 bít cuối cùng : 0010

    vậy là 1 100 0010 = 162 (hệ cơ số 10 ) = 0xA2( hệ cơ số 16);

    tôi sẽ gọi lệnh như sau :
    PHP Code:
    textattr(194);
    cprintf("khoai mon"); 
    hoặc tương đương như sau :
    PHP Code:
    textattr(0xC2);
    cprintf("Khoai tay"); 

    nhớ là phải dùng "cprintf" thay cho "printf" mới được nhé

    chúc các bạn thành công 1 lần nữa
    Đã được chỉnh sửa lần cuối bởi langman : 05-04-2009 lúc 04:42 PM.
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

  5. #5
    Ngày gia nhập
    03 2011
    Nơi ở
    H3t.org
    Bài viết
    37

    Thâm thúy, tuy đã khá hiểu Đồ họa DOS nhưng đây vẫn là kiến thức rất hay

  6. #6
    Ngày gia nhập
    11 2010
    Bài viết
    33

    Mặc định Hướng dẫn C | Phân tích màn hình DOS ( C for DOS ) (none đồ họa)

    Anh langman ơi em đang thắc mắc về bài tập:
    em có bài tập mô phỏng thuật toán quả bóng(R=10) rơi xuống mặt bàn có y=350.
    sau khi rơi xuống mặt bàn thì quả bóng này lên theo quỹ đạo hình tròn(1 nửa hình)và chạy theo mặt bàn có bán kính quỹ đạo giảm dần.
    Số lần quả bóng nảy lên có thể nhập từ bàn phím.
    Em mới làm đc quả bóng rơi xuống bàn,còn nảy lên theo quỹ đạo hình tròn thì hok làm đc anh nào giúp em với.Thanks trước nha

    anh có thể code cho em đc hok,luôn tiện cho em hỏi máy bài tập về môn này gửi bài ở box nào luôn

  7. #7
    Ngày gia nhập
    12 2010
    Nơi ở
    Cần thơ
    Bài viết
    273

    Cái vụ dos này hơi nhức đầu với DevC @@
    Hình như tổng số dòng mà mình vẫn còn thấy dòng đầu tiên là 299 thì phải ...lú qua hàng 300 thì dòng đầu tiên sẽ mất tiu
    Ai bất tài, tôi nhìn hoài chẳng thấy,
    Đi khắp phòng tôi lấy 1 tấm gương,
    Khẽ đặt lên một góc phía bức tường,
    Nhìn vào đó, tôi tận tường kẻ đó.

  8. #8
    Ngày gia nhập
    11 2010
    Bài viết
    33

    nhờ mấy anh giải dùm bài này cái:
    1 quả bong co bán kính 10,rơi xuống mp có y=350.khi rơi xuống bóng nảy lên lại vài lần.mỗi lần như thế bán kính quỹ đạo nảy lên(là 1 nửa đường tròn) giảm đi 1 tý.
    đây là code mới nó chạy đc 1 nửa đường tròn thì dừng lại rồi xuất hiện cái dòng
    sqrt DOMINO erro... gì đấy ko bik sao nữa ai sửa lại giùm em:
    Code:
    #include <graphics.h>
    #include<conio.h>
    #include<stdio.h>
    #include<dos.h>
    #include<stdlib.h>
    #include<math.h>
    void ktdh(void)
    {
    	int gdriver = DETECT, gmode,errorcode;
    	initgraph(&gdriver,&gmode,"D:\\BC\\BGI");
    	errorcode =graphresult();
    	if (errorcode != grOk)
       {
          printf("Graphics error: %s\n", grapherrormsg(errorcode));
          printf("Press any key to halt:");
          getch();
    /* terminate with an error code */
          exit(1);
       }
    }
    void Put8pixel(int x,int y,int x1,int y1,int mau)
    {
    	putpixel(x+x1,y+y1,mau);
    	putpixel(-x+x1,y+y1,mau);
    	putpixel(x+x1,-y+y1,mau);
    	putpixel(-x+x1,-y+y1,mau);
    	putpixel(y+x1,x+y1,mau);
    	putpixel(-y+x1,x+y1,mau);
    	putpixel(y+x1,-x+y1,mau);
    	putpixel(-y+x1,-x+y1,mau);
    }
    void DT(int x1,int y1,int mau)
    {
    	int x,y,p,r=10;
    	x=0;
    	y=r;
    	Put8pixel(x,y,x1,y1,mau) ;
    	p=1-r;
    	while(x<y)
    	{
    		if(p<0)
    			p+=2*x +3;
    		else
    		{
    			p+=2*(x-y)+5;
    			y--;
    		}
    		x++;
    		Put8pixel(x,y,x1,y1,mau);
    	}
    }
    void mp(int d,int r)
    {
    	int i,j; //mat phang co y=350
    	for(i=30;i<=30+d;i++)
    		for(j=350;j<=r+350;j++)
    			putpixel(i,j,GREEN);
    }
    void main()
    {
    	ktdh();
    	int i,j; //r=10 la ban kinh
    	mp(600,10);
    	for(i=100;i<=339;i++)
    	{
    		DT(100,i,GREEN);delay(10);
    		DT(100,i,BLACK);
    	}
    	j=339;  // toa do tam qua bong i=100,j=339
    	int Ix,R;//Ix la tam quy dao,R ban kinh quy dao
    	/*co ban kinh quy dao se giam tu R=50 den R=30,va tam quy dao
    	thay doi tu Ix=150=240=310=360,moi lan qua banh nay ban kinh quy
    	dao giam di 10,Yi cua quy dao luon la 350 */
    	i=100;
    	for(R=50,Ix=150;R>=20;R-10)
    	{                             //ta co phuong trinh duong tron
    	     Ix=2*R-10;              //(i-Ix)m2 +(j-350)m2=Rm2
    	     while(i<=380)           //giai pt bac 2 tim j
    	     {
    		int j1,j2;	     //nghiem cua pt
    		float Delta=490000 -4*(i*i -2*i*Ix +122500 - R*R);
    		j1=int((700+ sqrt(Delta))/2  +0.5);
    		j2=int((700- sqrt(Delta))/2  +0.5);
    		if(j1<=350 || j2<=350)
    		{
    			if(j1<=350)
    			{
    				j=j1;
    				DT(i,j,GREEN);delay(20);DT(i,j,BLACK);
    			}
    			else
    			{
    				j=j2;
    				DT(i,j,GREEN);delay(20);DT(i,j,BLACK);
    			}
    		}
    		i++;
    	     }
    	}
    	getch();
    }


    Vì có hết ẩn rồi lên em đưa pt đường tròn về pt bậc 2 tính Y. mà vẫn thiếu cái gì ý
    Đã được chỉnh sửa lần cuối bởi voluong0thaicuc : 18-06-2011 lúc 11:45 AM.

  9. #9
    Ngày gia nhập
    11 2010
    Bài viết
    33

    Hu hu 1 ngày 1 đêm rồi sao ko có ai xem vậy.Thứ 3 nộp bài rồi hu hu

  10. #10
    Ngày gia nhập
    01 2011
    Nơi ở
    \WINDOWS\Assembly\
    Bài viết
    54

    mấy vấn đề này langman học ở đâu hay vậy
    dù sao thì cũng cám ơn bác vì bài viết hết sức chi tiết này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn