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

Алгоритм поиска пути и прорисовка его - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Undeclared identifier (cout, endl, cin) http://www.cyberforum.ru/cpp-beginners/thread1567849.html
#include "iostream" #include "stdafx.h" #include "cmath" #include "cstdio" using namespace std; int main(void) { int v; cout <<"Vvedite vozrast: "<<endl;
C++ Графы.Список смежности. Поиск в глубину Разработать программу, которая читает числа N, M - кол-во вершин и рёбер графа. Программа сохраняет граф в виде списка смежности и выполняет поиск в глубину. На экран нужно вывести вершины в порядке обхода, для каждой указать время начала и конца рассмотрения и указать предка в дереве обхода http://www.cyberforum.ru/cpp-beginners/thread1567825.html
Получить в файле Q все компоненты файла F, отвечающие условию C++
Также нужна помощь в решении этой задачи.Снимаю шляпу перед теми,кто поможет в этом. Дано файл F , компоненты которого являются целыми числами. Получить в файле Q все компоненты файла F , что: а) являются четными числами; б) делятся на 3 и не делятся на 7; в) являются точными квадратами.
Задано две квадратные матрицы. Найти последовательность из нолей и единиц b1, b2, …, bn C++
Задано две квадратные матрицы целых чисел порядка n. Найти последовательность из нолей и единиц b1, b2, …, bn такую, что bі =1, коли количество отрицательных и неотрицательных элементов і-й строки первой матрицы совпадает соответственно количеству отрицательных и неотрицательных элементов і-й строки второй матрицы. У меня уже есть наработки. # include <stdio.h> main() { int a, c, b, n, i,...
C++ Одномерный лабиринт http://www.cyberforum.ru/cpp-beginners/thread1567739.html
Очень нужна помощь с написанием программы! Заранее большое спасибо, кто поможет написать код для этой задачи :) Очень выручите В одномерном государстве жили одномерные люди. И всё остальное в этом государстве было тоже одномерное. Всё в их одномерном мире было просто и понятно: всего одна ось координат и всего два направления движения — вперёд и назад. Но даже в одномерном мире есть...
C++ Доработать код: изменение регистра символов, считанных из файла Добрый вечер уважаемые мастера! Вот решаю одну задаю ,уже написал такой код #include <iostream> #include <fstream> #include <ctype.h> подробнее

Показать сообщение отдельно
lenarano
1 / 1 / 0
Регистрация: 12.04.2014
Сообщений: 77
01.11.2015, 09:31     Алгоритм поиска пути и прорисовка его
Есть класс Карта
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#ifndef MAP_H
#define MAP_H
#include <SFML\Graphics.hpp>
class Map{
private:
int m_level;
 
public: 
   enum { HEIGHT_MAP=25, WIDTH_MAP=28 };
   sf::String TileMap[HEIGHT_MAP];
 
 Map();
 
 int getLevel();
 
 void setLevel(int level);
 
};
 
 
#endif
 
 
 
#include "map.h"
 
Map::Map()
 {
    setLevel(0);
 }
 
 int Map:: getLevel() { return m_level; }
 
  void Map:: setLevel(int level)
 {
    static const char* levelsMap[][HEIGHT_MAP] = {
      { 
    "0000000000000000000000000000",/* Инициализация 0-го уровня */
    "0                          0",
    "0                          0",
    "0  0 s0   0      0   0s 0  0",
    "0  0000   0mmmmmm0   0000  0",
    "0  0mm0   00000000   0mm0  0",
    "0                          0",
    "0                          0",
    "0  0mm0   000  000   0mm0  0",
    "0  0000   0      0   0000  0",
    "0  0mm0   0      0   0mm0  0",
    "t         000  000         T",
    "t                          T",
    "t                          T",
    "0  0mm0   00000000   0mm0  0",
    "0  0000            S 0000  0",
    "0  0mm0              0mm0  0",
    "0         00000000         0",
    "0                          0",
    "0  0mm0G             0mm0  0",
    "0  0000   00000000   0000  0",
    "0  0 s0              0s 0  0",
    "0                          0",
    "0                          0",
    "0000000000000000000000000000", },
    {"0000000000000000000000000000", /* Инициализация 1-го уровня */ 
    "0                          0",
    "0                          0",
    "0  0                    0  0",
    "0  0000              0000  0",
    "0  0      000  000      0  0",
    "0         0      0         0",
    "0         0      0         0",
    "0  0mm    000  000    mm0  0",
    "0  0000              0000  0",
    "0  0                    0  0",
    "t         00000000         T",
    "t           m00m           T",
    "t           m00m           T",
    "0  0      00000000      0  0",
    "0  0000              0000  0",
    "0  0                    0  0",
    "0                          0",
    "0      0000      0000      0",
    "0  0      0s    s0      0  0",
    "0  0  0   00000000   0  0  0",
    "0  0  0   0mmmmmm0   0  0  0",
    "0                          0",
    "0                          0",
    "0000000000000000000000000000", },
      { /* Инициализация 2-го уровня */ },
        };
   int levelsCount = sizeof(levelsMap) / sizeof(levelsMap[0]);
   if (level < 0 || level >= levelsCount)
     level = 0;
   m_level = level;
   for(int i=0; i < HEIGHT_MAP; i++)
     TileMap[i] = levelsMap[level][i];
 }
