Созданные ответы форума
-
АвторСообщения
-
В общем такая ситуация.
Пишу дипломную на тему: “Электронный справочник по городу”
Теперь нашел готовую дипломную, только нужно было заполнить главы чуть и сделать так чтобы программа запустилась.C++123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349#include <iostream.h>#include <graphics.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define ESC 27int A[5][5] ={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};int i, j;char *B[5][5] ={"Oxford", "King,s Road", "Carnaby", "Baker", "Whitehall","Downing", "Floral", "Dryden", "Macklin", "Cleveland","Howland", "Chitty", "Hanson", "Hallam", "Mansfield","Duchess", "Harley", "Wimpole", "Vere", "Barrett","Duke", "Wigmore", "Baker", "George", "Aybrook"};void Init(int&y1, int&y2, char *t1, char *t2);void soobh(int a, int b, int c, int k11, int k22);void linii(void);void marshrut(int a, int b, int c);int main(){do{char t1[80], t2[80];int y1 = 0, y2 = 0, k1, k2;clrscr();Init(y1, y2, t1, t2);linii();for (i = 0; i < 5; i++){for (j = 0; j < 5; j++){if (A[i][j] == y1)k1 = j;if (A[i][j] == y2)k2 = i;}}int per = A[k2][k1];marshrut(y1, y2, per);soobh(y1, y2, per, k1, k2);} while (getch() != ESC);closegraph();return 0;}void linii(){setcolor(7);setfillstyle(1, 7);line(35, 100, 635, 100);line(35, 180, 635, 180);line(35, 260, 635, 260);line(35, 340, 635, 340);line(35, 420, 635, 420);line(35, 100, 35, 415);line(159, 100, 159, 415);line(283, 100, 283, 415);line(407, 100, 407, 415);line(531, 100, 531, 415);char A[5];for (int i = 0; i<5; i++){for (int j = 0; j<5; j++){pieslice(35 + i * 124, 100 + j * 80, 0, 360, 4);outtextxy(45 + j * 125, 90 + i * 80, B[i][j]);}}int k = 1; setcolor(2);for (i = 0; i<5; i++){itoa(k, A, 10);outtextxy(35 + i * 124, 60, A);k++;}k = 1; setcolor(9);for (i = 0; i<5; i++){itoa(k, A, 10);outtextxy(5, 95 + i * 80, A);k++;}setcolor(2);setfillstyle(1, 2);bar(25, 451, 15, 445);setcolor(15);outtextxy(35, 445, "Номеравтобусов");setcolor(9);setfillstyle(1, 9);bar(25, 471, 15, 465);setcolor(15);outtextxy(35, 465, "Номертроллейбусов");}void marshrut(int a, int b, int c){int x1, y1, x2, y2, x3, y3;for (i = 0; i<5; i++){for (j = 0; j<5; j++){if (A[i][j] == a)x1 = i, y1 = j;}}for (i = 0; i<5; i++){for (j = 0; j<5; j++){if (A[i][j] == b)x2 = i, y2 = j;}}for (i = 0; i<5; i++){for (j = 0; j<5; j++){if (A[i][j] == c)x3 = i, y3 = j;}}setcolor(4);line(35 + y1 * 124, 100 + x1 * 80, 35 + y3 * 124, 100 + x3 * 80);line(35 + y3 * 124, 100 + x3 * 80, 35 + y2 * 124, 100 + x2 * 80);}void soobh(int a, int b, int c, int k11, int k22){int k1, k2,k3, k4;setcolor(14);for (i = 0; i<5; i++){for (j = 0; j<5; j++){if (A[i][j] == a){k1 = i;k2 = j;}if (A[i][j] == b){k3 = i;k4 = j;}}}k1++; k2++; k3++; k4++;if (k1 == k3){switch (k1){case 1:{outtextxy(200, 445, "Вам необходимо сесть на троллейбус номер 1");break;}case 2:{outtextxy(200, 445, "Вам необходимо сесть на троллейбус номер 2");break;}case 3:{outtextxy(200, 445, "Вам необходимо сесть на троллейбус номер 3");break;}case 4:{outtextxy(200, 445, "Вам необходимо сесть на троллейбус номер 4");break;}case 5:{outtextxy(200, 445, "Вам необходимо сесть на троллейбус номер 5");break;}}}else{switch (k2){case 1:{outtextxy(200, 445, "Вам необходимо сесть на автобус номер 1");break;}case 2:{outtextxy(200, 445, "Вам необходимо сесть на автобус номер 2");break;}case 3:{outtextxy(200, 445, "Вам необходимо сесть на автобус номер 3");break;}case 4:{outtextxy(200, 445, "Вам необходимо сесть на автобус номер 4");break;}case 5:{outtextxy(200, 445, "Вам необходимо сесть на автобус номер 5");break;}}}if (k1 == k3 || k2 == k4) outtextxy(200, 465, "Пересадок не требуется");else{switch (k3){case 1:{outtextxy(200, 465, "И на улице ");outtextxy(290, 465, B[k22][k11]);outtextxy(385, 465, "Пересесть на тролейбус номер 1");break;}case 2:{outtextxy(200, 465, "И на улице ");outtextxy(290, 465, B[k22][k11]);outtextxy(385, 465, "Пересесть на тролейбус номер 2");break;}case 3:{outtextxy(200, 465, "И на улице ");outtextxy(290, 465, B[k22][k11]);outtextxy(385, 465, "Пересесть на тролейбус номер 3");break;}case 4:{outtextxy(200, 465, "И на улице ");outtextxy(290, 465, B[k22][k11]);outtextxy(385, 465, "Пересесть на тролейбус номер 4");break;}case 5:{outtextxy(200, 465, "И на улице ");outtextxy(290, 465, B[k22][k11]);outtextxy(385, 465, "Пересесть на тролейбус номер 5");break;}}}}void Init(int&y1, int&y2, char *t1, char *t2){do{int DRIVER = DETECT, MODE;initgraph(&DRIVER, &MODE, "");linii();setcolor(15);if(y1 < 1 || y1 > 25){outtextxy(1, 1, "Ведите название улицы, на которой вы находитесь");gotoxy(1, 2);cin.getline(t1, 80);for (i = 0; i < 5; i++){for (j = 0; j < 5; j++){if (strcmp(B[i][j], t1) == 0)y1 = i * 5 + j + 1;}}}else{outtextxy(1, 1, "Ведите название улицы, на которой вы находитесь");gotoxy(1, 2);cout<< t1;}if (y1 < 1 || y1 > 25) continue;outtextxy(1, 35, "Введите название улицы назначения");gotoxy(1, 4);cin.getline(t2, 80);for (i = 0; i < 5; i++){for (j = 0; j < 5; j++){if (strcmp(B[i][j], t2) == 0)y2 = i * 5 + j + 1;}}} while ((y1 < 1 || y1 > 25) || (y2 < 1 || y2 > 25));}Написана эта программа на Borland C++, и к нему же Dosbox.
Мучился долго, и плюнул на этот Borland C++ с его Dosbox.
Начал искать другое связанное с графикой для Visual C++, и попал сюда.
Такой был довольный. Теперь столкнувшись с трудностями – не могу их решить.
Вот такая история.
Я вообще это всё написал с надеждой что кто-то поможет)). Если никто не ответит ну и хрен с ним.KindRedSan, хм. А теперь: “не существует подходящей функции преобразования из “sf::Vector2f” в “float” “.
Одну делаю другая выходит).KindRedSan, на Vector2 ругается. Что делать с ним?
Не дал мне еще раз сайт отредактировать свой комментарий.
Проблема: не могу получить во время цикла координаты x, y, какого-то элемента.KindRedSan, если сделать как вы сказали – Я думаю, это будет не правильно, так как с такой проблемой можно столкнутся и во время работы над другой программой. А как вы понимаете, каждый раз писать координаты каждого элемента карты в ручную – это не очень скажем удобно!
Описание программы:
1) Вводит пользователь место нахождение(т.е где он находится, а точнее улицу).
2) Вводит пользователь место прибытия(т.е куда он хочет попасть, а точнее улицу).
3) Теперь, программа имеет начальную и конечную точку. Нужно изменить элемент карты “-” или “|”(в зависимости от пути) на “=” или “||”.На этом всё!
У меня проблема только из-за того что я не могу получить в цикле прорисовки карты, а точнее:
C++123456789101112131415for (int i = 0; i < HEIGHT_MAP; i++)for (int j = 0; j < WIDTH_MAP; j++){Count = 0;switch (TileMap[i][j]){case '0': m.MapSr.setTextureRect(IntRect(64, 0, 32, 32)); break;case 'v': m.MapSr.setTextureRect(IntRect(32, 0, 32, 32)); break;case '-': m.MapSr.setTextureRect(IntRect(128, 0, 32, 32)); break;case '|': m.MapSr.setTextureRect(IntRect(96, 0, 32, 32)); break;default: m.MapSr.setTextureRect(IntRect(0, 0, 32, 32)); break;}m.MapSr.setPosition(j * 32, i * 32);window.draw(m.MapSr);}К примеру к случаю “v” написать сохрани в переменную сVertices[x][y]. Как-то так!
Решил добавить свой изменённый фрагмент кода:
C++1234567891011121314class MainText {public:Text text;MainText(const string &sText, const Font &font, unsigned int iSize, const Color &cColor,const Uint32 &uStyle, float x, float y){text.setString(sText);text.setFont(font);text.setCharacterSize(iSize);text.setFillColor(cColor);text.setStyle(uStyle);text.setPosition(Vector2f(x, y));}};Просто вывел весь код проекта.
Main.cpp:
C++123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207#include <SFML/Graphics.hpp>#include "map.h"#include "view.h"#include "iostream"#include "sstream"using namespace std;using namespace sf;class Map {public:float FloatOriginX, FloatOriginY, Width, Heigth;String File;Image MapIm;Texture MapTr;Sprite MapSr;Map(String Im){MapIm.loadFromFile("images/" + Im);MapTr.loadFromImage(MapIm);MapSr.setTexture(MapTr);}};char *StreetName[5][5] ={"Oxford", "King,s Road", "Carnaby", "Baker", "Whitehall","Downing", "Floral", "Dryden", "Macklin", "Cleveland","Howland", "Chitty", "Hanson", "Hallam", "Mansfield","Duchess", "Harley", "Wimpole", "Vere", "Barrett","Duke", "Wigmore", "Baker", "George", "Aybrook"};int StreetNum[5][5] ={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};class MainText {public:Text text;MainText(const string &sText, const Font &font, unsigned int iSize, const Color &cColor,const Uint32 &uStyle, float x, float y){text.setString(sText);text.setFont(font);text.setCharacterSize(iSize);text.setFillColor(cColor);text.setStyle(uStyle);text.setPosition(Vector2f(x, y));}};int main(){RenderWindow window(VideoMode(1120, 737), "Route");view.reset(FloatRect(0, 0, 1120, 737));Map m("labels.png");Font font; font.loadFromFile("fonts/CyrilicOld.ttf");float VertexPosX[25], VertexPosY[25];int Count;Clock clock;while (window.isOpen()){float time = clock.getElapsedTime().asMicroseconds();clock.restart();time = time / 800;Event event;while (window.pollEvent(event)){if (event.type == Event::Closed)window.close();}if (Keyboard::isKeyPressed(Keyboard::C)){Vector2i pixelPos = Mouse::getPosition(window);Vector2f pos = window.mapPixelToCoords(pixelPos);cout << pos.x << endl;cout << pos.y << endl;}ViewMap(time);window.setView(view);window.clear();for (int i = 0; i < HEIGHT_MAP; i++)for (int j = 0; j < WIDTH_MAP; j++){Count = 0;switch (TileMap[i][j]){case '0': m.MapSr.setTextureRect(IntRect(64, 0, 32, 32)); break;case 'v': m.MapSr.setTextureRect(IntRect(32, 0, 32, 32)); break;case '-': m.MapSr.setTextureRect(IntRect(128, 0, 32, 32)); break;case '|': m.MapSr.setTextureRect(IntRect(96, 0, 32, 32)); break;default: m.MapSr.setTextureRect(IntRect(0, 0, 32, 32)); break;}m.MapSr.setPosition(j * 32, i * 32);window.draw(m.MapSr);}MainText Number1X("1", font, 25, Color::Green, Text::Bold, 108, 50);MainText Number2X("2", font, 25, Color::Green, Text::Bold, 300, 50);MainText Number3X("3", font, 25, Color::Green, Text::Bold, 492, 50);MainText Number4X("4", font, 25, Color::Green, Text::Bold, 682, 50);MainText Number5X("5", font, 25, Color::Green, Text::Bold, 878, 50);MainText Number1Y("1", font, 25, Color::Blue, Text::Bold, 60, 94);MainText Number2Y("2", font, 25, Color::Blue, Text::Bold, 60, 222);MainText Number3Y("3", font, 25, Color::Blue, Text::Bold, 60, 350);MainText Number4Y("4", font, 25, Color::Blue, Text::Bold, 60, 480);MainText Number5Y("5", font, 25, Color::Blue, Text::Bold, 60, 607);MainText GreenCub("<>", font, 20, Color::Green, Text::Bold, 90, 640);MainText BlueCub("<>", font, 20, Color::Blue, Text::Bold, 90, 670);MainText NumberB("Номер автобусов", font, 20, Color::White, Text::Bold, 134, 640);MainText NumberT("Номер троллейбусов", font, 20, Color::White, Text::Bold, 134, 670);MainText V00(StreetName[0][0], font, 20, Color::White, Text::Bold, 145, 82);MainText V01(StreetName[0][1], font, 20, Color::White, Text::Bold, 340, 82);MainText V02(StreetName[0][2], font, 20, Color::White, Text::Bold, 550, 82);MainText V03(StreetName[0][3], font, 20, Color::White, Text::Bold, 730, 82);MainText V04(StreetName[0][4], font, 20, Color::White, Text::Bold, 915, 82);MainText V10(StreetName[1][0], font, 20, Color::White, Text::Bold, 160, 210);MainText V11(StreetName[1][1], font, 20, Color::White, Text::Bold, 355, 210);MainText V12(StreetName[1][2], font, 20, Color::White, Text::Bold, 525, 210);MainText V13(StreetName[1][3], font, 20, Color::White, Text::Bold, 730, 210);MainText V14(StreetName[1][4], font, 20, Color::White, Text::Bold, 908, 210);MainText V20(StreetName[2][0], font, 20, Color::White, Text::Bold, 150, 339);MainText V21(StreetName[2][1], font, 20, Color::White, Text::Bold, 350, 339);MainText V22(StreetName[2][2], font, 20, Color::White, Text::Bold, 540, 339);MainText V23(StreetName[2][3], font, 20, Color::White, Text::Bold, 745, 339);MainText V24(StreetName[2][4], font, 20, Color::White, Text::Bold, 910, 339);MainText V30(StreetName[3][0], font, 20, Color::White, Text::Bold, 150, 467);MainText V31(StreetName[3][1], font, 20, Color::White, Text::Bold, 350, 467);MainText V32(StreetName[3][2], font, 20, Color::White, Text::Bold, 550, 467);MainText V33(StreetName[3][3], font, 20, Color::White, Text::Bold, 750, 467);MainText V34(StreetName[3][4], font, 20, Color::White, Text::Bold, 930, 467);MainText V40(StreetName[4][0], font, 20, Color::White, Text::Bold, 150, 595);MainText V41(StreetName[4][1], font, 20, Color::White, Text::Bold, 340, 595);MainText V42(StreetName[4][2], font, 20, Color::White, Text::Bold, 550, 595);MainText V43(StreetName[4][3], font, 20, Color::White, Text::Bold, 745, 595);MainText V44(StreetName[4][4], font, 20, Color::White, Text::Bold, 915, 595);window.draw(Number1X.text);window.draw(Number2X.text);window.draw(Number3X.text);window.draw(Number4X.text);window.draw(Number5X.text);window.draw(Number1Y.text);window.draw(Number2Y.text);window.draw(Number3Y.text);window.draw(Number4Y.text);window.draw(Number5Y.text);window.draw(GreenCub.text);window.draw(BlueCub.text);window.draw(NumberB.text);window.draw(NumberT.text);window.draw(V00.text);window.draw(V01.text);window.draw(V02.text);window.draw(V03.text);window.draw(V04.text);window.draw(V10.text);window.draw(V11.text);window.draw(V12.text);window.draw(V13.text);window.draw(V14.text);window.draw(V20.text);window.draw(V21.text);window.draw(V22.text);window.draw(V23.text);window.draw(V24.text);window.draw(V30.text);window.draw(V31.text);window.draw(V32.text);window.draw(V33.text);window.draw(V34.text);window.draw(V40.text);window.draw(V41.text);window.draw(V42.text);window.draw(V43.text);window.draw(V44.text);window.display();}return 0;}Map.h:
C++12345678910111213141516171819202122232425262728293031323334#include <SFML/Graphics.hpp>using namespace sf;using namespace std;const int HEIGHT_MAP = 23;//размер карты высотаconst int WIDTH_MAP = 35;//размер карты ширинаString TileMap[HEIGHT_MAP] = {"00000000000000000000000000000000000","0 0","0 0","0 v-----v-----v-----v-----v----- 0","0 | | | | | 0","0 | | | | | 0","0 | | | | | 0","0 v-----v-----v-----v-----v----- 0","0 | | | | | 0","0 | | | | | 0","0 | | | | | 0","0 v-----v-----v-----v-----v----- 0","0 | | | | | 0","0 | | | | | 0","0 | | | | | 0","0 v-----v-----v-----v-----v----- 0","0 | | | | | 0","0 | | | | | 0","0 | | | | | 0","0 v-----v-----v-----v-----v----- 0","0 0","0 0","00000000000000000000000000000000000",};View.h:
C++1234567891011121314#include <SFML/Graphics.hpp>using namespace std;using namespace sf;View view;View ViewMap(float time){if (Keyboard::isKeyPressed(Keyboard::W)) view.move(0, -0.1*time);if (Keyboard::isKeyPressed(Keyboard::S)) view.move(0, 0.1*time);if (Keyboard::isKeyPressed(Keyboard::D)) view.move(0.1*time, 0);if (Keyboard::isKeyPressed(Keyboard::A)) view.move(-0.1*time, 0);if (Keyboard::isKeyPressed(Keyboard::Q)) view.setCenter(560, 369);return view;}tobidashi, а что если я скажу вам, что цифры просто текст(т.е вывел просто текст и всё)?
Нумерация, вершины и ребра указаны во вложенной картинке посмотрите пожалуйста.
Я специально отредактировал через Paint screenshot, чтобы вы поняли что я имею ввиду.Вложения:
You must be logged in to view attached files.tobidashi, ваше решение прям то что надо.
Спасибо! -
АвторСообщения