android - Tamagotchi 喜欢应用程序日/夜循环

标签 android calendar

为了学习 android,我正在制作类似电子鸡的应用程序。它的食物等级每小时减少 1,所以如果你几个小时不喂它它就会死。我也在晚上 8 点到早上 8 点之间睡着了。只是有一个问题。要将其状态更改为 sleep 状态,您需要在晚上 8 点到早上 8 点之间打开应用程序。这给出了以下问题:

如果你喂它,比如说晚上 7 点,它 sleep 前 1 小时,你在晚上 8 点到早上 8 点之间没有打开应用程序,但在第二天早上 9 点,他认为已经过去了 13 个小时而不是 1 个小时(他不应该计算 sleep 时间)你们有什么建议吗?

这是昏昏欲睡的衰变代码

public void checkSleepyTime()
{
    c = Calendar.getInstance();

    int hour = c.get(Calendar.HOUR_OF_DAY);
    int daypart = c.get(Calendar.AM_PM);
    if (hour >= 20 && daypart == 1)
    {
        foodButton.setText("ZZzz");
        prefs.edit().remove("foodTime").commit();
        buddy.setSleeping(true);
    }

    else
    {
        foodButton.setText("Awake");
        buddy.setSleeping(false);
    }
}

.

public void initBuddy()
{
    debugView.setText("FoodLevel: " + buddy.getFoodLevel());
    if(!buddy.getSleeping() && buddy.getAlive())
    {
        long currentTime = prefs.getLong("currentTime", getCurentTime());
        long foodTime = prefs.getLong("foodTime", getCurentTime());

        while (foodTime < currentTime)
        {
            if (currentTime - foodTime >= ONE_HOUR)
            {
                buddy.decayFood();
            }

            foodTime = foodTime + ONE_HOUR;
        }
    }

最佳答案

如果自上次喂食后的时间比 sleep 时间长,请检查预期的 sleep 时间是否落入该时间。然后相应地采取行动(快速破解是将 sleep 时间添加到上次喂食的时间)。还要检查喂食时间是否超过一天。像这样:

if (currentTime - foodTime >= ONE_HOUR)
{
  if (currentTime - foodTime >= WHOLE_NIGHT &&   sleepPeriodFitsInBetween(foodTime, currentTime))
  {
    foodTime+=WHOLE_NIGHT;
    int numberOfFullDays=countNumberOfDays(currentTime - foodTime);
    if(numberOfFullDays>1)
    {
        currentTime+=numberOfFullDays*(24-WHOLE_HIGHT); // assuming WHOLE_NIGHT is in hours.

    }
  }
  ...
}

关于android - Tamagotchi 喜欢应用程序日/夜循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33478613/

相关文章:

android - 在 Android 中使用 Facebook SDK3 时出现错误代码 110

java - Java中获取文件属性

java - 使用日历数据更新网格布局

android - 如何在 Android 中使用 JSON Web 服务?

android - 不使用 MODE_WORLD_READ/WRITE 写入文件

javascript - 在 Angular 4 CLI 项目中实现 Angular-calendar

java - zk:扩展日期框和日历小部件

rest - 使用 REST API 从 SharePoint 日历中检索事件

java - Android 中 onDraw 上的 Invalidate() 方法

java - firebase MLKIT 人脸检测摄像头分辨率