Игра "Викторина"
Re: Игра "Викторина"
У меня катастрофически не хватает времени пока что. Всё это есть в планах, чтобы сделать.
Система бонусов включается, если ты не больше 2 вопросов простаивал. Больше поставить? (ответил, прошло 2 вопроса, и счетчик опять сбивается)
И еще, у spermet сделан такой симпатичный механизм, что на разное время ответа выдается разная фраза (особенно скрипя мозгами), некоторым это не нравится и хотят, чтобы просто одна фраза была ;(
Система бонусов включается, если ты не больше 2 вопросов простаивал. Больше поставить? (ответил, прошло 2 вопроса, и счетчик опять сбивается)
И еще, у spermet сделан такой симпатичный механизм, что на разное время ответа выдается разная фраза (особенно скрипя мозгами), некоторым это не нравится и хотят, чтобы просто одна фраза была ;(
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
— Martin Golding
- yagrik
- Сообщения: 116
- Зарегистрирован: 17:45, 01.09.2009
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Игра "Викторина"
Нет уж, тогда сделайте выбор: или одна фраза, или много, я наоборот приветствую много разных фраз, чтобы веселее было. Многие по ночам играют, и так скучно. А еще лучше, чтобы фразу можно было вбивать свои и сколько угодно.ОреЛ писал(а):У меня катастрофически не хватает времени пока что. Всё это есть в планах, чтобы сделать.
Система бонусов включается, если ты не больше 2 вопросов простаивал. Больше поставить? (ответил, прошло 2 вопроса, и счетчик опять сбивается)
И еще, у spermet сделан такой симпатичный механизм, что на разное время ответа выдается разная фраза (особенно скрипя мозгами), некоторым это не нравится и хотят, чтобы просто одна фраза была ;(
Последний раз редактировалось yagrik 02:29, 12.02.2011, всего редактировалось 1 раз.
CommFort (г. Санкт-Петербург)
commfort.spb.ru - самый демократичный сервер - выборы админа раз в 3 месяца!
commfort.spb.ru - самый демократичный сервер - выборы админа раз в 3 месяца!
Re: Игра "Викторина"
Ну, это уже перебор Нескольких стандартных вполне хватит. По-моему, гораздо важнее избавиться от угадал(а) и балл(а, ов).yagrik писал(а): А еще лучше, чтобы фразу можно было вбивать свои и сколько угодно.
Кто установил последнюю версию - отпишитесь как включается бонусная система.
Re: Игра "Викторина"
Поясните вы мне Христа ради, как эта бонусная система включается и выключается. Я пока логических объяснений не нахожу. Цитирую:
Вот почему она включилась? И главное, почему опять выключилась?Фрукт с женским именем. (букв: 5)
[15:42:14] Viktor&Ina: Подсказка №1: г****
[15:42:19] maken: груша
[15:42:20] Viktor&Ina: Система бонусов включена
[15:42:20] Viktor&Ina: maken ответил(а) правильно и заработал(а) 8 (4 бонусных балл(а, ов)) балл(а,ов), У maken 877 балл(а,ов), 1-е место.
[15:42:25] Viktor&Ina: Следующий вопрос №50:
Что обычно делает кошка, увидев перед собой злую собаку? (букв: 7)
[15:42:25] Viktor&Ina: Система бонусов отключена
Re: Игра "Викторина"
Приложенный файл - викторина с цифрой 5
То, что добавил ниже, там все конфиги тянутся при включении плагина, обращений к файлу больше не идёт во время работы и перезагрузка настроек осуществляется перезапуском плагина. Supermet, тебе подарочек! Я не могу понять "принцип экранирования". Да и тем более при выводе в чат придется "разэкранировать", не так ли? Хорошая тебе задача.
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
— Martin Golding
Re: Игра "Викторина"
Просто в sqlite символы одинарной кавычки нужно экранировать.
Тоесть заменить все вхождения ' на '' (2 кавычки.)
Я проверю как это работает и напишу.
Тоесть заменить все вхождения ' на '' (2 кавычки.)
Я проверю как это работает и напишу.
Re: Игра "Викторина"
Орел, в функции
Здесь ошибка. Зачем переменной Users присваивается сначала объект с именем и ответом, а потом обнуляется присваивается ссылка на новый объект TempUsers.Мне кажется лучше использовать глобальную переменную map<string, string> Users http://www.cplusplus.com/reference/stl/map/
Код: Выделить всё
void Register_user(string user){
int count= getcount("users", "name", user);
if (count==0){
sqlite->execDML("insert into users(name, igraet) values ('"+chcp(user, CP_ACP, CP_UTF8)+"', 1)");
UserList * TempUsers = new UserList[PlayersInBase + 1];
Users[PlayersInBase].Name = user;
Users[PlayersInBase].LastAnswer = 0;
PlayersInBase++;
Users = TempUsers;
//...
Последний раз редактировалось supermet 21:37, 13.02.2011, всего редактировалось 1 раз.
Re: Игра "Викторина"
Возможно, я неправильно понял, для чего предназначена эта функция, но всё же, у меня массив Users типа UserList - это массив записей, поэтому мне приходится создавать временный массив с размером на 1 больше, дозаписать еще одну запись и присвоить старому массиву этот временный... Я понял в чем ошибка. Только что. Исправь примерно на такое
из-за этой ошибки происходило следующее: если человек ни разу не играл, то сбрасывался весь массив играющих...надо выложить исправленный?
Код: Выделить всё
UserList * TempUsers = new UserList[PlayersInBase + 1];
for (int i = 0; i < PlayersInBase; i++){
TempUsers[i].InGame = Users[i].InGame;
TempUsers[i].Name = Users[i].Name;
TempUsers[i].LastAnswer = Users[i].LastAnswer;
}
PlayersInBase++;
TempUsers[PlayersInBase].Name = user;
TempUsers[PlayersInBase].LastAnswer = 0;
Users = TempUsers;
- Вложения
-
- viktorina_vc.rar
- (108.15 КБ) 293 скачивания
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
— Martin Golding
Re: Игра "Викторина"
тогда в предпоследней строчке перед Users = TempUsers; наверно нужно написать delete[] Users; чтобы утечки памяти не было. И все таки с vector или map было бы легче. Вспомогательную переменную TempUsers не нужно было бы вводить и указатели можно не использовать.
Re: Игра "Викторина"
то есть сначала удалить массив Users, а потом присвоить ему другой массив? да, надо бы так сделать, но всё же, я хотел сделать массив записей, потому что по-другому у меня в голове не укладывалась реализация. для каждого пользователя нужно хранить имя, булиновую переменную и номер, а 3 слова в 2 не запихнешь
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
— Martin Golding
Re: Игра "Викторина"
Ну вот например так можно без указателей:
В этой функции если кол-во пользователей будет > 255 то произойдет переполнение (byte).
Хотя, наверно так много никогда ни играют.
Код: Выделить всё
UserList user;
vector<UserList> Users;
user.Name = "User1";
user.LastAnswer = 0;
user.InGame = true;
Users.push_back (user);
user.Name = "User2";
user.LastAnswer = 0;
user.InGame = true;
Users.push_back (user);
// вывод
for (int i=0; i<Users.size(); i++)
cout << " " << Users.at(i).Name << endl;
// удалить второго пользователя
Users.erase (Users.begin()+1);
for (int i=0; i<Users.size(); i++)
cout << " " << Users.at(i).Name;
//...
Users.clear();
Хотя, наверно так много никогда ни играют.
Код: Выделить всё
int NumOfUser(string User){
byte num;
for (int i = 0; i < PlayersInBase; i++){
if (Users[i].Name == User) num = i;
}
return num;
}
Re: Игра "Викторина"
Что то я запутался! Какая версия щас для клиента с супер игрой?
Re: Игра "Викторина"
Начиная с 1.016 совмещенная версия с хорошей супер-игрой
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
— Martin Golding
Re: Игра "Викторина"
запускаю плагин, и у меня сразу вырубается клиент. Что надо сделать чтобы все работало хорошо?
Плагин стоял от supermet
Плагин стоял от supermet
Re: Игра "Викторина"
Какой вы поставили плагин и что и как вы делали? Не люблю на форуме обсуждать одну проблему, лучше это обсуждать лично.
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
— Martin Golding