Вторник, 09 Августа 2022, 00:56

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » MrIncrof [364]
Результаты поиска
MrIncrofДата: Вторник, 30 Августа 2011, 12:41 | Сообщение # 341 | Тема: Ошибка при установке .gex расширения.
Lite Programmer
Сейчас нет на сайте
vasyan555, ПКМ по ярлыку, нажимаешь: "Запустить от имени администратора" и всё cool
MrIncrofДата: Вторник, 30 Августа 2011, 12:16 | Сообщение # 342 | Тема: создание игры на с++
Lite Programmer
Сейчас нет на сайте
Quote (4aBo)
начинай с пекменов, лабиринтов и арконоидов

wacko wacko wacko
MrIncrofДата: Вторник, 30 Августа 2011, 12:12 | Сообщение # 343 | Тема: создание игры на с++
Lite Programmer
Сейчас нет на сайте
z-z, 3Д это уже не просто, начинай с пекменов, лабиринтов и арконоидов, а потом от простого к сложному. Вот эта фраза говорит сама за себя:
Quote (z-z)
язык, можно сказать, не знаю

Раз не знаешь, значит пока учись, учись и ещё раз учись!
MrIncrofДата: Вторник, 30 Августа 2011, 12:02 | Сообщение # 344 | Тема: создание игры на с++
Lite Programmer
Сейчас нет на сайте
z-z, какая игра, пространство? Подробнее об игре напиши! angry
MrIncrofДата: Вторник, 30 Августа 2011, 11:46 | Сообщение # 345 | Тема: Массивы и метки в C++
Lite Programmer
Сейчас нет на сайте
Привет, сейчас мы рассмотрим массивы и метки, массивы - это своеобразные стопки в одной переменной, массивы в языке С++ задаются так, сначала вызывается обычная переменная, только со скобками [], внутри которых нужно прописать количество значений в стопке, например, можно написать:
Code
int Massive[5];

В этом коде мы задали количество значений в стопке на 5. Теперь посмотрим на метки, метки задаются переменной, только без всякого оператора, но с двоеточием (:) в конце, например:
Code
GOTO1:
SUPER:
TEST:

И так далее, переход к меткам осуществляется оператором goto, например, чтобы переместиться к метке SUPER, нам нужно прописать:
Code
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
biggrin Плюсики желательны biggrin


Сообщение отредактировал 4aBo - Вторник, 30 Августа 2011, 11:57
MrIncrofДата: Вторник, 30 Августа 2011, 10:35 | Сообщение # 346 | Тема: Создаём DOS игру на Visual C++ 2010
Lite Programmer
Сейчас нет на сайте
Demeron, обязательно, я уже пробовал, там непонятные символы cool

Сообщение отредактировал 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, до скорой встречи! biggrin


Сообщение отредактировал 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, спасибо biggrin
BrightSpot, если отдашь исходник, тогда тот кто его скачал может изменить его и выдать за свою игру, проблема решается модами.
Demeron, ты прав, проще сделать DLL.
Quote (Demeron)
Лучше бы сделал урок как подключать DLL и выполнять определенную функцию (или брать из нее параметры для игры).

По-подробнее, в ЛС отправь
MrIncrofДата: Вторник, 30 Августа 2011, 06:35 | Сообщение # 351 | Тема: Smile team
Lite Programmer
Сейчас нет на сайте
Laush, могу к вам пойти, мне всё равно заняться нечем happy
MrIncrofДата: Понедельник, 29 Августа 2011, 18:20 | Сообщение # 352 | Тема: Временное название - "ССД"
Lite Programmer
Сейчас нет на сайте
Уайльд, нужно быть модером wacko
MrIncrofДата: Понедельник, 29 Августа 2011, 18:16 | Сообщение # 353 | Тема: Временное название - "ССД"
Lite Programmer
Сейчас нет на сайте
Уайльд, создал тему не в том разделе! angry
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, не знаю, у меня всё работает wink
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
Сейчас нет на сайте
аТнОтХоАн, изменил cool
Форум игроделов » Записи участника » MrIncrof [364]
Поиск:

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