2016-01-12 2 views
0

В принципе, я пытаюсь создать текстовую приключенческую игру, в которую добавляется лавочник. У этого лавочника есть 3 разных настроения (счастливые, сердитые и грустные), которые зависят от времени суток.Хочешь, чтобы NPC отреагировал в зависимости от времени суток

Итак, с 5 часов утра до 12 часов, настроение лавочника радует, и оно выдает сообщение типа «Эй, долгое время не смотрите!», С 12 до 10 вечера его настроение сердитый и кричит на вас, и, наконец, с 10 вечера до 5 утра он боится и говорит что-то страшное.

Я почти закончил создавать все остальное, но застрял на этом лавочнике. Может кто-то, пожалуйста, помогите мне заполнить это. Для этой части я только успел закодировать на время. Я не могу писать, если заявление, используя время :(

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.dateTimePicker1.Format = DateTimePickerFormat.Time; 
    this.dateTimePicker1.Width = 100; 
    this.dateTimePicker1.ShowUpDown = true; 
} 

private void currentTime_Click(object sender, EventArgs e) 
{ 
    this.dateTimePicker1.Value = DateTime.Now; 
} 

private void btnShopkeeper_Click(object sender, EventArgs e) 
{ 
} 

ответ

1

При построении логики, как это, я думаю, что это важно отметить, что именно вы пытаетесь выразить. Вы, экспрессирующие поведение/состояние .. Или вы делаете какое-то часы, не выражаются в цифрах?

Так что я хотел бы сделать что-то вдоль линий определяющего поведения ..

public enum Behavior 
{ 
    Happy, 
    Angry, 
    Scary 
} 

public Behavior GetShopKeeperBehavior() 
{ 
    DateTime now = DateTime.Now; 

    if (now.Hour >= 5 && now.Hour < 12) return Behavior.Happy; 
    if (now.Hour >=12 && now.Hour < 20) return Behavior.Angry; 
    return Behavior.Scary; 
} 


// usage 
Behavior shopKeeperMood = GetShopKeeperBehavior(); 
if (shopKeeperMood == Behavior.Happy) 
{ 
    // shop keeper says "Long time no see!" 
} 

T он заставит ваш код программной программы читать легче (вместо того, чтобы иметь полный набор условий даты, посыпанных по всему вашему коду), и это позволяет вам добавлять дополнительные действия в будущем на основе некоторых других критериев, о которых вы, возможно, еще не подумали (которые могут быть основаны на других факторах, кроме времени суток).

+0

Привет, ребята, я пробовал в обоих направлениях ... но он показывает только 1 сообщение «Im scared», даже если я изменяю время на что-то еще ...... Idk, в чем проблема :( – Som

+0

@Som what doy ou означает изменить свое время на что-то еще? DateTime.Now отключает системные часы. Если вы измените свои часы на 5 часов вечера, вы должны получить сердитое сообщение. – Dispersia

+0

@Dispersia ya, если я изменяю время, как 8 или 9 в утром я все еще получаю испуганное сообщение, а не счастливое ... idk, что я сделал не так :( – Som

1
DateTime dt = DateTime.Now; 

if (dt.Hour >= 5 && dt.Hour < 12) 
{ 
    //Hey! Long time no see! 
} 
else if (dt.Hour < 20) 
{ 
    //I'm shouting at you 
} 
else 
{ 
    //I'm scared :(
} 
Смежные вопросы