Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 17
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    - Anh càng bắt em chặt chừng nào, khó chừng nào thì em mới nhanh tiến bộ. Hồi anh mới học, anh cứ giá có 1 thằng lắm mồm như anh đi bắt lỗi từng li từng tí thế này cho mình đó em à.
    - Em là người tiến bộ rất và rất nhanh mà anh từng gặp, cho nên anh muốn rèn cho em, chứ anh không có ý bắt bẻ em. Ngồi đọc code và ghi lỗi ra cho người ta không phải là chuyện dễ, và cách design hay không, viết code có bug-free hay không là do kinh nghiệm. Cái này hiện giờ em không có, tuy nhiên em phải tập thói quen sữa lại những lỗi cực kì nhỏ như thế thì mới tiến bộ được.
    - Code run không có nghĩa là code đúng, có 1 câu mà anh luôn ghi nhớ : "Viết 1 dòng lệnh thì hãy nghĩ liệu có cách nào để dòng này sinh lỗi ?" Anh TQN khi xưa chỉ anh như vậy, phải đặt code mình vào tình huống tệ nhất để dập nó, vì em viết code cho em đọc thì rất dễ, viết cho người khác đọc là chuyện khác nhau hoàn toàn. Vì khi em không là client, em hiểu dữ liệu đưa vào nên bug do em là rất khó, người dùng code của em sẽ không thể biết hết được cái mà em đã làm, và khi họ dùng thì bug sẽ bắt đầu phát sinh.

    3 thằng đấy thì tạm thời Kim chịu rồi, mới học lập trình bị đổ vào đầu nhiều thứ quá chết mất. Cái đó nếu anh R2 giải thích luôn cho thì hay quá, chứ bắt em đi tìm hiểu nữa thì Kim giờ cũng bó tay à. (sắp đến ngày thi, không có thời gian)
    - Thằng 1 và 2 là như nhau, cũng sẽ phải tạo 1 bản sao. Down cuốn How-to-program C++ khi có thời gian đọc chương kĩ chương 8 về tham số truyền vào cho hàm.
    - Thằng 3 và dùng con trỏ là như nhau, nó là 1 địa chỉ, và người dùng sẽ thao tác trên địa chỉ này, không cần tạo 1 copy không cần thiết.
    - Cái dấu " :i( i ) " là kĩ thuật khởi tạo của constructor trong C++, nó tối ưu hơn dùng phép gán, em nên tập xài thằng này cho quen.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Vâng, Kim hiểu rồi để KIm cố gắng thêm.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Kim hoàn thiện nốt cái Utility đi mốt có gì tớ mượn cái Utility của cậu viết lại cái xe tăng :P

  4. #4
    Ngày tham gia
    Sep 2015
    Đang ở
    hà nội
    Bài viết
    0
    - Lớp Point toán tử gán và toán tử ++, -- có 1 chút vấn đề. Suy nghĩ thử xem [IMG]images/smilies/wink.png[/IMG]
    - Một số hàm trong class HangMan cũng có vấn đề với tham số truyền vào, cái mà anh đã nhắc đi nhắc lại từ bữa giờ [IMG]images/smilies/wink.png[/IMG] !
    - Vấn đề tương tự cho class Utils.

    Mã:
    Point::Point(){    this->_x = this->_y = 0;}
    Dùng constructor kiểu này là lãng phí ! Còn cách nào khác không ?

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi rox_rook
    - Lớp Point toán tử gán và toán tử ++, -- có 1 chút vấn đề. Suy nghĩ thử xem [IMG]images/smilies/wink.png[/IMG]
    - Một số hàm trong class HangMan cũng có vấn đề với tham số truyền vào, cái mà anh đã nhắc đi nhắc lại từ bữa giờ [IMG]images/smilies/wink.png[/IMG] !
    - Vấn đề tương tự cho class Utils.

    Mã:
    Point::Point(){    this->_x = this->_y = 0;}
    Dùng constructor kiểu này là lãng phí ! Còn cách nào khác không ?
    - Toán tử ++, -- ý anh prefix hay postfix vì cái này là unary
    - em đã post class HangMan đâu nhỉ :-??
    - class Utils chỉ hỗ trợ xử lý console static class không áp dụng object
    - constructor

    Mã:
        public:        /* constructor & destructor */        Point(); // equavilent : Point() : _x(0), _y(0) { };        Point(const int, const int);        Point(const Point&);        ~Point();
    Phải chăng là thế này:

    Mã:
    Point (const int __x = 0, const int __y = 0){    this->_x = __x;    this->_y = __y;}

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    - Nếu em chấp nhập syntax này thì ok :

    Mã:
    int main(){    Point p( 3, 4 );    ++++p;     std::cout << p.get_x() << "
    ";    std::cout << p.get_y() << "
    ";     return 0;}
    - Cho constructor thì em dùng base-initializer sẽ có good-performance hơn assignment operator.
    - ( const any_type_of_data ) nó vẫn là truyền copy, làm sao cho nó truyền địa chỉ để khỏi lãng phí bộ nhớ.
    - *=, += ...nên trả về const ref&.
    - Không nên dùng kiểu C cast style, dùng static_cast, dynamic_cast...
    - Dữ liệu không có dynamic memory không cần viết lại copy constructor, operator = và destructor. Không cần phải clone() gì hết, có dynamic memory đâu mà clone() ?

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi rox_rook
    - Nếu em chấp nhập syntax này thì ok :

    Mã:
    int main(){    Point p( 3, 4 );    ++++p;     std::cout << p.get_x() << "
    ";    std::cout << p.get_y() << "
    ";     return 0;}
    - Cho constructor thì em dùng base-initializer sẽ có good-performance hơn assignment operator.
    - ( const any_type_of_data ) nó vẫn là truyền copy, làm sao cho nó truyền địa chỉ để khỏi lãng phí bộ nhớ.
    - *=, += ...nên trả về const ref&.
    - Không nên dùng kiểu C cast style, dùng static_cast, dynamic_cast...
    - Dữ liệu không có dynamic memory không cần viết lại copy constructor, operator = và destructor. Không cần phải clone() gì hết, có dynamic memory đâu mà clone() ?
    1. Về cái operator xảy ra trường hợp đó thì thực sự em chưa biết
    2. Em đặt cái base init trong comment; để người dùng dễ hiểu
    3. em vẫn truyền const mà :-??
    4. const ref& mới thấy lần đầu [IMG]images/smilies/biggrin.png[/IMG]
    5. Em nhớ là em xài casting style của C++ static_cast<type>, trong source cơ mà.
    6. em tạo clone với copy chẳng qua là để cho bác nào code C thì có thể làm việc thôi. Việc tạo thêm method cho class hay không thì cũng phụ thuộc mục đích làm việc và sử dụng thôi, chứ thêm bớt em thấy không ảnh hưởng gì hết.

  8. #8
    Ngày tham gia
    Sep 2015
    Đang ở
    89 Tam Trinh - Hoàng Mai - Hà Nội
    Bài viết
    0
    File utils_class.h có đề cập đến file:

    #include "color_enum.h"

    Bạn nhớ post file này lên luôn nhé.

    Cám ơn nhiều.

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mã:
    for(int i = 1; i < (int)GameScreen::SZ_BOTTOM - 1; ++i) {        Utils::set_cur_pos(Point(i, (int)GameScreen::SZ_LEFT - 1));         std::cout.put(__c);}
    Cái này C++ cast ?

    3. em vẫn truyền const mà :-??
    4. const ref& mới thấy lần đầu
    - void doSt( int x )
    - void doSt( const int x )
    - void doSt( const int& x )
    Tìm hiểu xem 3 thằng này khác nhau chỗ nào.

    Mã:
    2. Em đặt cái base init trong comment; để người dùng dễ hiểu
    The one I'm talking about is this :
    Mã:
     Point( int x = 0, int y = 0)
                :x( x ), y( y ) 
            {   }

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    [Game: HangMan Deluxe v1.0 - by bvKim]

    Mới tập tành OOP được 2-3 hôm thấy nó phê quá [IMG]images/smilies/laughing.gif[/IMG] nên Kim mày mò nghiên cứu để viết thử 1 game nho nhỏ mà ai cũng biết đấy là game gì [IMG]images/smilies/biggrin.png[/IMG]

    Project: HangMan Deluxe 1.0
    Author: bvKim
    IDE: VC++ 2k5
    Environment: Console

    Phân tích kĩ thuật:
    - Game được chia làm nhiều phần nhỏ để xử lý và khi chơi được quy lại trong một class bé xíu [IMG]images/smilies/biggrin.png[/IMG]

    - Những yếu tố liên quan:
    + Vì sử dụng console nên ta sẽ cần sử đụng đến tọa độ 2 chiều, vì thế tạo 1 class lưu trữ thông tin này (class Point)
    + Để hỗ trợ thêm các tính năng phụ mà có thể access trực tiếp từ class vào, tạo nên đặc điểm khách quan của thiết kế game (class Utils)
    + Game cần có khoản về hỗ trợ thiết kế giao diện game (class HangDesign)
    + Game cần có một bộ từ điển chuyên dụng để lưu trữ (class Dictionary)
    + Không gian chính phối toàn bộ khung cảnh vào làm một (class HangMan)
    + Tạo một lớp xử lý chơi game (class Application)

    => Tóm lại: tổng số class cần design là 6 class.

    Đây là giao diện game <chưa hết [IMG]images/smilies/biggrin.png[/IMG]>

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •