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ố 11 kết quả

Đề tài: vẽ đồng hồ trên C

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

    Mặc định vẽ đồng hồ trên C

    Bài tập về vẽ 1 chiếc đồng hồ và chạy theo giờ hệ thống help help

  2. #2
    Ngày gia nhập
    10 2008
    Bài viết
    171

    Bạn biết cách biểu diễn số bằng đèn điot như đèn giao thông chứ ?

    Cách biểu diễn của nó là như thế . Có tổng cộng 7 đèn điot chia theo kiểu 2 hình chữ nhật chung 1 cạnh . Mỗi cạnh là số 0 hoặc số 1 . Nếu số 0 thì đèn tắt còn số 1 thì đèn sáng . Nguyên lý hoạt động của nó là như thế .
    Mình ko code dùm bạn . Chỉ gợi ý như thế bạn tự làm nhé .

    Thân!!
    chicken

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

    làm ơn code dùm mình với . Mình mới đc học à mà thầy giáo giao bài tập lớn chẳng biết làm luôn. Trường mình dạy chán lắm

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

    giúp : trong sách thầy phạm văn ất phần đồ họa có đấy, mua sách mà ủng hộ thầy, mua ở tiệm sách cũ có 30k thôi.
    Muốn code hộ bạn cũng chả được vì dùng window7 ko xài được BC để mà khởi tạo đồ họa nữa
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  5. #5
    Ngày gia nhập
    10 2008
    Bài viết
    171

    Đây là code trong WIN32API ko biết bạn đã học chưa nữa . Nhưng cách của nó thì tương tự như cách mình đã nói . Nếu làm trong console thì cần dùng thêm hàm gettime để lấy thời gian nữa.
    Code đây :

    C Code:
    1. #include <windows.h>
    2.  
    3. #define ID_TIMER    1
    4.  
    5. LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
    6.  
    7. int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
    8.                     PSTR szCmdLine, int iCmdShow)
    9. {
    10.      static TCHAR szAppName[] = TEXT ("DigClock") ;
    11.      HWND         hwnd ;
    12.      MSG          msg ;
    13.      WNDCLASS     wndclass ;
    14.  
    15.      wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
    16.      wndclass.lpfnWndProc   = WndProc ;
    17.      wndclass.cbClsExtra    = 0 ;
    18.      wndclass.cbWndExtra    = 0 ;
    19.      wndclass.hInstance     = hInstance ;
    20.      wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
    21.      wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
    22.      wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
    23.      wndclass.lpszMenuName  = NULL ;
    24.      wndclass.lpszClassName = szAppName ;
    25.  
    26.      if (!RegisterClass (&wndclass))
    27.      {
    28.  
    29.           MessageBox (NULL, TEXT ("Program requires Windows NT!"),
    30.                       szAppName, MB_ICONERROR) ;
    31.           return 0 ;
    32.      }
    33.  
    34.      hwnd = CreateWindow (szAppName, TEXT ("Digital Clock"),
    35.                           WS_OVERLAPPEDWINDOW,
    36.                           CW_USEDEFAULT, CW_USEDEFAULT,
    37.                           CW_USEDEFAULT, CW_USEDEFAULT,
    38.                           NULL, NULL, hInstance, NULL) ;
    39.  
    40.      ShowWindow (hwnd, iCmdShow) ;
    41.      UpdateWindow (hwnd) ;
    42.  
    43.      while (GetMessage (&msg, NULL, 0, 0))
    44.           {
    45.           TranslateMessage (&msg) ;
    46.           DispatchMessage (&msg) ;
    47.           }
    48.      return msg.wParam ;
    49.      }
    50.  
    51. void DisplayDigit (HDC hdc, int iNumber)
    52. {
    53.      static BOOL  fSevenSegment [10][7] = {
    54.                          1, 1, 1, 0, 1, 1, 1,     // 0
    55.                          0, 0, 1, 0, 0, 1, 0,     // 1
    56.                          1, 0, 1, 1, 1, 0, 1,     // 2
    57.                          1, 0, 1, 1, 0, 1, 1,     // 3
    58.                          0, 1, 1, 1, 0, 1, 0,     // 4
    59.                          1, 1, 0, 1, 0, 1, 1,     // 5
    60.                          1, 1, 0, 1, 1, 1, 1,     // 6
    61.                          1, 0, 1, 0, 0, 1, 0,     // 7
    62.                          1, 1, 1, 1, 1, 1, 1,     // 8
    63.                          1, 1, 1, 1, 0, 1, 1 } ;  // 9
    64.      static POINT ptSegment [7][6] = {
    65.                           7,  6,  11,  2,  31,  2,  35,  6,  31, 10,  11, 10,
    66.                           6,  7,  10, 11,  10, 31,   6, 35,   2, 31,   2, 11,
    67.                          36,  7,  40, 11,  40, 31,  36, 35,  32, 31,  32, 11,
    68.                           7, 36,  11, 32,  31, 32,  35, 36,  31, 40,  11, 40,
    69.                           6, 37,  10, 41,  10, 61,   6, 65,   2, 61,   2, 41,
    70.                          36, 37,  40, 41,  40, 61,  36, 65,  32, 61,  32, 41,
    71.                           7, 66,  11, 62,  31, 62,  35, 66,  31, 70,  11, 70 } ;
    72.      int          iSeg ;
    73.  
    74.      for (iSeg = 0 ; iSeg < 7 ; iSeg++)
    75.           if (fSevenSegment [iNumber][iSeg])
    76.                Polygon (hdc, ptSegment [iSeg], 6) ;
    77. }
    78.  
    79. void DisplayTwoDigits (HDC hdc, int iNumber, BOOL fSuppress)
    80. {
    81.      if (!fSuppress || (iNumber / 10 != 0))
    82.           DisplayDigit (hdc, iNumber / 10) ;
    83.      OffsetWindowOrgEx (hdc, -42, 0, NULL) ;
    84.      DisplayDigit (hdc, iNumber % 10) ;
    85.      OffsetWindowOrgEx (hdc, -42, 0, NULL) ;
    86. }
    87.  
    88. void DisplayColon (HDC hdc)
    89. {
    90.      POINT ptColon [2][4] = { 2,  21,  6,  17,  10, 21,  6, 25,
    91.                               2,  51,  6,  47,  10, 51,  6, 55 } ;
    92.  
    93.      Polygon (hdc, ptColon [0], 4) ;
    94.      Polygon (hdc, ptColon [1], 4) ;
    95.  
    96.      OffsetWindowOrgEx (hdc, -12, 0, NULL) ;
    97. }
    98.  
    99. void DisplayTime (HDC hdc, BOOL f24Hour, BOOL fSuppress)
    100. {
    101.      SYSTEMTIME st ;
    102.  
    103.      GetLocalTime (&st) ;
    104.  
    105.      if (f24Hour)
    106.           DisplayTwoDigits (hdc, st.wHour, fSuppress) ;
    107.      else
    108.           DisplayTwoDigits (hdc, (st.wHour %= 12) ? st.wHour : 12, fSuppress) ;
    109.  
    110.      DisplayColon (hdc) ;
    111.      DisplayTwoDigits (hdc, st.wMinute, FALSE) ;
    112.      DisplayColon (hdc) ;
    113.      DisplayTwoDigits (hdc, st.wSecond, FALSE) ;
    114. }
    115.  
    116. LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    117. {
    118.      static BOOL   f24Hour, fSuppress ;
    119.      static HBRUSH hBrushRed ;
    120.      static int    cxClient, cyClient ;
    121.      HDC           hdc ;
    122.      PAINTSTRUCT   ps ;
    123.      TCHAR         szBuffer [2] ;
    124.  
    125.      switch (message)
    126.      {
    127.      case WM_CREATE:
    128.           hBrushRed = CreateSolidBrush (RGB (255, 0, 0)) ;
    129.           SetTimer (hwnd, ID_TIMER, 1000, NULL) ;
    130.  
    131.                                                   // fall through
    132.  
    133.      case WM_SETTINGCHANGE:
    134.           GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ITIME, szBuffer, 2) ;
    135.           f24Hour = (szBuffer[0] == `1') ;
    136.  
    137.          GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_ITLZERO, szBuffer, 2) ;
    138.          fSuppress = (szBuffer[0] == `0') ;
    139.  
    140.           InvalidateRect (hwnd, NULL, TRUE) ;
    141.           return 0 ;
    142.  
    143.      case WM_SIZE:
    144.           cxClient = LOWORD (lParam) ;
    145.           cyClient = HIWORD (lParam) ;
    146.           return 0 ;
    147.  
    148.      case WM_TIMER:
    149.           InvalidateRect (hwnd, NULL, TRUE) ;
    150.           return 0 ;
    151.  
    152.      case WM_PAINT:
    153.           hdc = BeginPaint (hwnd, &ps) ;
    154.  
    155.           SetMapMode (hdc, MM_ISOTROPIC) ;
    156.           SetWindowExtEx (hdc, 276, 72, NULL) ;
    157.           SetViewportExtEx (hdc, cxClient, cyClient, NULL) ;
    158.  
    159.           SetWindowOrgEx (hdc, 138, 36, NULL) ;
    160.           SetViewportOrgEx (hdc, cxClient / 2, cyClient / 2, NULL) ;
    161.           SelectObject (hdc, GetStockObject (NULL_PEN)) ;
    162.           SelectObject (hdc, hBrushRed) ;
    163.  
    164.           DisplayTime (hdc, f24Hour, fSuppress) ;
    165.  
    166.           EndPaint (hwnd, &ps) ;
    167.           return 0 ;
    168.  
    169.      case WM_DESTROY:
    170.           KillTimer (hwnd, ID_TIMER) ;
    171.           DeleteObject (hBrushRed) ;
    172.           PostQuitMessage (0) ;
    173.           return 0 ;
    174.      }
    175.      return DefWindowProc (hwnd, message, wParam, lParam) ;
    176. }

    P/S : Code này ko phải mình viết đâu nhé . Mình lấy trong ebook trên máy mình
    chicken

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

    Mặc định vẽ đồng hồ trên C

    hix. gặp lỗi mấy bạn ơi ai có code dùm mình trong BC 3.0 chạy trên xp thôi nhé máy nhà trường mình kém lắm.Mà mình nhìn đoạn code chẳng hiểu gi luôn.Đề thi cho kỳ vừa rồi của mình chỉ là vẽ tam giác rỗng = dấu * vậy mà bài tập lớn cho bài này tìm người code dùm 1 tháng chưa đc hix 3 ngày nữa nộp chắc mình tiêu quá. Help help

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

    BC3.0 thì mua quyền thấy ất về mà đọc, trong phần đồ họa thầy có code cái đó đó,
    Thầy ất là 1 người đóng góp rất lớn cho làng it việt nam qua đầu sách của thầy,
    mình ủng hộ thầy nói riêng và dân it nói chung , nên khuyên bạn mua sách của thầy đi,
    ko phải vì mỗi bài cái đồng hồ, mà trong đó còn rất nhiều cái khác, cơ bản, hay
    ok!
    Lập trình C cơ bản và nâng cao - Phạm văn Ất


    sr vì bài viết của mod nhưng lại vi phạm nội quy ( nội quy ko cho phép mod trả lời là xem sách.....)

    Thôi mình sẽ giúp bạn về ý tưởng vậy : ( muốn code hộ cũng chả được vì window7 ko chạy được cái đồ họa trên platform 16bit nũa)

    3 công cụ đầu tiên : gọi đồ họa , đường thẳng , hình tròn
    PHP Code:

    void ktdh
    (void)
        {
            
    int gdriver DETECTgmodeerrorcode;
            
    initgraph(&gdriver, &gmode"C:\\BC\\BGI");
            
    errorcode graphresult();
            if (
    errorcode != grOk)
                {
                    
    printf("Graphics error: %s\n"grapherrormsg(errorcode));
                    
    printf("Press any key to halt:");
                    
    getch();
                    exit(
    1);             /* return with error code */
                
    }
        }
    void dda(int,int,int,int,int=YELLOW,int=0);
    void dda(int x1,int y1,int x2,int y2,int color,int tre)
        {
            
    float x=x1,y=y1,temp=(abs(x2-x1)>=abs(y2-y1))?abs(x2-x1):abs(y2-y1);
            
    putpixel(int(x+.05),int(y+0.5),color);
            for(
    int i=0;i<temp;i++)
                {
                    
    x+=(x2-x1)/temp;
                    
    y+=(y2-y1)/temp;
                    
    putpixel(int(x+.05),int(y+0.5),color);
                    
    delay(tre);
                }
        }
    void put8pixel(int x,int y,int xc,int yc,int c)
        {
            
    putpixelx+xc y+ycc);
            
    putpixel(-x+xc y+ycc);
            
    putpixelx+xc ,-y+ycc);
            
    putpixel(-x+xc ,-y+ycc);
            
    putpixely+xc x+ycc);
            
    putpixel(-y+xc x+ycc);
            
    putpixely+xc ,-x+ycc);
            
    putpixel(-y+xc ,-x+ycc);
        }

    void hinhtron(int xc,int yc,int r,int c)
        {
            
    int x=0,y=r,p=3-2*r;
            
    put8pixel(x,y,xc,yc,c);
            while (
    x<=y)
                {
                    if(
    p<0)p+=4*x+++6;
                        else 
    p+= 4*(x++-y--)+10;
                    
    put8pixel(x,y,xc,yc,c);
                }
        } 

    ok.

    vẽ 1 cái vòng tròn to và tâm của nó ra,
    sau đó :

    để lấy giờ hệ thống : gettime với cấu trúc time được định nghĩa trong dos.h như sau:
    (bạn vào BC, ấn SHIFT+F1 tìm từ time và gettime trong đó có cả ví dụ đó)

    giờ bạn tính góc, tính điểm vẽ 3 tia thôi

    góc của giờ = (giờ hiện tại / 12)*360
    góc của phút= hiện tại/60 *360
    ...
    sau đó bạn tính toán

    sau đó thì hiển thị
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

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

    Ai Code dùm mình 1 bài full đc không mình ngu cái này lắm hix còn 2 hôm nữa phải nộp rồi Help meeeeeeeeeeeeeeeee

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

    mình có 1 bản code ai chi cách copy nó vào BC 3.0 không mỗi lần gõ lại dài quá

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

    mình chép lai vô nó báo lỗi 'uottextxy' should have prototype
    PHP Code:
    #include<stdio.h>
    #include<process.h>
    #include<iostream.h>
    #include<dos.h>
    #include<graphics.h>
    #include<conio.h>
    #include<math.h>
    void draw()
    {
    setbkcolor(0);
    setlinestyle(0,0,0);
    setcolor(9);
    circle(320,240,3);
    setcolor(11);
    setfillstyle(6,13);
    circle(320,240,150);
    circle(320,240,165);
    floodfill(156,242,11);
    settextstyle(2,0,5);
    setcolor(14);
    outtextxy(314,98,"12");
    outtextxy(384,114,"1");
    outtextxy(434,163,"2");
    outtextxy(454,230,"3");
    outtextxy(317,369,"6");
    outtextxy(177,230,"9");
    outtextxy(436,300,"4");
    outtextxy(195,302,"8");
    outtextxy(195,163,"10");
    outtextxy(244,112,"11");
    outtextxy(388,353,"5");
    outtextxy(248,353,"7");
    }
    void main()
    {

    int gd=0,gm;
    initgraph(&gd,&gm,"D:\\TC\\BGI");       // thay đường dẫn phù hợp .

    draw();
    //line(320,240,320,130);
    //line(320,240,320,150);
    //getch();
    float s;
    float df;
    //s=282*M_PI/180;
    //float angle=4.712389;
    //float an=4.712389;
    float anf=4.712389;

    //float angle=0;
    int x,y;
    int q,w;
    int ta,d;

    float as;
    as=
    6*M_PI/180;

    int c2=0;
    int count=0;
    struct  time t;
    gettime(&t);
    float angle=4.712389+t.ti_sec*.1047198;
    float an=4.712389+t.ti_min*.1047198;
    while(!
    kbhit())
    {
    draw();
    gettime(&t);
    gotoxy(5,5);
    angle=4.712389+t.ti_sec*.1047198;
    an=4.712389+t.ti_min*.1047198;
    anf=4.712389+t.ti_hour*5*.1047198;
    if(
    t.ti_min>=12&&t.ti_min<24)
    {
    anf=anf+2*.1047198;
    }
    if(
    t.ti_min>=24&&t.ti_min<36)
    {
    anf=anf+(3*.1047198);
    }
    if(
    t.ti_min>=36&&t.ti_min<48)
    {
    anf=anf+(4*.1047198);
    }
    if(
    t.ti_min>=48&&t.ti_min<60)
    {
    anf=anf+(5*.1047198);
    }


    gotoxy(2,2);
    printf("The current time is: %d: %d: %d",t.ti_hourt.ti_mint.ti_sect.ti_hund);

    cout<<"   ";
    setlinestyle(0,0,0);
    setcolor(0);
    line(320,240,x,y);
    line(320,240,q,w);
    line(320,240,ta,d);

    x=320+140*cos(angle);
    y=240+140*sin(angle);
    q=320+122*cos(an);
    w=240+122*sin(an);
    ta=320+86*cos(anf);
    d=240+86*sin(anf);
    setcolor(10);
    setlinestyle(0,0,0);
    line(320,240,x,y);
    setlinestyle(0,0,2);
    setcolor(9);
    line(320,240,q,w);
    setlinestyle(0,0,3);
    setcolor(4);
    line(320,240,ta,d);
    angle+=.1047198;
    delay(1000);
    count++;
    setcolor(count);
    outtextxy(370,440,"MADE BY :- AAYUSH AWASTHI");
    outtextxy(390,460,"BCA IIIrd YEAR");

    }
    getch(); 
    }
    Đã được chỉnh sửa lần cuối bởi langman : 02-02-2010 lúc 10:13 PM.

Các đề tài tương tự

  1. Vẽ tàu vũ trụ bay trên trời đầy sao?
    Gửi bởi mrlamtb trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 10-09-2011, 11:46 AM
  2. Xây dựng ứng dụng vẽ Đa Giác trên C#
    Gửi bởi khangtvust trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 22-08-2011, 05:27 PM
  3. Vẽ đồ thị hàm số từ bậc 1 đến bậc 4 trên C++?
    Gửi bởi royalfamily trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 20-07-2010, 01:31 AM
  4. interval timer trên C# | Lấy mẫu vẽ đồ thị trên C#. Giúp mình với?
    Gửi bởi mrvui trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 09-05-2009, 10:16 PM
  5. Đồ họa C++ | Vẽ ngôi nhà trên C++?
    Gửi bởi hungbu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-05-2009, 08:17 AM

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