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

Đề tài: [need help]tạo 1 class có tính năng như Timer

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

    Mặc định [need help]tạo 1 class có tính năng như Timer

    như tiêu đề đã nói, bây giờ giả sử mình có 1 class như sau:

    C++ Code:
    1. class Something
    2. {
    3.     private:
    4.     string name;
    5.     public:
    6.     Something(string n):name(n){}
    7.     void print() const
    8.     {
    9.         std::cout<<"Now is "<<name<<"'s turn\n";
    10.     }
    11. };

    Các bạn giúp mình cách/ý tưởng design 1 class có tính năng giống như Timer sao cho ở trong main ta chỉ cần cho Timer gán thêm 1 obj Something nào đó là nó sẽ thực hiện function print() của đối tượng đó mỗi chu kỳ 2 giây

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Ý bạn muốn là nó chạy song song với hàm main kể từ thời điểm sau khi tạo ra phải ko ? Trong win32 thì bạn tạo thread. Nếu trong dos thì bạn có thể chặn ngắt đồng hồ của hệ thống. Cũng có cách khác đơn giản hơn ( về mặt ý tưởng ), nhưng phức tạp ( về mặt code ), áp dụng được cho cả win và dos đó là tạo một hàm điều phối. Hàm này sẽ chạy liên tục và canh giờ, nếu đúng giờ nó sẽ gọi hàm.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

    Đúng là mình muốn nó chạy "song song" với main, cái này mình chỉ biết điều phối thời gian dạng "cho 2 giây kiểm tra xem có hành động gì không, nếu không thì thực hiện print()" vì thế nó phụ thuộc vào cách mình code, nếu thay đổi đối tượng thì phải code lại toàn bộ ...
    Bạn hướng dẫn mình về chặn ngắt của hệ thống được không ?

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Nếu mình ko nhầm thì bạn đang viết một game có nhiều nhân vật phải ko ? Muốn làm như vậy bạn cần phải có một lớp cha cho tất cả mọi nhân vật :
    C Code:
    1. class GameObject
    2. {
    3.     public :
    4.         virtual void DoAction();
    5. };

    Những lớp con sẽ kế thừa và hiện thực hàm DoAction(). Khi có sự kiện thời gian xảy ra, chương trình sẽ lần lượt gọi hàm DoAction() trong tất cả các lớp.

    Lát nữa mình sẽ chỉ cho bạn cách chặn ngắt đồng hồ. Nếu bạn xài BC31 thì nhấn Shift + F1, đánh chữ "keep" nó sẽ cho bạn ví dụ về cách chặn ngắt đồng hồ đó.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  5. #5
    Ngày gia nhập
    02 2009
    Bài viết
    0

    Cám ơn bạn meoconlongvang, chẳng là mình thấy bên Aptech có làm trò bắn máy bay hay hay, không biết họ làm cách nào mà xử lý được nhiều thứ cùng lúc như vậy, các viên đạn có tốc độ bay khác nhau , computer di chuyển cũng có tốc độ khác nhau và các đối tượng trong đó rất nhiều.

  6. #6
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mặc định [need help]tạo 1 class có tính năng như Timer

    Thực hiện chuyện đó cũng ko khó lắm đâu bạn. Ý tưởng là thế này :
    - Tất cả đối tượng đều kế thừa và hiện thực một lớp cha như mình nói. Bạn có thể lưu chúng vào một mảng chẳng hạn.
    - Đầu tiên bạn phải có một vòng lặp vô tận chạy bên trong hàm main. Vòng lặp này sẽ liên tục kiểm tra các sự kiện như bàn phím, chuột, thời gian.
    - Khi người dùng bấm phím thì vòng lặp kiểm tra sự kiện sẽ phát hiện ra. Ngay lập tức nó sẽ duyệt mảng các đối tượng và gọi từng hàm xử lý sự kiện của đối tượng ( hàm DoAction() mà mình đã nói )
    - Sự kiện thời gian thì sẽ tự xảy ra sau một khoảng thời gian nhất định ( thường là 1 / 1000-> 1 / 100 giây ). Có nghĩa là vòng lặp sẽ canh thời gian, thấy đúng giờ thì lại duyệt mảng các đối tượng và "nhắc" chúng hành động.
    - Các đối tượng phải hiện thực hàm DoAction(). Mỗi đối tượng có một thuộc tính riêng nên cách làm việc khi hàm DoAction() được gọi sẽ khác nhau. Ví dụ đối tượng A sẽ đi thẳng với quãng đường là x, đối tượng B sẽ rẽ trái với quãng đường là y. Cứ như thế ta sẽ có nhiều đối tượng có vận tốc, quãng đường đi và hành động rất khác nhau.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

  1. Ai giải thích dùm e chức năng Implementing an ArrayList Class với!!!
    Gửi bởi vothihien trong diễn đàn Nhập môn lập trình Java
    Trả lời: 1
    Bài viết cuối: 01-01-2014, 01:21 PM
  2. Chức năng của file Class trong asp.net để làm gì?
    Gửi bởi truongnam0240 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 1
    Bài viết cuối: 18-05-2013, 10:36 AM
  3. Lập trình C++ Xây dựng class đa thức thành công nhưng đa năng hóa toán tử + thì bị lỗi không tìm ra nguyên nhân
    Gửi bởi contraime 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: 20-04-2013, 07:29 PM
  4. Algorithm Tạo một Button có chức năng pause 1 form MÀ KHÔNG DÙNG COMPONENT TIMER
    Gửi bởi thuanhooa trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 14
    Bài viết cuối: 02-05-2012, 09:06 PM
  5. Kỹ thuật C++ đa năng hóa toán tử cộng và nhân ma trận dùng class
    Gửi bởi nad_hut2 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 21
    Bài viết cuối: 29-03-2011, 03:47 PM

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