Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Thiết kế OOP | Cung cấp công cụ tiện ích?

  1. #1
    Ngày gia nhập
    11 2008
    Bài viết
    186

    Talking Thiết kế OOP | Cung cấp công cụ tiện ích?

    Mẫu thiết kế OOP thứ 2 của Kim là tạo một gói class cung cấp công cụ tiện ích sử dụng trực tiếp từ class.

    Kim thiết kế bộ này với mục đích sử dụng trong thiết kế Game 2 với phong cách OOP cũng khá hoành tráng (gợi ý: game này rất đơn giản mà ai cũng biết nhưng Kim sẽ thiết kế với phong cách OOP cực vui nhộn và nhiều tiện ích)

    + Yêu cầu: để tiện ích này hoàn chỉnh bạn cần tham khảo class Point mà Kim đã post trong topic: "Thiết kế OOP (1)"
    và bộ ColorType Kim định nghĩa ở bài post bên dưới

    Đây là bộ tiện ích sử dụng:

    + Yêu cầu: VC++

    1. utils_class.h
    C++ Code:
    1. ////////////////////////////////////////////////////
    2. // @author: bvKim
    3. // @file: utils_class.h
    4. // @date: 16-Nov-2008
    5. // @note: declare the class 'Utils'
    6. ////////////////////////////////////////////////////
    7. /****************/
    8. /* Preprocessor */
    9. /****************/
    10. #ifndef __UTILS_CLASS_H__
    11. #define __UTILS_CLASS_H__
    12.  
    13. #include "point_class.h"
    14. #include "color_enum.h"
    15. #include <windows.h>
    16.  
    17. /********************
    18.  * @class Utils *
    19.  ********************/
    20.  
    21. class Utils {
    22.     protected:
    23.  
    24.     private:
    25.  
    26.     public:
    27.         static void     draw_screen            ();
    28.         static void     gotoxy                 (const Point);                                            // done
    29.         static void     gotoxy                 (const int, const int);                                   // done
    30.         static void     put_char               (const Point, const char);                                // done
    31.         static void     put_char               (const Point, const ColorType, const char);               // done
    32.         static void     put_char               (const int, const int, const char);                       // done
    33.         static void     put_char               (const int, const int, const ColorType, const char);      // done
    34.         static void     set_cur_pos            (const Point);                                            // done
    35.         static void     set_cur_pos_x          (const int);                                              // done
    36.         static void     set_cur_pos_y          (const int);                                              // done
    37.         static Point    get_cur_pos            ();                                                       // done
    38.         static int      get_cur_pos_x          ();                                                       // done
    39.         static int      get_cur_pos_y          ();                                                       // done
    40.         static void     set_fgcolor            (const ColorType);                                        // .<test>
    41.         static void     set_txtcolor           (const Point, const ColorType, const int);                // done
    42.         static void     set_bgcolor            (const ColorType);                                        // .<test>
    43.         static void     clear_screen           ();
    44.         //static void     blink                  (const Point);
    45.         //static void     blink                  (const int, const int);
    46. };
    47.  
    48.  
    49. #endif // __UTILS_CLASS_H__


    2. utils_class.cpp
    C++ Code:
    1. ////////////////////////////////////////////////////
    2. // @author: bvKim
    3. // @file: utils_class.cpp
    4. // @date: 16-Nov-2008
    5. // @note: define the class 'Utils'
    6. ////////////////////////////////////////////////////
    7. /****************/
    8. /* Preprocessor */
    9. /****************/
    10. #include "utils_class.h"
    11.  
    12. /*****************/
    13. /* Member define */
    14. /*****************/
    15.  
    16. /*
    17.  * @method draw_screen()
    18.  */
    19.  
    20. void Utils::draw_screen()
    21. {
    22.  
    23. }
    24.  
    25. /*
    26.  * @method gotoxy()
    27.  * @type void
    28.  * @overload 2
    29.  * @param   __p const Point
    30.  * @param   __x const int
    31.  * @param   __y const int
    32.  * @purpose move console cursor to a specific location
    33.  */
    34. void Utils::gotoxy(const Point __p)
    35. {
    36.     COORD coord = { __p.get_x(), __p.get_y() };
    37.     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
    38. }
    39.  
    40. void Utils::gotoxy(const int __x, const int __y)
    41. {
    42.     COORD coord = { __x, __y };
    43.     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
    44. }
    45.  
    46. /*
    47.  * @method put_char()
    48.  * @type void
    49.  * @overload 4
    50.  * @param   __p const Point
    51.  * @param   __c const char
    52.  * @param   __ct const ColorType
    53.  * @param   __x const int
    54.  * @param   __y const int
    55.  * @purpose     put a character to a specific location w/ or w/o color
    56.  */
    57. void Utils::put_char(const Point __p, const char __c)
    58. {
    59.     Utils::gotoxy(__p);
    60.     std::cout.put(__c);
    61. }
    62.  
    63. void Utils::put_char(const Point __p, const ColorType __ct, const char __c)
    64. {
    65.     Utils::gotoxy(__p.get_x(), __p.get_y());
    66.     std::cout.put(__c);
    67.     COORD _coord = { __p.get_x(), __p.get_y() };
    68.     FillConsoleOutputAttribute(GetStdHandle(STD_OUTPUT_HANDLE), __ct, 1, _coord, NULL);
    69. }
    70.  
    71. void Utils::put_char(const int __x, const int __y, const char __c)
    72. {
    73.     Utils::gotoxy(__x, __y);
    74.     std::cout.put(__c);
    75. }
    76.  
    77. void Utils::put_char(const int __x, const int __y, const ColorType __ct, const char __c)
    78. {
    79.     Utils::gotoxy(__x, __y);
    80.     std::cout.put(__c);
    81.     COORD _coord = { __x, __y };
    82.     FillConsoleOutputAttribute(GetStdHandle(STD_OUTPUT_HANDLE), __ct, 1, _coord, NULL);
    83.    
    84. }
    85.  
    86. /*
    87.  * @method set_cur_pos()
    88.  * @type void
    89.  * @param   __p const Point
    90.  * @purpose     set cursor postion (==gotoxy())
    91.  */
    92. void Utils::set_cur_pos(const Point __p)
    93. {
    94.     Utils::gotoxy(__p);
    95. }
    96.  
    97. /*
    98.  * @method set_cur_pos_x()
    99.  * @type void
    100.  * @param   __x const int
    101.  * @purpose     set x-coordinate
    102.  */
    103. void Utils::set_cur_pos_x(const int __x)
    104. {
    105.     Utils::gotoxy(__x, Utils::get_cur_pos_y());
    106. }
    107.  
    108. /*
    109.  * @method set_cur_pos_y()
    110.  * @type void
    111.  * @param   __y const int
    112.  * @purpose     set y-coordinate
    113.  */
    114. void Utils::set_cur_pos_y(const int __y)
    115. {
    116.     Utils::gotoxy(Utils::get_cur_pos_x(), __y);
    117. }
    118.  
    119. /*
    120.  * @method get_cur_pos()
    121.  * @type Point
    122.  * @param -none
    123.  * @purpose     get current position of cursor
    124.  */
    125. Point Utils::get_cur_pos()
    126. {
    127.     CONSOLE_SCREEN_BUFFER_INFO _console;
    128.     GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &_console);
    129.     return Point(_console.dwCursorPosition.X, _console.dwCursorPosition.Y);
    130. }
    131.  
    132. /*
    133.  * @method get_cur_pos_x()
    134.  * @type void
    135.  * @param -none
    136.  * @purpose     get current x-coordinate of cursor
    137.  */
    138. int Utils::get_cur_pos_x()
    139. {
    140.     CONSOLE_SCREEN_BUFFER_INFO _console;
    141.     GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &_console);
    142.     return _console.dwCursorPosition.X;
    143. }
    144.  
    145. /*
    146.  * @method get_cur_pos_y()
    147.  * @type void
    148.  * @param   -none
    149.  * @purpose     get current y-coordinate of cursor
    150.  */
    151. int Utils::get_cur_pos_y()
    152. {
    153.     CONSOLE_SCREEN_BUFFER_INFO _console;
    154.     GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &_console);
    155.     return _console.dwCursorPosition.Y;
    156. }
    157.  
    158. /*
    159.  * @method set_fgcolor()
    160.  * @type void
    161.  * @param   __ct const ColorType
    162.  * @purpose     change foreground color
    163.  */
    164. void Utils::set_fgcolor(const ColorType __ct)
    165. {
    166.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), __ct);
    167. }
    168.  
    169. /*
    170.  * @method set_bgcolor()
    171.  * @type void
    172.  * @param   __ct const ColorType
    173.  * @purpose     change background color
    174.  */
    175. void Utils::set_bgcolor(const ColorType __ct)
    176. {
    177.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), __ct);
    178. }
    179.  
    180. /*
    181.  * @method set_txtcolor()
    182.  * @type void
    183.  * @param   __p const Point
    184.  * @param   __ct const ColorType
    185.  * @param   __length const int
    186.  * @purpose     set text color at a specific location
    187.  */
    188. void Utils::set_txtcolor(const Point __p, const ColorType __ct, const int __length)
    189. {
    190.     COORD _coord = { __p.get_x(), __p.get_y() };
    191.     FillConsoleOutputAttribute(GetStdHandle(STD_OUTPUT_HANDLE), __ct, __length, _coord, NULL);
    192. }
    193. /*
    194.  * @method clear_screen()
    195.  * @type void
    196.  * @param -none
    197.  * @purpose     clear screen
    198.  */
    199. void Utils::clear_screen()
    200. {
    201.     system("cls");
    202. }

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

    C++ Code:
    1. ////////////////////////////////////////////////////
    2. // @author: bvKim
    3. // @file: color_enum.h
    4. // @date: 16-Nov-2008
    5. // @note: create an enumerator of ColorType
    6. ////////////////////////////////////////////////////
    7. /****************/
    8. /* Preprocessor */
    9. /****************/
    10. #ifndef __COLOR_ENUM_H__
    11. #define __COLOR_ENUM_H__
    12.  
    13. #include <windows.h>
    14.  
    15. /**********************
    16.  * @enum    ColorType *
    17.  **********************/
    18.  
    19. enum ColorType
    20. {
    21.     // foreground  
    22.     FG_BLACK        = 0x0000,
    23.     FG_NAVY         = 0x0001,
    24.     FG_GREEN        = 0x0002,
    25.     FG_TEAL         = 0x0003,
    26.     FG_BROWN        = 0x0004,
    27.     FG_PURPLE       = 0x0005,
    28.     FG_OLIVE        = 0x0006,
    29.     FG_LIGHT_GRAY   = 0x0007,
    30.     FG_INTENSITY    = 0x0008,
    31.     FG_MEDIUM_BLUE  = 0x0009,  
    32.     FG_GRAY         = 0x0008 | 0x0000,
    33.     FG_BLUE         = 0x0008 | 0x0001,
    34.     FG_LIME         = 0x0008 | 0x0002,
    35.     FG_CYAN         = 0x0008 | 0x0003,
    36.     FG_RED          = 0x0008 | 0x0004,
    37.     FG_FUCHSIA      = 0x0008 | 0x0005,
    38.     FG_YELLOW       = 0x0008 | 0x0006,
    39.     FG_WHITE        = 0x0008 | 0x0007,
    40.     FG_SILVER       = 0x0008 | 0x0008
    41.  
    42.     // background  
    43.     BG_BLUE         = 0x0010,
    44.     BG_GREEN        = 0x0020,
    45.     BG_RED          = 0x0040,
    46.     BG_INTENSITY    = 0x0080,
    47. };
    48. #endif // __COLOR_ENUM_H__

  3. #3
    Ngày gia nhập
    04 2008
    Bài viết
    336

    hix sao 2 cái này giống nhau vậy ....
    C++ Code:
    1. void Utils::set_fgcolor(const ColorType __ct)
    2. {
    3.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), __ct);
    4. }
    5.  
    6. void Utils::set_bgcolor(const ColorType __ct)
    7. {
    8.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), __ct);
    9. }
    code ra gió bão

  4. #4
    Ngày gia nhập
    11 2008
    Bài viết
    186

    Trích dẫn Nguyên bản được gửi bởi 6220119 Xem bài viết
    hix sao 2 cái này giống nhau vậy ....
    C++ Code:
    1. void Utils::set_fgcolor(const ColorType __ct)
    2. {
    3.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), __ct);
    4. }
    5.  
    6. void Utils::set_bgcolor(const ColorType __ct)
    7. {
    8.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), __ct);
    9. }

    không để ý là Kim comment <test> à

    chỗ này Kim đang tìm phương án design tối ưu nhất cho 2 thằng này.
    Vì cơ bản theo prototype của MS nó bị nhét chung vào một nhóm Attribute

    Kim sẽ cố gắng thiết kế lại 2 thằng này cho phù hợp để khi dùng tránh bị nhầm lẫn.

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

    trang này có hầu hết code của thư viện này , hôm nay tự dưng mò ra, Kim vào xem và update thêm cho thư viện của cậu nhé
    http://www.koders.com/c/fid12B9A807D...A3992B7.aspx?s
    code ra gió bão

  6. #6
    Ngày gia nhập
    03 2008
    Bài viết
    22

    Mặc định Thiết kế OOP | Cung cấp công cụ tiện ích?

    hixx thế là phải tự viết lại cái thư viện hả mấy bro :( ai có sẵn conio.h và graphics.h rùi shared cho mình với :-S
    NO

  7. #7
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Trích dẫn Nguyên bản được gửi bởi thanhnam46 Xem bài viết
    hixx thế là phải tự viết lại cái thư viện hả mấy bro :( ai có sẵn conio.h và graphics.h rùi shared cho mình với :-S
    đúng là chả biết gì về điện mà cũng nghịch điện.
    Đọc kĩ hướng dẫn sử dụng readme trước khi sử dụng bất cứ sản phẩm nào.
    None!

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

  1. Chuyên thiết kế, cung cấp các thiết bị hệ thống điều khiển tòa nhà BMS của Johnson Controls
    Gửi bởi quangcaosmc trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 05-10-2012, 02:05 PM
  2. Cung ứng thiết bị spa máy xông hơi ướt với thiết kế chất lượng cho Resort
    Gửi bởi movelen trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 2
    Bài viết cuối: 06-08-2012, 06:15 PM
  3. Cung cấp dịch vụ thiết kế web !!
    Gửi bởi thietkeweb9z trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 16-08-2011, 10:26 AM
  4. HCM-Cung Cấp Thiết Bị Lọc Bụi, Hệ Thống Lọc Bụi
    Gửi bởi yencan trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 05-08-2010, 10:56 AM
  5. HN - Tư Vấn Và Cung Cấp Thiết Bị HD
    Gửi bởi yencan trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 28-07-2010, 10:54 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