Результаты поиска
| |
MrIncrof | Дата: Вторник, 30 Августа 2011, 12:41 | Сообщение # 341 | Тема: Ошибка при установке .gex расширения. |
Lite Programmer
Сейчас нет на сайте
| vasyan555, ПКМ по ярлыку, нажимаешь: "Запустить от имени администратора" и всё
|
|
| |
MrIncrof | Дата: Вторник, 30 Августа 2011, 12:16 | Сообщение # 342 | Тема: создание игры на с++ |
Lite Programmer
Сейчас нет на сайте
| Quote (4aBo) начинай с пекменов, лабиринтов и арконоидов
|
|
| |
MrIncrof | Дата: Вторник, 30 Августа 2011, 12:12 | Сообщение # 343 | Тема: создание игры на с++ |
Lite Programmer
Сейчас нет на сайте
| z-z, 3Д это уже не просто, начинай с пекменов, лабиринтов и арконоидов, а потом от простого к сложному. Вот эта фраза говорит сама за себя: Quote (z-z) язык, можно сказать, не знаю Раз не знаешь, значит пока учись, учись и ещё раз учись!
|
|
| |
MrIncrof | Дата: Вторник, 30 Августа 2011, 12:02 | Сообщение # 344 | Тема: создание игры на с++ |
Lite Programmer
Сейчас нет на сайте
| z-z, какая игра, пространство? Подробнее об игре напиши!
|
|
| |
MrIncrof | Дата: Вторник, 30 Августа 2011, 11:46 | Сообщение # 345 | Тема: Массивы и метки в C++ |
Lite Programmer
Сейчас нет на сайте
| Привет, сейчас мы рассмотрим массивы и метки, массивы - это своеобразные стопки в одной переменной, массивы в языке С++ задаются так, сначала вызывается обычная переменная, только со скобками [], внутри которых нужно прописать количество значений в стопке, например, можно написать: В этом коде мы задали количество значений в стопке на 5. Теперь посмотрим на метки, метки задаются переменной, только без всякого оператора, но с двоеточием (:) в конце, например: И так далее, переход к меткам осуществляется оператором goto, например, чтобы переместиться к метке SUPER, нам нужно прописать: Всё очень просто. Теперь мы сделаем чтение из значений в массиве, а когда прочитали, переместиться назад, вот и код: Code #include <iostream> //Подключаем ввод-вывод using namespace std; //Подключаем пространство имён int main() //Главный класс { SKIP: //Метка setlocale(LC_ALL, "Russian"); //Делаем Русский язык int ms[5]; //Наш массив for (int i = 0; i <= 5; ++i) //Через цикл мы записываем значения в стопку (массив) { cout << "Введите число № " << i << endl; //Смотрим cin >> ms[i]; //Вводим } int ii; //Переменная для прочтения массива cout << "Прочитать массив номер " << endl; //Смотрим cin >> ii; //И записываем нужный нам массив cout << "Число " << ms[ii] << endl; //После этого смотрим, какое там число goto SKIP; //И в конце перемещаемся к метке } Всё просто, нужно только понять. Пример: СсылкА Спасибо за внимание, с вами был 4aBo Плюсики желательны
Сообщение отредактировал 4aBo - Вторник, 30 Августа 2011, 11:57 |
|
| |
MrIncrof | Дата: Вторник, 30 Августа 2011, 10:35 | Сообщение # 346 | Тема: Создаём DOS игру на Visual C++ 2010 |
Lite Programmer
Сейчас нет на сайте
| Demeron, обязательно, я уже пробовал, там непонятные символы
Сообщение отредактировал 4aBo - Вторник, 30 Августа 2011, 10:36 |
|
| |
MrIncrof | Дата: Вторник, 30 Августа 2011, 10:29 | Сообщение # 347 | Тема: Создаём DOS игру на Visual C++ 2010 |
Lite Programmer
Сейчас нет на сайте
| Привет всем посетителям форума, сейчас мы сделаем простую игру, сути игры такова, компьютер загадывает число, а мы должны его угадать. Для начала мы создадим новое консольное приложение в Visual C++ 2010 Express, назовём приложение, например, DOSgame, пишем код (с комментариями): Code #include "stdafx.h" #include <iostream> //Подключаем библиотеку ввода-вывода #include <cstdlib> #include <ctime> //Подключаем библиотеку времени using namespace std; //Подключаем пространство имён std
int main() //Главный класс { srand(time(0)); //Зараём сид времени на компе bool done; //Булевая переменная, закончена игра или нет do { int i = rand() % 100; //Делаем так, чтобы число не было больше 99 while (true) //Бесконечный цикл, пока мы не закончим игру { setlocale(LC_ALL,"Russian"); //Выбирам русский язык cout << "Я загадал число, какое? "; //Комп спрашивает число int j; //Вот число компа cin >> j; //Вы должны ввести число if (i > j) //Если написаное число меньше загадонного cout << "Мое число больше." << endl; //Комп пишет что его число больше else //иначе { if (i < j) //Если число больше чем загадонное cout << "Мое число меньше." << endl; //Комп пишет что у него число меньше else //Иначе { cout << "Ты угадал." << endl; //Комп проиграл break; //Выходим из цикла } } } cout << "Продолжить (y/n)? "; //Спрашиваем у игрока, продолжить ли игру char c; //Символ cin >> c; //Вводим символ done = (c != 'y'); //Мы выходим из игры если игрок ввёл НЕ y } while (!done); } А вот пример того что получится: ссылка (RGhost) С вами был 4aBo, до скорой встречи!
Сообщение отредактировал 4aBo - Вторник, 30 Августа 2011, 10:31 |
|
| |
MrIncrof | Дата: Вторник, 30 Августа 2011, 09:42 | Сообщение # 348 | Тема: Ограничение |
Lite Programmer
Сейчас нет на сайте
| MyACT, поподробнее опиши, я ничего не понял, а вообще используй if Добавлено (30.08.2011, 09:42) --------------------------------------------- Примерно так: if !global.gold <= 0 { скрипт_покупки }
|
|
| |
MrIncrof | Дата: Вторник, 30 Августа 2011, 07:08 | Сообщение # 349 | Тема: Среда разработки на С++ |
Lite Programmer
Сейчас нет на сайте
| А где NetBeans IDE C++??? Я им пользуюсь, а так же с Visual C++ 2010 Express и Code::Blocks
|
|
| |
MrIncrof | Дата: Вторник, 30 Августа 2011, 06:41 | Сообщение # 350 | Тема: Создаём функцию модификаций в своей игре |
Lite Programmer
Сейчас нет на сайте
| Странник, MR-Igrodel, спасибо BrightSpot, если отдашь исходник, тогда тот кто его скачал может изменить его и выдать за свою игру, проблема решается модами. Demeron, ты прав, проще сделать DLL. Quote (Demeron) Лучше бы сделал урок как подключать DLL и выполнять определенную функцию (или брать из нее параметры для игры). По-подробнее, в ЛС отправь
|
|
| |
MrIncrof | Дата: Вторник, 30 Августа 2011, 06:35 | Сообщение # 351 | Тема: Smile team |
Lite Programmer
Сейчас нет на сайте
| Laush, могу к вам пойти, мне всё равно заняться нечем
|
|
| |
MrIncrof | Дата: Понедельник, 29 Августа 2011, 18:20 | Сообщение # 352 | Тема: Временное название - "ССД" |
Lite Programmer
Сейчас нет на сайте
| Уайльд, нужно быть модером
|
|
| |
MrIncrof | Дата: Понедельник, 29 Августа 2011, 18:16 | Сообщение # 353 | Тема: Временное название - "ССД" |
Lite Programmer
Сейчас нет на сайте
| Уайльд, создал тему не в том разделе!
|
|
| |
MrIncrof | Дата: Понедельник, 29 Августа 2011, 15:25 | Сообщение # 354 | Тема: [X vs 0] - [Online] |
Lite Programmer
Сейчас нет на сайте
| Поварёнок, +1 Нашёл баг - если долго играть и при этом нажимать на поле за врага, то враг сходит два раза и выиграть будет невозможно
|
|
| |
MrIncrof | Дата: Понедельник, 29 Августа 2011, 14:58 | Сообщение # 355 | Тема: Создание простейшей стратегии на GM для полных новичков |
Lite Programmer
Сейчас нет на сайте
| аТнОтХоАн, ГМ 8.1, 100%, ведь функция draw_self(); есть только в 8.1
Сообщение отредактировал 4aBo - Понедельник, 29 Августа 2011, 15:00 |
|
| |
MrIncrof | Дата: Понедельник, 29 Августа 2011, 14:52 | Сообщение # 356 | Тема: Создание простейшей стратегии на GM для полных новичков |
Lite Programmer
Сейчас нет на сайте
| Hommme, не знаю, у меня всё работает
|
|
| |
MrIncrof | Дата: Понедельник, 29 Августа 2011, 12:03 | Сообщение # 357 | Тема: Создание простейшей стратегии на GM для полных новичков |
Lite Programmer
Сейчас нет на сайте
| Добавил скриншот и пример
|
|
| |
MrIncrof | Дата: Понедельник, 29 Августа 2011, 09:51 | Сообщение # 358 | Тема: Создание простейшей стратегии на GM для полных новичков |
Lite Programmer
Сейчас нет на сайте
| Привет всем! Сейчас я расскажу вам как сделать простую ртс-ку (РТС - RTS - Real Time Strategy то есть стратегия в реальном времени) открываем гамак 8.1 (на 8.0 работоспособность не гарантируется) создаём объект objControl, то есть это будет наш главный объект создаём событие создания (Create) Добавить событие => Создание (Add event => Create) событие создание делается всего один раз - при создании, нажимаем на вкладку control в правом вертикальном меню и нажимаем ПКМ по Execute code (Выполнить код) и пишем код (лучше всего не копировать код, а писать его самому, так гораздо легче запомнить): Code startx=0; //Объявляем переменную начала точки по х starty=0; //Объявляем переменную начала точки по у draw_rect=false; //Не рисуем прямоугольник выбора Переменная: часть памяти, которая содержат информацию. Они имеют своё имя, с помощью которого Вы можете обратиться к ним. Переменные в GML могут содержать реальное число или строку. К примеру, стол - это переменная, деревянный или стеклянный - значение Теперь создаём событие шага (Step, Add Event = > Step) и выполняем операцию заново (нажимаем ПКМ по Execute code (Выполнить код)): Code if mouse_check_button_pressed(mb_left) //Если ЛКМ нажата { draw_rect=true; //Мы рисуем прямоугольник startx=mouse_x; //Стартовая х позиция = положение х мыши starty=mouse_y; //Стартовая у позиция = положение у мыши with all selected=false; //Это пока не объявленная переменная, что она будет делать мы узнаем позже }
if mouse_check_button_released(mb_left) //Если ЛКМ отпущенна { draw_rect=false; //Мы не рисуем прямоугольник for(i=0;i<=instance_number(par);i+=1) //Читайте про цикл for ниже { ii=instance_find(par,i); //Мы ищем пока не сделанный объект if(collision_rectangle(startx,starty,mouse_x,mouse_y,ii,true,false)) //Вот наш прямоугольник коллизии (соприкосновения) { ii.selected=true; } } }
Код большой и сложный, пока мы узнаем про оператор условия if: Код с if выполняется так: Code if (условие) { действие }
также в нём может быть оператор else (иначе), пример:
Code if (условие) { действие } else { действие 2 }
а for - это оператор цикла, он выполняется так: Code for (<переменная> ; <выражение> ;<действие переменной>) { <действия> } оператор for очень мощная вещь, он очень помогает в трудных ситуациях
Оператор - встроенные в ЯП действия, например, самая распространённая это int, if, else, string, switch, for, case, break, exit, и т.д и т.п.
Теперь также создаём событие рисования (draw) и таким же путём пишем: Code if draw_rect=true { alpha=.8; draw_rectangle_color(startx,starty,mouse_x,mouse_y,c_green,c_green,c_green,c_green,true); }
Здесь всё легко, вот то же самое только по Русски: если нам нужно рисовать прямоугольник, то мы выбираем прозрачность и рисуем прямоугольник вот аргументы Code draw_rectangle_color(x1,y1,x2,y2,color 1, color 2, color 3, color 4, outline) outline - будет ли рисоваться только грань (true) или залитый прямоугольник (false) Мы нашли новое слово - константа, это заменённое словом числовое выражение или код, в гамаке есть встроенные константы: Code true (правда) - 1 false (ложь) - 0 pi - 3.1415... Ну вот, разобрались, теперь нам нужно создать новый объект - родительский объект, который будет подключаться к дочерним. Назовём его par (чтобы сменить имя нужно менять код в событие шага контрольного объекта), в событие создания пишем: Code selected=false; //Вот и наша переменная, выбран ли объект
Это всё. Теперь нам конечно же нужен объект, который может передвигаться, называем его objTest, в событие создания пишем код: Code gox=x; //Куда идти по х... goy=y; //по у selected=false; //Мы не выбраны =) object_set_parent(self,par) //Вот и выбор родителя
Новое действие: Code object_set_parent(ind,obj) - Устанавливает родительский объект для объекта с именем ind. И новый оператор: self, он означает что действие будет переходить к себе Не бойтесь, ещё немного осталось, в событие шага: Code if distance_to_point(gox,goy) > 20 { mp_potential_step(gox,goy,6,solid); } if(selected=true) && mouse_check_button_pressed(mb_right) { gox=mouse_x; goy=mouse_y; } Code distance_to_point(х,у) - узнаёт расстояние до точки Code mp_potential_step(х,у,speed,checkall) , speed - скорость, checkall - обходить всех (true) или нет (false) тут тоже всё просто. И последнее - рисование: Code draw_self() //рисуем себя, если не написать, рисоваться объест не будет! (в gm8.0 не работает!) if selected=true { draw_circle_color(x,y,16,c_green,c_green,1) }
Code draw_circle_color(x,y,radius,color 1,color 2,outline) - рисуем круг с радиусом radius Всё! Теперь создаём новую комнату и ставим несколько объектов теста (objTest), родительский объект (par) и контроллер (objControl) Вот то что у нас получилось: Вот исходник: http://narod.ru/disk/23258019001/Strategy.gm81.html Обозначения: гамак: Game Maker ЛКМ - Левая Кнопка Мыши ПКМ - Правая Кнопка Мыши
Сообщение отредактировал 4aBo - Понедельник, 29 Августа 2011, 12:03 |
|
| |
MrIncrof | Дата: Понедельник, 29 Августа 2011, 09:42 | Сообщение # 359 | Тема: Создаём функцию модификаций в своей игре |
Lite Programmer
Сейчас нет на сайте
| Доброго времени суток, форумчане, сейчас мы сделаем функцию создания модификаций в своей игре, мы это будем делать через ini файл. Так как в GM не предусмотрена функция выбора произвольных имён папок, мы сделаем ограниченное количество модов. Пока я пишу DLL выбора произвольных папок, как только допишу, обязательно выложу, а пока, смотрите. Для начала создаём объект, называем его obj_Modifications (или просто Mods), далее в событие создания мы пишем: Code for (i = 0; i <= 125; i += 1) //Наш цикл, мы проверяем всего 125 модов, то есть возможно только 125 модов для игры { Dir = working_directory + "\Mod" + string(i); //Переменная директории с модом (чтобы каждый раз не писать заного) File = "\Index.ini"; //Наш файл для просмотра if directory_exists(Dir) //Проверяем, есть ли папка с модом { if file_exists(Dir + File) //Если она есть, тогда проверяем на существование наш файл Index.ini { ini_open(Dir + File); //Если папка и файл существует мы открываем этот файл text = ini_read_string("Message","Text",""); //Читаем оттуда значения show_message(text); //И выводим это значение на экран ini_close(); //После этого нам необходимо ОБЯЗАТЕЛЬНО закрыть файл } } } Чтобы читать значение из файла вы должны знать функции ini файлов С вами был 4aBo, до встречи!
|
|
| |
MrIncrof | Дата: Понедельник, 29 Августа 2011, 09:26 | Сообщение # 360 | Тема: Создание радара на стандартных функциях GM |
Lite Programmer
Сейчас нет на сайте
| аТнОтХоАн, изменил
|
|
| |
|