diff --git a/3D Labyrinth Console/.vs/3D Labirint Console/v14/.suo b/3D Labyrinth Console/.vs/3D Labirint Console/v14/.suo new file mode 100644 index 0000000..0c8d257 Binary files /dev/null and b/3D Labyrinth Console/.vs/3D Labirint Console/v14/.suo differ diff --git a/3D Labyrinth Console/3D Labirint Console.VC.db b/3D Labyrinth Console/3D Labirint Console.VC.db new file mode 100644 index 0000000..3f0b472 Binary files /dev/null and b/3D Labyrinth Console/3D Labirint Console.VC.db differ diff --git a/3D Labyrinth Console/3D Labirint Console.sln b/3D Labyrinth Console/3D Labirint Console.sln new file mode 100644 index 0000000..89c5a64 --- /dev/null +++ b/3D Labyrinth Console/3D Labirint Console.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3D Labirint Console", "3D Labirint Console\3D Labirint Console.vcxproj", "{EA745E6B-7679-4EA1-8B29-B3D91AF0C747}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EA745E6B-7679-4EA1-8B29-B3D91AF0C747}.Debug|x64.ActiveCfg = Debug|x64 + {EA745E6B-7679-4EA1-8B29-B3D91AF0C747}.Debug|x64.Build.0 = Debug|x64 + {EA745E6B-7679-4EA1-8B29-B3D91AF0C747}.Debug|x86.ActiveCfg = Debug|Win32 + {EA745E6B-7679-4EA1-8B29-B3D91AF0C747}.Debug|x86.Build.0 = Debug|Win32 + {EA745E6B-7679-4EA1-8B29-B3D91AF0C747}.Release|x64.ActiveCfg = Release|x64 + {EA745E6B-7679-4EA1-8B29-B3D91AF0C747}.Release|x64.Build.0 = Release|x64 + {EA745E6B-7679-4EA1-8B29-B3D91AF0C747}.Release|x86.ActiveCfg = Release|Win32 + {EA745E6B-7679-4EA1-8B29-B3D91AF0C747}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/3D Labyrinth Console/3D Labirint Console/3D Labirint Console.vcxproj b/3D Labyrinth Console/3D Labirint Console/3D Labirint Console.vcxproj new file mode 100644 index 0000000..dfa32b1 --- /dev/null +++ b/3D Labyrinth Console/3D Labirint Console/3D Labirint Console.vcxproj @@ -0,0 +1,150 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + {EA745E6B-7679-4EA1-8B29-B3D91AF0C747} + Win32Proj + My3DLabirintConsole + 8.1 + + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + Application + true + v140 + Unicode + + + Application + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + + + + + + + Level3 + Disabled + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + true + true + + + + + Level3 + + + MaxSpeed + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/3D Labyrinth Console/3D Labirint Console/3D Labirint Console.vcxproj.filters b/3D Labyrinth Console/3D Labirint Console/3D Labirint Console.vcxproj.filters new file mode 100644 index 0000000..0d8d9e4 --- /dev/null +++ b/3D Labyrinth Console/3D Labirint Console/3D Labirint Console.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + \ No newline at end of file diff --git a/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/3D Labirint Console.lastbuildstate b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/3D Labirint Console.lastbuildstate new file mode 100644 index 0000000..4d64129 --- /dev/null +++ b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/3D Labirint Console.lastbuildstate @@ -0,0 +1,2 @@ +#TargetFrameworkVersion=v4.0:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1 +Debug|Win32|E:\Projects\3D Labirint recreation\3D Labirint Console\| diff --git a/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/CL.command.1.tlog b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/CL.command.1.tlog new file mode 100644 index 0000000..884b520 Binary files /dev/null and b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/CL.command.1.tlog differ diff --git a/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/CL.read.1.tlog b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/CL.read.1.tlog new file mode 100644 index 0000000..a34b26a Binary files /dev/null and b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/CL.read.1.tlog differ diff --git a/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/CL.write.1.tlog b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/CL.write.1.tlog new file mode 100644 index 0000000..574dda0 Binary files /dev/null and b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/CL.write.1.tlog differ diff --git a/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/link.command.1.tlog b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/link.command.1.tlog new file mode 100644 index 0000000..b40fb77 Binary files /dev/null and b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/link.command.1.tlog differ diff --git a/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/link.read.1.tlog b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/link.read.1.tlog new file mode 100644 index 0000000..1962821 Binary files /dev/null and b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/link.read.1.tlog differ diff --git a/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/link.write.1.tlog b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/link.write.1.tlog new file mode 100644 index 0000000..74ac194 Binary files /dev/null and b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labir.EA745E6B.tlog/link.write.1.tlog differ diff --git a/3D Labyrinth Console/3D Labirint Console/Debug/3D Labirint Console.log b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labirint Console.log new file mode 100644 index 0000000..7d31e4c --- /dev/null +++ b/3D Labyrinth Console/3D Labirint Console/Debug/3D Labirint Console.log @@ -0,0 +1,8 @@ + main.cpp +e:\projects\3d labirint recreation\3d labirint console\3d labirint console\main.cpp(121): warning C4305: 'argument': truncation from 'double' to 'float' +e:\projects\3d labirint recreation\3d labirint console\3d labirint console\main.cpp(1164): warning C4305: 'argument': truncation from 'double' to 'float' +e:\projects\3d labirint recreation\3d labirint console\3d labirint console\main.cpp(1171): warning C4305: 'argument': truncation from 'double' to 'float' +e:\projects\3d labirint recreation\3d labirint console\3d labirint console\main.cpp(1177): warning C4305: 'argument': truncation from 'double' to 'float' +e:\projects\3d labirint recreation\3d labirint console\3d labirint console\main.cpp(1184): warning C4305: 'argument': truncation from 'double' to 'float' + 3D Labirint Console.vcxproj -> E:\Projects\3D Labirint recreation\3D Labirint Console\Debug\3D Labirint Console.exe + 3D Labirint Console.vcxproj -> E:\Projects\3D Labirint recreation\3D Labirint Console\Debug\3D Labirint Console.pdb (Full PDB) diff --git a/3D Labyrinth Console/3D Labirint Console/Debug/Source.obj b/3D Labyrinth Console/3D Labirint Console/Debug/Source.obj new file mode 100644 index 0000000..168817c Binary files /dev/null and b/3D Labyrinth Console/3D Labirint Console/Debug/Source.obj differ diff --git a/3D Labyrinth Console/3D Labirint Console/Debug/main.obj b/3D Labyrinth Console/3D Labirint Console/Debug/main.obj new file mode 100644 index 0000000..d83a0fa Binary files /dev/null and b/3D Labyrinth Console/3D Labirint Console/Debug/main.obj differ diff --git a/3D Labyrinth Console/3D Labirint Console/Debug/vc140.idb b/3D Labyrinth Console/3D Labirint Console/Debug/vc140.idb new file mode 100644 index 0000000..2a69e43 Binary files /dev/null and b/3D Labyrinth Console/3D Labirint Console/Debug/vc140.idb differ diff --git a/3D Labyrinth Console/3D Labirint Console/Debug/vc140.pdb b/3D Labyrinth Console/3D Labirint Console/Debug/vc140.pdb new file mode 100644 index 0000000..10095a4 Binary files /dev/null and b/3D Labyrinth Console/3D Labirint Console/Debug/vc140.pdb differ diff --git a/3D Labyrinth Console/3D Labirint Console/main.cpp b/3D Labyrinth Console/3D Labirint Console/main.cpp new file mode 100644 index 0000000..95a4187 --- /dev/null +++ b/3D Labyrinth Console/3D Labirint Console/main.cpp @@ -0,0 +1,1260 @@ +#include // std::this_thread::sleep_for +#include // std::chrono::seconds +#include +#include +#include +#include +#define XMAX 16 +#define YMAX 9 + +class ConsoleLCD +{ +private: + bool pixels[84][48]; +public: + void init() + { + clear(); + } + + void clear() + { + for (int i = 0; i < 84; i++) + { + for (int j = 0; j < 48; j++) + { + pixels[i][j] = false; + } + } + system("cls"); + } + + void refresh() + { + std::cout << char(201); + for (int i = 0; i < 84; i++) { + std::cout << char(205); + } + std::cout << char(187); + for (int i = 0; i < 48; i++) + { + std::cout << char(186); + for (int j = 0; j < 84; j++) + { + if (pixels[j][i]) + { + std::cout << char(178); + } + else + { + std::cout << " "; + } + } + std::cout << char(186); + std::cout << std::endl; + } + std::cout << char(200); + for (int i = 0; i < 84; i++) { + std::cout << char(205); + } + std::cout << char(188); + } + + void setPixel(int x, int y) + { + if(x >= 0 && x < 84 && y >= 0 && y < 48) + { + pixels[x][48 - y] = true; + } + } + + void printString(std::string string, int x, int y) { + std::cout << string << std::endl; + } +}; + +ConsoleLCD lcd; + +float Ox; +float Oy; +bool SW; + + + +void wait(float time) +{ + std::this_thread::sleep_for(std::chrono::milliseconds(long(time * 1000))); +} + + +void readInput() { + while (1) + { + + Ox = 0.5; + Oy = 0.5; + SW = false; + + char input = _getch(); + + switch (input) + { + case ' ': + SW = true; + break; + case 'w': + Oy = 1; + break; + case 's': + Oy = 0; + break; + case 'a': + Ox = 0; + break; + case 'd': + Ox = 1; + break; + default: + break; + } + + wait(0.1); + } +} + +char mapa[9][16][4] = { + { { '1','0','1','1' },{ '0','1','1','0' },{ '0','0','1','1' },{ '1','0','1','0' },{ '1','0','1','0' },{ '1','0','1','0' },{ '0','1','1','0' },{ '0','1','1','1' },{ '0','0','1','1' },{ '1','0','1','0' },{ '1','1','1','0' },{ '0','0','1','1' },{ '0','1','1','0' },{ '0','0','1','1' },{ '0','0','1','0' },{ '1','1','1','0' } }, + { { '0','1','1','1' },{ '0','1','0','1' },{ '1','0','0','1' },{ '1','0','1','0' },{ '0','1','1','0' },{ '0','1','1','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','0','1','1' },{ '1','0','1','0' },{ '1','1','0','0' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','0','1','1' } }, + { { '0','0','0','1' },{ '1','0','0','0' },{ '1','0','1','0' },{ '0','1','1','0' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '1','0','0','1' },{ '0','0','0','0' },{ '0','0','0','0' },{ '1','0','1','0' },{ '0','1','1','0' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' } }, + { { '0','1','0','1' },{ '0','0','1','1' },{ '0','1','1','0' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '1','0','0','1' },{ '0','1','1','0' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','0','1','1' },{ '0','1','0','0' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' } }, + { { '0','1','0','1' },{ '0','1','0','1' },{ '1','0','0','1' },{ '1','1','0','0' },{ '1','0','0','1' },{ '1','0','0','0' },{ '1','1','1','0' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '1','1','0','1' },{ '0','1','0','1' } }, + { { '0','1','0','1' },{ '0','0','0','1' },{ '1','0','1','0' },{ '1','0','1','0' },{ '1','0','1','0' },{ '0','1','1','0' },{ '0','0','1','1' },{ '0','1','0','0' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '1','0','0','1' },{ '1','0','0','0' },{ '1','0','0','0' },{ '1','1','0','0' } }, + { { '0','1','0','1' },{ '0','0','0','1' },{ '0','0','1','0' },{ '1','0','1','0' },{ '0','1','1','0' },{ '0','1','0','1' },{ '1','1','0','1' },{ '0','1','0','1' },{ '1','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','1','0','1' },{ '0','0','1','1' },{ '1','0','1','0' },{ '1','0','1','0' },{ '0','1','1','0' } }, + { { '1','1','0','1' },{ '0','1','0','1' },{ '1','0','0','1' },{ '1','1','1','0' },{ '0','1','0','1' },{ '1','0','0','1' },{ '1','0','1','0' },{ '1','0','0','0' },{ '1','0','1','0' },{ '1','1','0','0' },{ '1','0','0','1' },{ '1','1','0','0' },{ '0','1','0','1' },{ '0','0','1','1' },{ '1','1','1','0' },{ '0','1','0','1' } }, + { { '1','0','1','0' },{ '1','0','0','0' },{ '1','0','1','0' },{ '1','0','1','0' },{ '1','0','0','0' },{ '1','0','1','0' },{ '1','0','1','0' },{ '1','0','1','0' },{ '1','0','1','0' },{ '1','0','1','0' },{ '1','0','1','0' },{ '1','0','1','0' },{ '1','0','0','1' },{ '1','0','0','1' },{ '1','0','1','0' },{ '1','1','0','0' } } +}; + +char x = 0, y = 8; // pozicija igraca +char orijentacija = 1; // 0-3 + +class Timer +{ +private: + unsigned long begTime; + unsigned long endTime = 0; +public: + void start() + { + begTime = clock(); + } + + unsigned long read_ms() + { + if (endTime == 0) + { + return ((unsigned long)clock() - begTime) / CLOCKS_PER_SEC; + } + else { + return(endTime - begTime) / CLOCKS_PER_SEC; + } + } + + void stop() + { + endTime = clock(); + } +}; + +void crtaj2D() +{ + lcd.clear(); + for (int i = 0; i<9; i++) + for (int j = 0; j<16; j++) + { + + if (mapa[8 - i][j][2] == '1') + { + for (int k = 0; k<5; k++) + lcd.setPixel(j * 5 + k, (i + 1) * 5); + } + if (mapa[8 - i][j][1] == '1') + { + for (int k = 0; k<5; k++) + lcd.setPixel((j + 1) * 5, i * 5 + k); + } + if (mapa[8 - i][j][0] == '1') + { + for (int k = 0; k<5; k++) + lcd.setPixel(j * 5 + k, i * 5); + } + if (mapa[8 - i][j][3] == '1') + { + for (int k = 0; k<5; k++) + lcd.setPixel(j * 5, i * 5 + k); + } + } + int py = 8 - y; + switch (orijentacija) + { + case 2: + for (int j = 0; j < 5; j++) + lcd.setPixel(x * 5 + 2, py * 5 + j); + lcd.setPixel(x * 5 + 4, py * 5 + 2); + lcd.setPixel(x * 5 + 3, py * 5 + 3); + lcd.setPixel(x * 5 + 1, py * 5 + 3); + lcd.setPixel(x * 5 + 0, py * 5 + 2); + break; + case 1: + for (int i = 0; i < 5; i++) + lcd.setPixel(x * 5 + i, py * 5 + 2); + lcd.setPixel(x * 5 + 2, py * 5 + 4); + lcd.setPixel(x * 5 + 3, py * 5 + 3); + lcd.setPixel(x * 5 + 3, py * 5 + 1); + lcd.setPixel(x * 5 + 2, py * 5 + 0); + break; + case 0: + for (int j = 0; j < 5; j++) + lcd.setPixel(x * 5 + 2, py * 5 + j); + lcd.setPixel(x * 5 + 4, py * 5 + 2); + lcd.setPixel(x * 5 + 3, py * 5 + 1); + lcd.setPixel(x * 5 + 1, py * 5 + 1); + lcd.setPixel(x * 5 + 0, py * 5 + 2); + break; + case 3: + for (int i = 0; i < 5; i++) + lcd.setPixel(x * 5 + i, py * 5 + 2); + lcd.setPixel(x * 5 + 2, py * 5 + 4); + lcd.setPixel(x * 5 + 1, py * 5 + 3); + lcd.setPixel(x * 5 + 1, py * 5 + 1); + lcd.setPixel(x * 5 + 2, py * 5 + 0); + break; + } + lcd.refresh(); +} + + +void rotirajDesno() +{ + orijentacija++; + if (orijentacija > 3) + orijentacija = 0; +} + +void rotirajLijevo() +{ + if (orijentacija == 0) + orijentacija = 3; + else + orijentacija--; +} + +bool mozePravo() +{ + switch (orijentacija) + { + case 0: + if (y == YMAX) + return false; + if (mapa[y][x][0] == '0' && mapa[y + 1][x][2] == '0') + return true; + break; + case 1: + if (x == XMAX) + return false; + if (mapa[y][x][1] == '0' && mapa[y][x + 1][3] == '0') + return true; + break; + case 2: + if (y == 0) + return false; + if (mapa[y][x][2] == '0' && mapa[y - 1][x][0] == '0') + return true; + break; + case 3: + if (x == 0) + return false; + if (mapa[y][x][3] == '0' && mapa[y][x - 1][1] == '0') + return true; + break; + } + return true; +} + +void pravo() +{ + switch (orijentacija) + { + case 0: + if (y == YMAX) + break; + if (mapa[y][x][0] == '0' && mapa[y + 1][x][2] == '0') + y++; + break; + case 1: + if (x == XMAX) + break; + if (mapa[y][x][1] == '0' && mapa[y][x + 1][3] == '0') + x++; + break; + case 2: + if (y == 0) + break; + if (mapa[y][x][2] == '0' && mapa[y - 1][x][0] == '0') + y--; + break; + case 3: + if (x == 0) + break; + if (mapa[y][x][3] == '0' && mapa[y][x - 1][1] == '0') + x--; + break; + } +} + +void linije() +{ + for (int i = 0; i<28; i++) + for (int j = 0; j < 36; j++) + if (36.0 / 28.0*i - j < 1 && 36.0 / 28.0*i - j > -1) + lcd.setPixel(i, j); + for (int i = 0; i < 28; i++) + for (int j = 0; j < 36; j++) + if (-36.0 / 28.0*(i - 28) - j < 1 && -36.0 / 28.0*(i - 28) - j > -1) + lcd.setPixel(i + 56, j); + for (int i = 0; i < 84; i++) + lcd.setPixel(i, 24); + for (int j = 24; j<48; j++) + { + lcd.setPixel(18, j); + lcd.setPixel(66, j); + } + for (int j = 36; j < 48; j++) + { + lcd.setPixel(28, j); + lcd.setPixel(56, j); + } + for (int i = 28; i < 56; i++) + lcd.setPixel(i, 36); +} + +void desni() +{ + for (int i = 0; i < 18; i++) + for (int j = 0; j < 24; j++) + if (36.0 / 28.0*i - j < 1) + lcd.setPixel(i, j); + for (int j = 24; j<48; j++) + for (int i = 0; i < 18; i++) + lcd.setPixel(i, j); +} + +void lijevi() +{ + for (int i = 0; i < 28; i++) + for (int j = 0; j < 24; j++) + if (-36.0 / 28.0*(i - 28) - j < 1) + lcd.setPixel(i + 56, j); + for (int j = 24; j<48; j++) + for (int i = 0; i < 18; i++) + lcd.setPixel(i + 66, j); +} + +void skriveniDesni() +{ + for (int j = 24; j<48; j++) + for (int i = 0; i < 18; i++) + lcd.setPixel(i, j); +} + +void skriveniLijevi() +{ + for (int j = 24; j<48; j++) + for (int i = 0; i < 18; i++) + lcd.setPixel(i + 66, j); +} + +void daljiDesni() +{ + for (int i = 18; i<28; i++) + for (int j = 24; j < 36; j++) + if (36.0 / 28.0*i - j < 1) + lcd.setPixel(i, j); + for (int j = 36; j<48; j++) + for (int i = 18; i < 28; i++) + lcd.setPixel(i, j); +} + +void daljiLijevi() +{ + for (int i = 0; i < 10; i++) + for (int j = 24; j < 36; j++) + if (-36.0 / 28.0*(i - 28) - j < 1) + lcd.setPixel(i + 56, j); + for (int j = 36; j<48; j++) + for (int i = 0; i < 10; i++) + lcd.setPixel(i + 56, j); +} + +void blizi() +{ + for (int i = 18; i < 66; i++) + for (int j = 24; j < 48; j++) + lcd.setPixel(i, j); +} + +void dalji() +{ + for (int i = 28; i < 56; i++) + for (int j = 36; j < 48; j++) + lcd.setPixel(i, j); +} + +void linijeSkretanje() +{ + for (int i = 0; i<74; i++) + for (int j = 6; j < 32; j++) + if (24.0 / 74.0*i + 6 - j < 1 && 24.0 / 74.0*i + 6 - j > -1) + lcd.setPixel(i, j); + for (int i = 0; i < 74; i++) + for (int j = 6; j < 32; j++) + if (-24.0 / 74.0*(i - 74) + 6 - j < 1 && -24.0 / 74.0*(i - 74) + 6 - j > -1) + lcd.setPixel(i + 10, j); + for (int i = 0; i < 42; i++) + for (int j = 28; j < 42; j++) + if (14.0 / 42.0*i + 28 - j < 1 && 14.0 / 42.0*i + 28 - j > -1) + lcd.setPixel(i, j); + for (int i = 0; i < 42; i++) + for (int j = 28; j < 42; j++) + if (-14.0 / 42.0*(i - 42) + 28 - j < 1 && -14.0 / 42.0*(i - 42) + 28 - j > -1) + lcd.setPixel(i + 42, j); + for (int j = 30; j < 48; j++) + { + lcd.setPixel(10, j); + lcd.setPixel(74, j); + } + for (int j = 20; j < 48; j++) + lcd.setPixel(42, j); +} + +void daljaDesno() +{ + for (int i = 0; i<10; i++) + for (int j = 6; j < 48; j++) + if (14.0 / 48.0*i + 28 - j <1) + lcd.setPixel(i, j); +} + +void daljaLijevo() +{ + for (int i = 74; i < 84; i++) + for (int j = 6; j < 48; j++) + if (-14.0 / 48.0*(i - 48) + 28 - j <1) + lcd.setPixel(i, j + 12); +} + +void blizaDesno() +{ + for (int i = 0; i<42; i++) + for (int j = 6; j < 48; j++) + if (24.0 / 74.0*i + 6 - j <1) + lcd.setPixel(i, j); +} + +void blizaLijevo() +{ + for (int i = 42; i < 84; i++) + for (int j = 0; j < 48; j++) + if (-24.0 / 74.0*(i - 74) + 6 - j < 1) + lcd.setPixel(i, j + 4); +} + +void drugaDesno() +{ + for (int i = 10; i < 42; i++) + for (int j = 10; j < 48; j++) + if (-24.0 / 74.0*(i - 74) + 6 - j < 1) + lcd.setPixel(i, j + 4); +} + +void drugaLijevo() +{ + for (int i = 42; i<74; i++) + for (int j = 10; j < 48; j++) + if (24.0 / 74.0*i + 6 - j <1) + lcd.setPixel(i, j); +} + +void izaDesno() +{ + for (int i = 10; i<42; i++) + for (int j = 6; j < 48; j++) + if (14.0 / 42.0*i + 28 - j <1) + lcd.setPixel(i, j); +} + +void izaLijevo() +{ + for (int i = 42; i < 74; i++) + for (int j = 6; j < 48; j++) + if (-14.0 / 42.0*(i - 42) + 28 - j <1) + lcd.setPixel(i, j + 14); +} + +void linijeNaprijed() +{ + for (int i = 0; i < 30; i++) + for (int j = 0; j < 30; j++) + if (i - j<1 && i - j>-1) + lcd.setPixel(i, j); + for (int i = 54; i < 84; i++) + for (int j = 0; j < 30; j++) + if (-(i - 84) - j < 1 && -(i - 84) - j > -1) + lcd.setPixel(i, j); + for (int i = 30; i < 54; i++) + lcd.setPixel(i, 30); + for (int i = 0; i < 84; i++) + lcd.setPixel(i, 8); + for (int j = 30; j < 48; j++) + { + lcd.setPixel(30, j); + lcd.setPixel(54, j); + } + for (int j = 8; j < 48; j++) + { + lcd.setPixel(8, j); + lcd.setPixel(76, j); + } +} + +void naprijedDalji() +{ + for (int i = 30; i < 54; i++) + for (int j = 30; j < 48; j++) + lcd.setPixel(i, j); +} + +void naprijedLijevi() +{ + for (int i = 76; i < 84; i++) + for (int j = 0; j < 48; j++) + if (-(i - 84) - j < 1) + lcd.setPixel(i, j); +} + + +void naprijedDesni() +{ + for (int i = 0; i < 8; i++) + for (int j = 0; j < 48; j++) + if (i - j<1) + lcd.setPixel(i, j); +} + +void naprijedDaljiLijevi() +{ + for (int i = 54; i < 76; i++) + for (int j = 8; j < 48; j++) + if (-(i - 84) - j <1) + lcd.setPixel(i, j); +} + +void naprijedDaljiDesni() +{ + for (int i = 8; i < 30; i++) + for (int j = 8; j < 48; j++) + if (i - j<1) + lcd.setPixel(i, j); +} + +void naprijedSkriveniLijevi() +{ + for (int i = 76; i<84; i++) + for (int j = 8; j < 48; j++) + lcd.setPixel(i, j); +} + +void naprijedSkriveniDesni() +{ + for (int i = 0; i<8; i++) + for (int j = 8; j < 48; j++) + lcd.setPixel(i, j); +} + +void crtaj() +{ + lcd.clear(); + linije(); + switch (orijentacija) + { + case 0: + if (y0) + { + if (mapa[y + 1][x - 1][2] == '1' || mapa[y][x - 1][0] == '1') + skriveniLijevi(); + } + if (x0) + if (mapa[y][x - 1][0] == '1') + skriveniLijevi(); + } + if (mapa[y][x][1] == '1') + desni(); + if (mapa[y][x][3] == '1') + lijevi(); + break; + case 1: + if (x0) + { + if (mapa[y - 1][x + 1][3] == '1' || mapa[y - 1][x][1] == '1') + skriveniDesni(); + } + if (y0) + if (mapa[y - 1][x][1] == '1') + skriveniDesni(); + if (y0) + { + if (mapa[y - 1][x][2] == '1') + dalji(); + if (mapa[y - 1][x][1] == '1') + daljiLijevi(); + if (mapa[y - 1][x][3] == '1') + daljiDesni(); + if (mapa[y - 1][x][0] == '1' || mapa[y][x][2] == '1') + blizi(); + if (x>0) + { + if (mapa[y - 1][x - 1][0] == '1' || mapa[y][x - 1][2] == '1') + skriveniDesni(); + } + if (x0) + if (mapa[y][x - 1][2] == '1') + skriveniDesni(); + if (x0) + { + if (mapa[y][x - 1][3] == '1') + dalji(); + if (mapa[y][x - 1][2] == '1') + daljiLijevi(); + if (mapa[y][x - 1][0] == '1') + daljiDesni(); + if (mapa[y][x - 1][1] == '1' || mapa[y][x][3] == '1') + blizi(); + if (y0) + { + if (mapa[y - 1][x - 1][1] == '1' || mapa[y - 1][x][3] == '1') + skriveniLijevi(); + } + } + else + { + if (mapa[y][x][3] == '1') + blizi(); + if (y>0) + if (mapa[y - 1][x][3] == '1') + skriveniLijevi(); + if (y0) + { + if (mapa[y + 1][x - 1][0] == '1') + izaDesno(); + } + } + if (mapa[y][x][3] == '1') + blizaLijevo(); + if (x>0) + { + if (mapa[y][x - 1][0] == '1') + drugaLijevo(); + if (mapa[y][x - 1][3] == '1') + daljaLijevo(); + if (y0) + { + if (mapa[y - 1][x][1] == '1') + drugaDesno(); + if (mapa[y - 1][x][2] == '1') + daljaDesno(); + if (x0) + { + if (mapa[y - 1][x + 1][1] == '1') + izaLijevo(); + } + } + if (mapa[y][x][2] == '1') + blizaDesno(); + break; + case 3: + if (x>0) + { + if (mapa[y][x - 1][2] == '1') + drugaDesno(); + if (mapa[y][x - 1][3] == '1') + daljaDesno(); + if (y>0) + { + if (mapa[y - 1][x - 1][3] == '1') + izaDesno(); + } + } + if (mapa[y][x][2] == '1') + blizaLijevo(); + if (y>0) + { + if (mapa[y - 1][x][3] == '1') + drugaLijevo(); + if (mapa[y - 1][x][2] == '1') + daljaLijevo(); + if (x>0) + { + if (mapa[y - 1][x - 1][2] == '1') + izaLijevo(); + } + } + if (mapa[y][x][3] == '1') + blizaDesno(); + break; + } + lcd.refresh(); +} + +void crtajRotacijaLijevo() +{ + lcd.clear(); + linijeSkretanje(); + switch (orijentacija) + { + case 0: + if (y0) + { + if (mapa[y - 1][x + 1][1] == '1') + izaLijevo(); + } + } + if (mapa[y][x][2] == '1') + blizaDesno(); + if (y>0) + { + if (mapa[y - 1][x][1] == '1') + drugaDesno(); + if (mapa[y - 1][x][2] == '1') + daljaDesno(); + if (x0) + { + if (mapa[y - 1][x][3] == '1') + drugaLijevo(); + if (mapa[y - 1][x][2] == '1') + daljaLijevo(); + if (x>0) + { + if (mapa[y - 1][x - 1][2] == '1') + izaLijevo(); + } + } + if (mapa[y][x][3] == '1') + blizaDesno(); + if (x>0) + { + if (mapa[y][x - 1][2] == '1') + drugaDesno(); + if (mapa[y][x - 1][3] == '1') + daljaDesno(); + if (y>0) + { + if (mapa[y - 1][x - 1][3] == '1') + izaDesno(); + } + } + if (mapa[y][x][2] == '1') + blizaLijevo(); + break; + case 3: + if (x>0) + { + if (mapa[y][x - 1][0] == '1') + drugaLijevo(); + if (mapa[y][x - 1][3] == '1') + daljaLijevo(); + if (y0) + { + if (mapa[y + 1][x - 1][0] == '1') + izaDesno(); + } + } + if (mapa[y][x][3] == '1') + blizaLijevo(); + break; + } + lcd.refresh(); +} + +void crtajNaprijed() +{ + lcd.clear(); + linijeNaprijed(); + switch (orijentacija) + { + case 0: + if (mapa[y][x][0] == '1') + naprijedDalji(); + if (mapa[y][x][3] == '1') + naprijedDaljiLijevi(); + if (mapa[y][x][1] == '1') + naprijedDaljiDesni(); + if (y>0) + { + if (mapa[y - 1][x][3] == '1') + naprijedLijevi(); + if (mapa[y - 1][x][1] == '1') + naprijedDesni(); + if (x>0) + if (mapa[y - 1][x - 1][0] == '1') + naprijedSkriveniLijevi(); + if (x0) + { + if (mapa[y][x - 1][0] == '1') + naprijedLijevi(); + if (mapa[y][x - 1][2] == '1') + naprijedDesni(); + if (y>0) + if (mapa[y - 1][x - 1][1] == '1') + naprijedSkriveniDesni(); + if (y0) + if (mapa[y + 1][x - 1][2] == '1') + naprijedSkriveniDesni(); + if (x0) + if (mapa[y - 1][x + 1][3] == '1') + naprijedSkriveniLijevi(); + if (y 99) + { + minute = 99; + sekunde = 99; + } + int i = 4; + while (sekunde > 0) + { + int cifra = sekunde % 10; + vrijeme[i] = '0' + cifra; + sekunde /= 10; + i--; + } + if (i == 4) + { + vrijeme[i] = '0'; + i--; + } + if (i == 3) + { + vrijeme[i] = '0'; + i--; + } + if (i == 2) + { + vrijeme[i] = ':'; + i--; + } + while (minute > 0) + { + int cifra = minute % 10; + vrijeme[i] = '0' + cifra; + i--; + minute /= 10; + } + if (i == 1) + { + vrijeme[i] = '0'; + i--; + } + if (i == 0) + { + vrijeme[i] = '0'; + i--; + } + return vrijeme; +} + +void citajJoystick() +{ + t.start(); + crtaj(); + while (1) + { + if (Ox>0.75) + { + rotirajLijevo(); + crtajRotacijaLijevo(); + wait(0.49); + crtaj(); + } + else if (Ox<0.25) + { + rotirajDesno(); + crtajRotacijaDesno(); + wait(0.49); + crtaj(); + } + else if (Oy<0.25) + { + crtaj2D(); + wait(0.49); + } + else if (Oy>0.75) + { + pravo(); + if (mozePravo()) + crtajNaprijed(); + wait(0.49); + crtaj(); + } + wait(0.25); + if (x == 15 && y == 1) + { + t.stop(); + lcd.clear(); + lcd.printString("KRAJ!", 28, 1); + lcd.printString("VRIJEME:", 20, 2); + lcd.printString(dajVrijeme(), 28, 3); + lcd.refresh(); + while (1); + } + + } + + +} + +int main() { + std::thread first(readInput); + + lcd.init(); + int i = 0; + while (1) { + lcd.clear(); + linije(); + switch (i) + { + case 0: + desni(); + break; + case 1: + lijevi(); + break; + case 2: + daljiDesni(); + break; + case 3: + daljiLijevi(); + break; + case 4: + skriveniDesni(); + break; + case 5: + skriveniLijevi(); + break; + case 6: + dalji(); + break; + case 7: + blizi(); + break; + case 8: + desni(); + lijevi(); + break; + case 9: + daljiDesni(); + daljiLijevi(); + break; + case 10: + blizi(); + skriveniDesni(); + skriveniLijevi(); + break; + case 11: + i = 0; + } + lcd.refresh(); + if (SW == true) + citajJoystick(); + i++; + wait(0.5); + } +} diff --git a/3D Labyrinth Console/Debug/3D Labirint Console.exe b/3D Labyrinth Console/Debug/3D Labirint Console.exe new file mode 100644 index 0000000..a86cc9d Binary files /dev/null and b/3D Labyrinth Console/Debug/3D Labirint Console.exe differ diff --git a/3D Labyrinth Console/Debug/3D Labirint Console.ilk b/3D Labyrinth Console/Debug/3D Labirint Console.ilk new file mode 100644 index 0000000..791f98f Binary files /dev/null and b/3D Labyrinth Console/Debug/3D Labirint Console.ilk differ diff --git a/3D Labyrinth Console/Debug/3D Labirint Console.pdb b/3D Labyrinth Console/Debug/3D Labirint Console.pdb new file mode 100644 index 0000000..c63e250 Binary files /dev/null and b/3D Labyrinth Console/Debug/3D Labirint Console.pdb differ