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