хочу реализовать в другом классе алгоритм поиска пути. Выбрала этот-он рабочий, т.к. тестила его, но там код не ООП.

Добавила в этот класс возможность обращаться к элементам карты.
C++
1
2
3
4
5
6
Enemy (Map* map,sf::Image &image,sf::String Name,float X, float Y, float W, float H): Entity(image,Name,X,Y,W,H){
        m_map=map;
        zq=1;state=left;timer=0;CurrentFrame=0;
        if(name=="EasyEnemy"){
            sprite.setTextureRect(sf::IntRect(0,0,w,h));
        }
Первая функция должна прорисовывать мою карту до и после преобразований. Вместо этого отображаются другие символы
C++
1
2
3
4
5
6
7
8
9
10
11
12
void display_maze(void)
{
        int i;
 
        printf("MAZE:\n");
        for ( i = 0; i < m_map->HEIGHT_MAP; i++ )
                printf("%.s\n", m_map->WIDTH_MAP, m_map->TileMap[i]);
         
        printf("\n");
 
        return;
}
Как правильно передавать значения в эту функцию , чтобы отображался мой массив.

Добавлено через 6 часов 46 минут


Добавлено через 57 минут
Я смогла вывести свой массив в класса Map, добавив пару строчек кода в void Map:: setLevel(int level)

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
void Map:: setLevel(int level)
 {
    static const char* levelsMap[][HEIGHT_MAP] = {
      { 
    /* Инициализация 0-го уровня */
 ...............
    "0  0000              0000  0",
    "0  0                    0  0",
    "0                          0",
    "0      0000      0000      0",
    "0  0      0s    s0      0  0",
    "0  0  0   00000000   0  0  0",
    "0  0  0   0mmmmmm0   0  0  0",
    "0                          0",
    "0                          0",
    "0000000000000000000000000000", },
      { /* Инициализация 2-го уровня */ },
        };
   int levelsCount = sizeof(levelsMap) / sizeof(levelsMap[0]);
   if (level < 0 || level >= levelsCount)
     level = 0;
   m_level = level;
   for(int i=0; i < HEIGHT_MAP; i++)
     {TileMap[i] = levelsMap[level][i];
      std::cout<<levelsMap[level][i];
       printf("\n");
     }
 }
{TileMap[i] = levelsMap[level][i];
std::cout<<levelsMap[level][i];
printf("\n");
}

Но я все же хочу отдельную функцию. Как мне реализовать ее? И какие значения передать? Что тут изменить?
void display_maze(void)
{
int i;

printf("MAZE:\n");
{TileMap[i] = levelsMap[level][i];//ругается,что эти индивикаторы не определены
std::cout<<levelsMap[level][i];
printf("\n");
}

return;
}

Добавлено через 4 минуты
Мне нужно передать наверное значение по ссылке , но я не понимаю как

Добавлено через 11 минут
попробовала вот так, хотя не уверена-ошибку подчеркивает

C++
1
2
3
4
5
6
7
8
9
10
11
12
void display_maze( sf::String TileMap,char* levelsMap[])
{
        int i;
 
        printf("MAZE:\n");
       {TileMap[i] = levelsMap[level][i];//ругается,что level не определен
      std::cout<<levelsMap[level][i];
       printf("\n");
     }
 
        return;
}
Добавлено через 7 минут
void display_maze( sf::String TileMap,char* levelsMap[][],int level)//массив не может содержать элементы этого типа

Добавлено через 8 минут
Ребята, очень нужна помощь и разъяснения
C++
1
2
3
4
5
6
7
8
9
10
11
12
void display_maze( sf::String TileMap,int level,char*levelsMap[][Map::HEIGHT_MAP])
{
    int i;
    printf("MAZE:\n");
    for(int i=0; i < Map::HEIGHT_MAP; i++)
    {TileMap[i] = levelsMap[level][i];//pЗначения типа char*нельзя присвоить сущности типа sf::Uint32
    std::cout<<levelsMap[level][i];
    printf("\n");
    }
 
    return;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru