Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Tiled Map и волновой алгоритм - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Движение объекта в случайном направлении http://www.cyberforum.ru/cpp-beginners/thread1556072.html
Добрый день) Не могли бы вы помочь? Мне дано поле 20х20, и нужно смоделировать движение объекта (точка с координатами), которое движется на одну единицу в одном из четырёх направлений (вверх, вниз,...
C++ Поясните за код (листинг из Мюссера : Справочное руководство по STL) Добрый день. Вот код : // Demonstrating STL vector constructors with a user-defined // type and showing copying explicitly #include <iostream> #include <cassert> #include <vector> using... http://www.cyberforum.ru/cpp-beginners/thread1556043.html
C++ Вектор объектов "Студент"
Домашнее задание. vector. Описать класс "студент" с полями: имя, фамилия, курс. Переопределить у этого класса оператор вывода в поток. Написать функцию заполнения вектора из класса "студент"...
Работа с SVG C++ C++
Всем Добрый день! Прошу помощи по следующему вопросу: Стоит задача получить из SVG файла координаты точек и типы фигур, из которых состоит изображение. Посоветуйте,пожалуйста, библиотеку для...
C++ Проверить, есть ли среди элементов главной диагонали матрицы A (5×5) положительные и есть ли среди элементов г http://www.cyberforum.ru/cpp-beginners/thread1556026.html
Проверить, есть ли среди элементов главной диагонали матрицы A (5×5) положительные и есть ли среди элементов главной диагонали матрицы B (4×4) элементы, большие единицы
C++ Неправильный подсчет количества треугольников Здравствуйте, уважаемые пользователи. Вынужден обратиться к Вам за помощью, так как сам просто не понимаю, в чем беда. Передо мной поставлена следующая задача: На вход в программу подается набор пар... подробнее

Показать сообщение отдельно
lenarano
1 / 1 / 0
Регистрация: 12.04.2014
Сообщений: 83
19.10.2015, 13:45  [ТС]
У меня есть объекты на карте(стена,герой, привидения, бонусы).Я для каждого моего класса передаю объекты с каким то именем и проверяю пересечение с ними, между ними. В зависимости от этого что-то происходит.
Вот к примеру как у парня на сайте.
http://http://http//kychka-pc.ru/sfm...-dlya-igr.html
И есть алгоритм, который я нашла и разобрала
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
void find_path(int N,int M)
{
    struct t{
        int x, y;
    };
    t Q[10000], S, G;
    int i_st=0, i_end=1, t, i, j, a[100][100]={0};
    for(i=0; i<N; i++)
        for(j=0; j<M; j++)
        {
            if(wayToPacMan[i][j]=='G') {G.x=i; G.y=j;}
            if(wayToPacMan[i][j]=='S') {S.x=i; S.y=j;}
        }
    a[G.x][G.y]=1;
    Q[0].x=G.x; Q[0].y=G.y;
    while(i_st<i_end)
    {
        if(a[Q[i_st].x-1][Q[i_st].y]==0 && wayToPacMan[Q[i_st].x-1][Q[i_st].y]!='#')
        {
            Q[i_end].x=Q[i_st].x-1; Q[i_end++].y=Q[i_st].y;
            a[Q[i_st].x-1][Q[i_st].y]=a[Q[i_st].x][Q[i_st].y]+1;
        }
        if(a[Q[i_st].x+1][Q[i_st].y]==0 && wayToPacMan[Q[i_st].x+1][Q[i_st].y]!='#')
        {
            Q[i_end].x=Q[i_st].x+1; Q[i_end++].y=Q[i_st].y;
            a[Q[i_st].x+1][Q[i_st].y]=a[Q[i_st].x][Q[i_st].y]+1;
        }
        if(a[Q[i_st].x][Q[i_st].y-1]==0 && wayToPacMan[Q[i_st].x][Q[i_st].y-1]!='#')
        {
            Q[i_end].x=Q[i_st].x; Q[i_end++].y=Q[i_st].y-1;
            a[Q[i_st].x][Q[i_st].y-1]=a[Q[i_st].x][Q[i_st].y]+1;
        }
        if(a[Q[i_st].x][Q[i_st].y+1]==0 && wayToPacMan[Q[i_st].x][Q[i_st].y+1]!='#')
        {
            Q[i_end].x=Q[i_st].x; Q[i_end++].y=Q[i_st].y+1;
            a[Q[i_st].x][Q[i_st].y+1]=a[Q[i_st].x][Q[i_st].y]+1;
        }
        i_st++;
    }
    if(a[S.x][S.y]==0)
        cout<<"No way"<<endl;
    else
    {
        t=a[S.x][S.y];
        while(t>1)
        {
            if(a[S.x-1][S.y]==t-1)
            {
                wayToPacMan[S.x-1][S.y]='+';
                S.x--; t--;
            }
            else
            if(a[S.x+1][S.y]==t-1)
            {
                wayToPacMan[S.x+1][S.y]='+';
                S.x++; t--;
            }
            else
            if(a[S.x][S.y-1]==t-1)
            {
                wayToPacMan[S.x][S.y-1]='+';
                S.y--; t--;
            }
            else
            if(a[S.x][S.y+1]==t-1)
            {
                wayToPacMan[S.x][S.y+1]='+';
                S.y++; t--;
            }
        }
    }
}
Я не понимаю как их совместить((( И того как другие совмещают не нахожу.

Добавлено через 12 минут
Я не понимаю к чему привязывать эту волну. Создать еще один массив аналогичный моей карте, чтобы была карта.tmx, карта аналогичная ей, но где все заменено символами и карта заполненная нулями и потом 1 где стоит мой герой....
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru