Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 08:25   #21
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,088
По умолчанию

Цитата:
Сообщение от Fanyuus Посмотреть сообщение
первое - без этого не работает сишный файл в вижуале.
Это называется прекомпиленный заголовок. В этот stdafx.h нужно прописывать все часто востребованные в программе заголовочные файлы. Это влияет на скорость компиляции и вещь добровольная. Просто при создании проекта стояла соответствующая галочка. Можно отключить эту штуку у проекта и тогда этот хедер всюду первым подключать будет не обязательно.
Цитата:
Сообщение от Fanyuus Посмотреть сообщение
В общем, пробелма ещё такая появилась: на других компах, у которых нет вижуала 2010, пишет: отсутствует MSVCP100D.dll
1. Для распространения нужно компилировать Release версию, а не Debug (выбирается вверху, в районе меню студии по умолчанию).
2. http://msdn.microsoft.com/ru-ru/library/2kzt1wy3.aspx
В свойствах проекта этот ключик меняется. По умолчанию идёт /MD, а нужно /MT и тогда никакая библиотека не потребуется.
3. Вместо второго пункта можно устанавливать на компы
http://www.microsoft.com/ru-ru/downl...s.aspx?id=5555
сейчас часто так делают, но первый пункт это не отменяет
ЗЫ. Я бы на шарпе писал, а то все эти Qt в итоге только мозг вынесут

Последний раз редактировалось pu4koff; 19.12.2012 в 08:30.
pu4koff вне форума Ответить с цитированием
Старый 19.12.2012, 13:16   #22
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

Хм, понятно. Спасибо Вам большое, pu4koff !

Пока временно "Qt", нашла ошибку в проверке, и решила всё-таки дальше добивать сишную версию, чтобы уж совсем её добить.

Собственно, суть дальнейшего добивания: попытаться сделать одну идею. Для её реализации интересует следующий вопрос.

Допустим мне нужно записывать... партию.Ходы. Кто куда ходил и так далее.и сделать это я хочу в какую-то "библиотеку", не знаю как правильно назвать. То есть, мне нужно так, чтобы эти данные хранились в каком-то месте и если что, в программе я могла бы к ним обращаться.

Теперь вопрос: что это я сейчас хочу сделать и насколько тяжело это сделать?
Fanyuus вне форума Ответить с цитированием
Старый 19.12.2012, 14:29   #23
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,692
По умолчанию

Цитата:
Допустим мне нужно записывать... партию.Ходы. Кто куда ходил и так далее.и сделать это я хочу в какую-то "библиотеку", не знаю как правильно назвать. То есть, мне нужно так, чтобы эти данные хранились в каком-то месте и если что, в программе я могла бы к ним обращаться.
Код:
struct Action
{
//данные о ходе которые вы хотите хранить
   int player;
   int x,y;
   bool killed;
...
   Action(тут конструктор с параметрами для удобства);
};
...
//где-то объявляете переменную для хранения ходов
vector<Action> actions;
...
//и когда совершается ход
actions.push_back(Action(параметры));
Если вы про это.
Kostia вне форума Ответить с цитированием
Старый 19.12.2012, 14:35   #24
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,088
По умолчанию

Простая запись в файл. работа с файловыми потоками (ifstream, ofstream) аналогична взаимодействию с пользователем в консоли (cin, cout). Тупо матрицы не в консоль пользователю выводятся, а в файловый поток, вот и всё сохранение игры. Или нужно вести историю ходов для возможности отмены? Или просто потом ностальгировать, просматривая логи в блокноте?
pu4koff вне форума Ответить с цитированием
Старый 19.12.2012, 22:17   #25
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

Kostia, возможно и про это, спасибо!)))

pu4koff, не сколько настольгировать, сколько задать алгоритм для "игрок-компьютер". Хочу проверить одну идею, но нужна.. база! точно - база в виде библиотеки, где буду храниться партии, в которые программа уже играла. Т.е., нужна такая библиотека, окторая дополняет, не удаляет, анализирует.

Ну, елси на анализ - пара функций в коде и какая-нибудь работа внутри библиотеки, то ... - что и как это сделать? (про эту самую "библиотеку"?
Что смотреть, что изучать, на что обратить внимание?

Я это к чему, идея то первоначальная была про шахматы, но суть там примерно такая же будет. Вот и подумала: помучаю морской бой, будет проще изедваться над шахматами.



И ещё. Может быть кто-нибудь подскажет:

Возможно было бы проще сделать классы, которые бы как-то внедрить в массив, а я всё по простому, обычной проверкой.
И тут у меня в условии коряк, проверка на "кораблик находится рядом, при расстановке, или нет"?

суть примерно такая, вот мы задаём непрерывный трёхпалубник. Я работаю от центрального элемента кораблика, он как бы по идее 2-ой. но у 3-ки есть 2 варианта расположения: либо горизонт, либо вертикаль. Поэтому, я проверяю по простому условию "берём координаты первого элемента, плюсуем к столбику\строчке, что вышло - то и будет для условий".
Хорошо, сделала. Но вот вышел коряк: при расстановке с координатами горизонталь - 999, вертикаль 012, то есть, это он в левом нижнем углу, он выдаёт ошибку, будто соприкасается.
уверена, что ошибка в условии, но в упор её не вижу, может быть вы подскажете?

Код:
 if (     (POLEBOJA2[ii1][jj1+1]==POLEBOJA2[ii2][jj2])    && (
	(    (POLEBOJA2[ii2-1][jj2+2]!='0')&&((ii2-1)>-1)&&((jj2+2)<10)  ) ||
	( (POLEBOJA2[ii2-1][jj2+1]!='0')&&((ii2-1)>-1) ) ||
	( (POLEBOJA2[ii2-1][jj2]!='0')&&((ii2-1)>-1)  ) ||
	( (POLEBOJA2[ii2-1][jj2-1]!='0')&&((ii2-1)>-1)&&((jj2-1)>-1) ) ||
	( (POLEBOJA2[ii2-1][jj2-2]!='0')&&((ii2-1)>-1)&&((jj2-2)>-1) ) ||
	( (POLEBOJA2[ii2][jj2-2]!='0')&&((jj2-2)>-1) ) ||
	( (POLEBOJA2[ii2][jj2+2]!='0')&&((jj2+2)<10) ) ||
	( (POLEBOJA2[ii2+1][jj2+2]!='0')&&((ii2+1)<10)&&((jj2+2)<10) ) ||
	( (POLEBOJA2[ii2+1][jj2+1]!='0')&&((ii2+1)<10)&&((jj2+1)<10)  ) ||
	( (POLEBOJA2[ii2+1][jj2]!='0')&&((ii2+1)<10) ) ||
	( (POLEBOJA2[ii2+1][jj2-1]!='0')&&((ii2+1)<10)&&((jj2-1)>-1)  ) ||
	( (POLEBOJA2[ii2+1][jj2-2]!='0')&&((ii2+1)<10)&&((jj2-2)>-1) ) ))
{
		cout <<" \n \n Корабли не должны соприкасаться! \"Enter\" \n";
		getch();
		system("cls");

}
Fanyuus вне форума Ответить с цитированием
Старый 20.12.2012, 07:39   #26
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,088
По умолчанию

Цитата:
Сообщение от Fanyuus Посмотреть сообщение
pu4koff, не сколько настольгировать, сколько задать алгоритм для "игрок-компьютер". Хочу проверить одну идею, но нужна.. база! точно - база в виде библиотеки, где буду храниться партии, в которые программа уже играла. Т.е., нужна такая библиотека, окторая дополняет, не удаляет, анализирует.
Волшебства не бывает и опять всё нужно делать ручками. Записывать нужные данные в файл, базу данных, да хоть куда. Потом их считывать и анализировать. Что это всё из себя будет представлять - это совсем не важно. Можно вынести в отдельную программу, можно выделить в DLL и вызывать нужные методы, да что угодно можно наворотить.
Я так понимаю хочется создать эдакий обучающийся ИИ, который на основе предыдущих игр будет расставлять корабли в наименее вероятные места выстрела и стрелять в наиболее часто заполненные ячейки? Тут алгоритм нужно продумывать, а не хранение данных, т.к. хранение будет "плясать" от алгоритма.
Цитата:
Сообщение от Fanyuus Посмотреть сообщение
Ну, елси на анализ - пара функций в коде и какая-нибудь работа внутри библиотеки, то ... - что и как это сделать? (про эту самую "библиотеку"?
Что смотреть, что изучать, на что обратить внимание?
ifstream и ofstream для записи данных в файл. Потом в нужном месте запись нужных данных и, соответственно, чтение. Анализ всего подряд пусть себе живёт в этой же программе. Я не понимаю в чём тут проблема и зачем нужно выдумывать какую-то библиотеку.
Цитата:
Сообщение от Fanyuus Посмотреть сообщение
Возможно было бы проще сделать классы, которые бы как-то внедрить в массив, а я всё по простому, обычной проверкой.
И тут у меня в условии коряк, проверка на "кораблик находится рядом, при расстановке, или нет"?
Нужно создать функцию для проверки возможности установки однопалубника. До добавления трёхпалубника и внесения каких-либо изменений в матрицу, нужно проверить этой функцией по очереди все три палубы корабля и если всё хорошо, то добавлять эти три палубы.
Проверка однопалубника сводится к банальной проверке соседних 8 ячеек (исключение только будет на границах поля) и собственно текущей на отсутствие там других кораблей.
Что-то вроде такого может быть
Код:
// pole - матрица, хранящая игровое поле с кораблями
// x, y - столбец и строка, в которые хотим добавить палубу корабля
bool check(int** pole, int x, int y)
{
  for (int i = x-1; i <= x+1; ++i)
  {
    if (i < 0 || i > 9) continue; // чтобы не вылезти при проверке за пределы матрицы
    for (int j = y-1; j <= y+1; ++j)
    {
      if (j < 0 || j > 9) continue; // см. выше
      if (pole[i][j] != 48) // 48 - это то, что символизирует пустую ячейку, если я не ошибаюсь
        return false; // в результате имеем, что корабль в эту ячейку нельзя помещать
    }
  }
  
  return true; // сюда дойдём только если все ячейки пустые
}
pu4koff вне форума Ответить с цитированием
Старый 20.12.2012, 13:32   #27
Fanyuus
Форумчанин
 
Аватар для Fanyuus
 
Регистрация: 07.05.2011
Сообщений: 169
По умолчанию

Цитата:
Я так понимаю хочется создать эдакий обучающийся ИИ, который на основе предыдущих игр будет расставлять корабли в наименее вероятные места выстрела и стрелять в наиболее часто заполненные ячейки? Тут алгоритм нужно продумывать, а не хранение данных, т.к. хранение будет "плясать" от алгоритма.
Да, обучающийся ИИ входит в этот план)))
но чтобы его сделать, чтобы ещё при этом понять что и как в нём работает - начинаем с простого, без-ИИ-шного варианта.
А алгоритм, вроде бы простой, в смысле - придумала, так, образно. Не думаю, что написать его будет очень сложно - сложно, но можно.

Цитата:
Я не понимаю в чём тут проблема и зачем нужно выдумывать какую-то библиотеку.
Аааа, а я то думала, это как библиотекой, а можно как и файлом. Просто, если размер файла будет большой, то... он всё равно будет хорошо работать? А, так очень хорошо))

Так, над кодом подумаю,
просто у меня уже есть алгоритм проверки "введены координаты в массиве или за пределами", потом на проверку "неразрывности", то есть 2-3-4 в ряд, и вот сейчас как бы надо проверить, чтобы вдруг случайно при расстановке кораблики соприкоснулись углами.
Fanyuus вне форума Ответить с цитированием
Старый 20.12.2012, 15:48   #28
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,088
По умолчанию

Цитата:
Сообщение от Fanyuus Посмотреть сообщение
Аааа, а я то думала, это как библиотекой, а можно как и файлом. Просто, если размер файла будет большой, то... он всё равно будет хорошо работать? А, так очень хорошо))
Преждевременная оптимизация - бяка. Есть задача: проверить алгоритм или просто некие мысли - нужно их проверять на том, что умеется. Потом это всё можно будет поменять, если что-то будет не устраивать.
С файлами можно всяко разно работать. В общем случае всё там хорошо будет
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать в Паскале копию игры "Морской бой" Керкси Фолс Помощь студентам 6 17.11.2013 13:19
Игра "Морской бой" на Delphi. С чего начать? Cyxarik Помощь студентам 8 16.02.2011 10:26
Слабо "Морской бой" на ассемблере? =) VenZell Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 26.05.2009 21:36
Расстановка кораблей в игре "Морской бой" [MI_nor] Общие вопросы C/C++ 1 23.05.2009 00:23
"Морской бой" на "Турбе" Cezar Помощь студентам 10 15.05.2007 20:28