mình đang làm 1 game nhỏ nhưng bị bí chỗ này
Cứ 1 ngày thì lên 1 tuổi nhưng mình gặp rắc rối chỗ 24h,
VD:
tạo nhân vật vào 22h00 ngày 1/1/2011 lúc này nhân vật 1 tuổi
khi 1h00 ngày 2/1/2011 nó đã lên 2 tuổi chứ không phải vào 22h00 ngày 2/1/2011, ai giúp mình với
Càng học càng thấy mình thiếu nhiều kiến thức.........
mình giải thuật linh tinh thế này, hy vọng giúp bạn nghĩ ra điều gì đó nhĩ... Àk, mình nghĩ nên sử dụng chế độ 24h cho dễ...
- Tuổi = ngày hiện tại - ngày tạo (tất nhiên giá trị này nhỏ nhất là = 0 - khi đó là 0 tuổi)
- Nếu tuổi > 0, Tiếp tục biện luận về giờ: Tuổi += giờ hiện tại >= giờ tạo ? 0 : -1; Ý nghĩa: nếu mà giờ hiện tại nhỏ hơn giờ tạo (tức là vẫn chưa đủ ngày, thì lại trừ ra 1 tuổi vì đã cộng vào khi biện luận theo ngày, còn nếu đã đủ hoặc nhìu hơn thì kệ vì đã cộng rùi). Không biết thế này có đúng ko ?
Hy vọng giúp đc bạn, thân!
- Tính tuổi theo ngày à.
- Làm thế này
Code:int hour = (DateTime.Now - [ Ngày giờ tạo nhân vật ] ).Hour ; int Age = hour/24 ;
theo thuật toán của bạn thì ngay dòng đầu tiên đã vướn vào vấn đề của mình là nếu qua ngày mà thời gian chưa đủ 24h thì nó vẫn lên 1 tuổi
ngày trước - ngày sau thì dễ rồi, nhưng mà như mình post lúc đầu,
ngày tạo 11h59 ngày 1/1/1900
sau đó 1p, thì nó đã qua 2/1/1900
chỉ cần 1p nó đã lên 1 tuổi thì không hay
thuật toán giờ - giờ + ngày - ngày đúng thì hơi khó, mong mấy bạn giúp đở
nó wa ngày nhưng thời gian chưa đủ 24h nên nó vẫn có tuổi = 0. bạn chưa hiểu à ?
Programming tutorials and source code examples
Trong nhà không vợ không con
Uống bia gặm thịt sao ngon thế này
Nhậu nhẹt không bị la rầy
Một tuần ta cứ bảy ngày " nâng ly "....
Có j đâu mà gọi là thuật toán đơn giản thế này thôi bạn à. Khi bạn tạo nhân vật bạn phải lưu thời điểm tạo nhân vật vào một biến T nào đó, nhớ là lưu đầy đủ (tức là cấu trúc sẽ như thế này 7/20/2011 7:33:34 PM).
Thực hiện việc kiểm tra bằng cách
Code:if((DateTime.Now - T).Hours%24 == 0) Tuoinhanvat++;