01/10/2018, 15:24
Hàm thời gian trong C/C++
Mọi người cho em hỏi, trong C/C++ có hàm đếm thời gian không ạ, em đang làm game đua xe cùi bắp :3, giờ em muốn ví dụ như cứ mỗi 10s là xuất hiện thêm 1 vật cản thì phải dùng hàm nào và dùng như thế nào ạ. em cảm ơn
Bài liên quan
Bạn dùng chrono nhé:
http://en.cppreference.com/w/cpp/chrono/steady_clock
e đọc mà k hiểu ạ, a có thể giải thích cho em 1 xíu được không?
đơn giản là bạn tạo một hàm update (làm game thì chắc chắn có hàm này rồi @@)
sau đó dùng thư viện này, tại link dưới đây:
http://en.cppreference.com/w/cpp/chrono/steady_clock/now
Nếu bạn đúng thật đang code game thì không thể không hiểu được
Em mới năm nhất thôi a. Đang mày mò làm cái đua xe trên console à.
thư viện
<chrono>
cung cấp 3 kiểu dữ liệu về thời gian là kiểu đồng hồ (clock) để đo thời gian, kiểutime_point
để xác định 1 thời điểm trong thời gian, và kiểuduration
để xác định 1 khoảng/quãng thời gian.<chrono>
gồm có 2 loại:std::chrono::system_clock
vàstd::chrono::steady_clock
.system_clock
là kiểu đồng có thể quay ngược được (điều chỉnh được), cònsteady_clock
chỉ có thể tăng dần, ko quay ngược lại được. Ngoài ra còn có kiểuhigh_resolution_clock
là tên khác của 1 trong 2 loại trên, loại nào có độ chính xác cao hơn thì nó chọn, nên nó có thể là loại đồng hồ tua ngược được, ko thích hợp để đo thời gian. Để đo thời gian nên xàisteady_clock
.time_point<system_clock>
vàtime_point<steady_clock>
. Thời điểm là 1 điểm trong thời gian, giống như 1 điểm trong không gian vậy. Ở đây sở dĩ phân thành nhiều loại vì thời điểm của đồng hồ kiểu này đo ko thể convert sang thời điểm đồng hồ kiểu khác đo được, hay nói cách khác kiểu của thời điểm có phụ thuộc vào kiểu đồng hồ đo thời điểm.duration
là khoảng cách giữa 2 thời điểm. Giá trị của quãng thời gian có thể là kiểu số nguyên hoặc số thực. Ngoài ra quãng thời gian có thể có nhiều đơn vị khác nhau, như giây, mili giây, micro giây, nano giây, phút, giờ, ngày, v.v… Như vậy kiểu của quãng thời gian phụ thuộc vào kiểu của giá trị, và kiểu của đơn vị. Kiểu giá trị co thể là số nguyên 32-bit hoặc 64-bit, hoặc số thực float/double. Kiểu đơn vị thì<chrono>
xác định nó là kiểustd::ratio
- tỉ lệ so với đơn vị giây: kiểu đơn vị giây có tỉ lệ 1:1, kiểu mili giây có tỉ lệ 1:1000, kiểu phút có tỉ lệ 60:1, v.v… Để tránh ghi dài dòngduration<ValueType, std::ratio<Num,Den>>
thì<chrono>
có định nghĩa sẵnstd::chrono::seconds
,std::chrono::milliseconds
,std::chrono::minutes
, v.v… Tất cả đều có kiểu giá trị là số nguyên. Ngoài ra người ta còn tạo thêm mấy cái chrono_literals cho dễ ghi quãng thời gian trong code:1s
,100ms
, v.v…tới đây thì bạn có thể nhảy vô thực hành đo thời gian được rồi:
edit: thêm cái video nguồn: https://www.youtube.com/watch?v=P32hvk8b13M
thư viện người ta thiết kế có tầm lắm, nhưng người mới nhìn vô thường khó hiểu @@ Thư viện thời gian hiện đại của bất kì ngôn ngữ nào cũng có 3 khái niệm này (có thể có thêm time zone nữa), nắm nó được thì qua mấy ngôn ngữ khác xài dễ lắm. Có ông C ổng gộp 2 kiểu thời điểm và quãng thời gian làm 1, rồi ko có kiểu đồng hồ nữa, coi như 3 kiểu còn 1 kiểu, đơn giản thì đơn giản nhưng ko phát triển thêm được @@
rất chi tiết ạ
em cảm ơn nhiều ạ.