Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
60 / 57 / 22
Регистрация: 15.12.2009
Сообщений: 231
Записей в блоге: 1
1
.NET 3.x

Посчитать время, которое игрок был он-лайн

01.06.2012, 14:49. Показов 730. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста с разработкой алгоритма, подсчета времени игры игрока. Работа производится с БД. Формирую запрос к бд access, и он возвращает DataTable примерно следущее:
PlayerCONNECTED16.01.12 23:29
PlayerCONNECTED16.01.12 23:39
PlayerCONNECTED16.01.12 23:54
PlayerCONNECTED16.01.12 23:56
PlayerCT17.01.12 0:00
PlayerDISCONNECTED17.01.12 0:01
PlayerCONNECTED17.01.12 0:11
PlayerTERRORIST17.01.12 0:11
PlayerTERRORIST17.01.12 0:15
PlayerDISCONNECTED17.01.12 0:24
PlayerCONNECTED17.01.12 11:00
PlayerTERRORIST17.01.12 11:01
PlayerCT 17.01.12 11:03
PlayerSPECTATOR17.01.12 11:06
PlayerCT17.01.12 11:07
PlayerDISCONNECTED17.01.12 11:10
PlayerCONNECTED17.01.12 11:14

Надо посчитать время, которое игрок был он-лайн, при этом исключая то время когда он был в SPECTATOR. Т.е. вести счет только от момента когда он зашел за команду и до disconnect, либо до перехода за spectator

Добавлено через 4 часа 52 минуты
В общем накалякал примерно такой метод. Все переменные внешние. DateTime.
В ходе прохода по циклу. строки 15 и 16 не вычисляют результат. Переменная timegame так и остаётся 01.01.0001 01:01:01
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
foreach (DataRow oneplayer in dt1.Rows)
                {
                    if ((dt1.Rows[k]["p_team"].ToString() == "CONNECTED")||(dt1.Rows[k]["p_team"].ToString() == "CT")||(dt1.Rows[k]["p_team"].ToString() == "TERRORIST")) flag_time = true;
                    if ((dt1.Rows[k]["p_team"].ToString() == "DISCONNECTED")||(dt1.Rows[k]["p_team"].ToString() == "SPECTATOR")) flag_time = false;
                    if (flag_time)
                    {
                        if ((dt1.Rows[k]["p_team"].ToString()=="CT")||(dt1.Rows[k]["p_team"].ToString()=="TERRORIST"))
                            timegame_start = Convert.ToDateTime(dt1.Rows[k]["p_datetime"]);                        
                        k++;
                        continue;
                    }
                    if (!flag_time)
                    {
                        timegame_end = Convert.ToDateTime(dt1.Rows[k]["p_datetime"]);
                        timegame_end.Subtract(timegame_start.TimeOfDay);
                        timegame.Add(timegame_end.TimeOfDay);                        
                    }
 
 
                    //timegame = Convert.ToDateTime(dt1.Rows[k]["p_datetime"]);
                    
                    k++;
                }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2012, 14:49
Ответы с готовыми решениями:

Отображать кто был он-лайн за день
Здравствуйте. Хочу поменять статистику "Сейчас на сайте" на "Сегодня были на сайте". Это нужно...

Меню, которое все время на экране и которое не исчезает при скролле странички
как делается меню, которое все время на экране и которое не исчезает при скролле странички?

Нужен исходник он-лайн РПГ, он-лайн игры
........я всё никак не могу разобраться в АСП. Пытаюсь его разобрать при создании собственного...

Крестики-нолики с использованием массивов в режиме игрок-игрок
Имею код, не получается написать код для игры игрок-игрок, игрок-компьютер работает прекрасно...

2
52 / 45 / 4
Регистрация: 07.10.2010
Сообщений: 95
01.06.2012, 15:15 2
Я даже не буду задавать вопрос, почему в цикле не использовалася переменная oneplayer ...

Я просто задам вопрос, понимает ли топикстартер, что он проверяет 0, 2, 4, и тд элементы?

Друг, завязывай с программированием. Это не твое. Тут ошибку найдут даже 13 летние школьники, изучающие программирование по диаграммам с ромбами и прямоугольниками.

И даже, если бы это была не такая явная ошибка - есть дебагер, который бы показал, что с переменной k творится что то не то...
0
60 / 57 / 22
Регистрация: 15.12.2009
Сообщений: 231
Записей в блоге: 1
01.06.2012, 15:22  [ТС] 3
Я тупень =) Перепил походу =) Понял косяк с возвратом значений в никуда ))) Переделываю.

Добавлено через 3 минуты
Цитата Сообщение от serefa Посмотреть сообщение
Я даже не буду задавать вопрос, почему в цикле не использовалася переменная oneplayer ...

Я просто задам вопрос, понимает ли топикстартер, что он проверяет 0, 2, 4, и тд элементы?

Друг, завязывай с программированием. Это не твое. Тут ошибку найдут даже 13 летние школьники, изучающие программирование по диаграммам с ромбами и прямоугольниками.

И даже, если бы это была не такая явная ошибка - есть дебагер, который бы показал, что с переменной k творится что то не то...
Можно организовать и цикл for (), но думаю было бы тоже самое. Я пока не запариваюсь над скоростью работы алгоритма, мне нужен рабочий код. С переменной k на мой пьяный взгляд всё в порядке.

Ошибку с возвратом значения функции в "никуда" нашел.
0
01.06.2012, 15:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2012, 15:22
Помогаю со студенческими работами здесь

Сделать что бы время в игре шло даже если игрок вышел
Может кто-нибудь поделиться ресурсом, на котором будет показано, как добавить в свое приложение...

Какие числа может объявить игрок A на начальном шаге, чтобы игрок B в некоторый момент объявил число 00.
Игрок A объявляет двузначное число от 01 до 99. Игрок B меняет местами его цифры и прибавляет...

Сделать так, чтобы определенные объекты могли проходить сквозь коллайдер, в то время как игрок - не мог
Недавно начал изучать Unity и нужно сделать так чтобы определенные обьекты могли проходить сквозь...

Первый игрок делает ход в "дурака" - определить, сможет ли второй игрок побить эту карту
Заданы достоинства и масти шести шести карт первого игрока, достоинства и масти шести карт второго...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru