Среда, 13 Ноября 2024, 13:55

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Результаты поиска
TikaraДата: Среда, 26 Декабря 2012, 10:08 | Сообщение # 21 | Тема: Вопрос-Ответ (C++)
частый гость
Сейчас нет на сайте
Цитата (Saitei)
здравствуйте! Я использую для ввода значений переменным cin. Часто так бывает, что пользователь вводит некорректные данные с точки зрения компьютера. Например в int a кто-то пытается запихнуть "пвып" или "2,2". Скажите пожалуйста, как "ограничить" и "наладить" всё это дело? Не думаю, что всё очень сложно, но для меня это будет очень полезно. Заранее спасибо - жду с нетерпением!


Если хочешь использовать потоки cin cout, то строку с консоли считывай не прямиком, а сначало в массив символов, а там уже проверяй.

Например

Код

std::string str;
int num;

std::cin >> str;

if(!isValidNumber(str))
       std::cout << "Это не число!\n";
else
       num = atoi(str.c_str());


Сообщение отредактировал Tikara - Среда, 26 Декабря 2012, 10:12
TikaraДата: Четверг, 17 Мая 2012, 02:32 | Сообщение # 22 | Тема: Вопрос-Ответ (C++)
частый гость
Сейчас нет на сайте
Snuux, можно точнее какую ошибку выдаёт среда? И какой компилятор вы используете?

Возвращать значение в void main(){} не обязательно.

Quote (Snuux)
if (a%4 == 0)
printf("Число кратно четырем");


Число кратно четырем, когда остаток при делении числа на 4 равен нулю.
TikaraДата: Среда, 09 Мая 2012, 12:09 | Сообщение # 23 | Тема: Вопрос-Ответ (C++)
частый гость
Сейчас нет на сайте
Quote (KpoJIuk)
Посоны, подкиньте реализацию или идею. Мне нужно создать динамический массив из объектов своего класса, к каждому из элементов которого должен быть вызван конструктор со своими параметрами.


Code
class Object {
public:
      Object(int state);
};

Object::Object(int state){
       switch(state)
       {
         case 1:
          //...
         break;

         case 2:
          //...
         break;

         case 3:
         //...
       }
}

int main(){
       Object **obj;
       obj = new Object*[3];
       obj[0] = new Object(1);
       obj[1] = new Object(2);
       obj[2] = new Object(3);

}


Я правильно понял?
TikaraДата: Среда, 09 Мая 2012, 06:14 | Сообщение # 24 | Тема: Вопрос-Ответ (C++)
частый гость
Сейчас нет на сайте
Code
switch (a)  
     {  
case 1: cout<<"Вы пытаетесь его поднять, но он тяжелее чем вы думали.\nВаши следующие действия:\n 1.Пойду куда шол, зачем мне 300киллограммовый камень\?\n 2.Позвать на помощь прохожих.\n 3.Попытаюсь его сломать ломом.\n 4.Попробовать на вкус.\n"; // break здесь не нужен, раз здесь идёт выбор
cin >> e;  
// e = e + 4 ; зачем складывать с 4?
switch (e)  
{  
case 1:Действие1  
case 2:Действие2  
case 3:Действие3  
case 4:Действие4  
}
break; // здесь нужен break
  


Во-первых, ваш код просто ужасен и нелогичен. Во-вторых, если уже смотреть ошибку в вашем алгоритме, то убирите оператор break; перед cin >> e;. switch(a) просто прерывается и не доходит до выполнения cin.

Всё же, если вы собрались сделать линейный квест с небольшим выбором, то используйте switch-case только для выбора вариантов действий.

Рекомендую читануть самоучитель по C++. (не удивлюсь, если такие советы вам уже поступали)
TikaraДата: Вторник, 08 Мая 2012, 17:48 | Сообщение # 25 | Тема: Вопрос-Ответ (C++)
частый гость
Сейчас нет на сайте
Quote (luiss)
if (strchr(vowel, symbol[i]))
ch = static_cast<char>(symbol[i] & 0xFC);
else
ch = static_cast<char>(symbol[i] | 0x0A);


strchr(vowel, symbol[i]) - ищем первый символ symbol[i] и проверяем найден или нет (здесь, видимо, идёт проверка гласный ли символ в массиве symbol)

ch = static_cast<char>(symbol[i] & 0xFC); - преобразуем int-овое значение symbol[i] в char
TikaraДата: Вторник, 08 Мая 2012, 14:55 | Сообщение # 26 | Тема: Ошибка в ограничителе кадров
частый гость
Сейчас нет на сайте
Не знаю кто вам посоветовал использовать CTime.wMilliseconds. Посидев и подумав над реализацией через ctime, в голове пробегали ситуации с ошибками, которых, как мне кажется, чтобы отловить потребуются костыли.
TikaraДата: Вторник, 08 Мая 2012, 13:30 | Сообщение # 27 | Тема: Ошибка в ограничителе кадров
частый гость
Сейчас нет на сайте
Quote (Xe|N|o)
Да, это конечно круто, но переменная со временем, сбрасывается раз в 49 дней, если не ошибаюсь.


Тогда такой вопрос. Вы рассчитываете на то, что найдется пользователь, запустивший вашу игру с компьютера, который работал 49 дней и хотите это предотвратить? Лично мне кажется, что такой вариант маловероятен.
Code

           // Эту часть выполните перед запуском основного цикла //       
             int DrawTimer;  
             int TimeNow;      
             int StartUpTime = timeGetTime();       
            //////////////////////////////////       

void _draw(int temp){
        if((DrawTimer=temp) >= 40)          
        {          
            draw();          
            SwapBuffers(dc);          
            StartUpTime = TimeNow;          
        }
}

           TimeNow = timeGetTime();    

           if(TimeNow < StartUpTime)    

             _draw(4294967296 - StartUpTime + TimeNow);
    
           else

            _draw(TimeNow - StartUpTime);    



Но, если вы настаиваете, осмелюсь предложить такой вариант.

Код подправил - заметил ошибочку.


Сообщение отредактировал Tikara - Вторник, 08 Мая 2012, 14:24
TikaraДата: Вторник, 08 Мая 2012, 12:17 | Сообщение # 28 | Тема: Ошибка в ограничителе кадров
частый гость
Сейчас нет на сайте
Давайте попробуем разобраться

Code
    
       // Эту часть выполните перед запуском основного цикла //
       int DrawTimer;
       int StartUpTime = timeGetTime();
      //////////////////////////////////

      if((DrawTimer=timeGetTime() - StartUpTime) >= 40)    
      {    
      draw();    
      SwapBuffers(dc);    
      StartUpTime = timeGetTime();    
      }    


Хотелось бы узнать, какое значение имеет DrawTimer до первого запуска цикла?

Дописал вашу программу, если ошибка останется или алгоритм вас не устроит, хотелось бы услышать причину и в чем толк вашего алгоритма?


Сообщение отредактировал Tikara - Вторник, 08 Мая 2012, 12:40
TikaraДата: Вторник, 08 Мая 2012, 05:33 | Сообщение # 29 | Тема: классы в с++
частый гость
Сейчас нет на сайте
Private может использовать только сам объект, Public можно использовать где угодно

Code

class Object {
public:
       int x;

       void SetY(int _y);
private:
       int y;

};

void Object::SetY(int _y){
        y = _y;
}

int main(){
      Object obj;

       int a;

       obj.x = a; // всё хорошо

       obj.y = a; // приват, доступ ограничен

       obj.SetY(a); // ЭПИК ВИН
}


Сообщение отредактировал Tikara - Вторник, 08 Мая 2012, 05:35
TikaraДата: Вторник, 08 Мая 2012, 05:21 | Сообщение # 30 | Тема: C++ Чтение из файла, запись в файл.
частый гость
Сейчас нет на сайте
Чтение файла

FILE *file;

file=fopen("file", "rb");

// "rb" - устанавливаем режим работы с файлом
// r - чтение файла;
// b - побайтовое чтение

char _FILE[100], *temp;

while((temp = fgets(_FILE, 100, file)) != NULL){ // Читаем текстовый файл до последней строки, temp - указатель на символы каждой строки, _FILE - буфер

}

int state[100];
fread( &state, sizeof(int),100 , file ); // Читаем файл побайтово, 1 передаём указатель на буфер, 2 размер в байтах, 3 кол-во обьектов для чтения, 4 указатель на открытый файл

fclose(file); // Закончим работу с файлом

Запись в файл

FILE *file;

file=fopen("file", "wb");

// "wb" - устанавливаем режим работы с файлом
// w - запись в файл
// b - побайтовая запись

MyObject mo[10];
fwrite(&mo,sizeof(MyObject),10,file); // Записываем в файл побайтово, аналогично с чтением

fprintf(file, "ololo"); // текстовая запись в файл (синтаксис ф-ции, аналогичен с printf())

fclose(file); // Закончим работу с файлом
TikaraДата: Среда, 21 Марта 2012, 18:24 | Сообщение # 31 | Тема: 2D Sapphire
частый гость
Сейчас нет на сайте
warzes,
Quote
Но для опытных программистов этот движок дает море возможностей вмешаться в любую его часть и изменить по своему усмотрению, без изменения самого кода движка.


Хотелось бы поподробней узнать как это реализовано.

пс в windmill 2dge этого очень не хватает.
TikaraДата: Среда, 14 Марта 2012, 09:35 | Сообщение # 32 | Тема: WindMill 2D Game Engine
частый гость
Сейчас нет на сайте
Возникла проблема с методом SetMyCursor, выскакивает ошибка компиляции что-то вроде найдено 1 или более неразрешенных внешних элементов. Кто тестил, возможно ли с этим как-то бороться?
Кстати, эта функция отображает изменённый курсор ТОЛЬКО в области приложения/игры? Чтобы её использование было хоть как-то полезнее, чем SetSystemCursor.

Пишу в визуалке 2010 на c++.
Версия движка, естественно, 1.40.

надеюсь на скорый ответ.
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг