Вот решил написать простенький лабиринт на с++. В общем, играйте на здоровье. Может быть скоро добавлю новые уровни
#include <iostream> //cout, cin
#include "main.h" //getch(), nonblock(), clear_scr()
using namespace std;
int z=0;//количество собранных вишней
int x, y; //координаты героя на данный момент
//игровое поле
int a[25][24] = {{1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,},
{1,0,1,0,0,1,0,1,0,0,0,1,1,1,1,0,0,0,0,1,},
{1,0,1,1,0,1,0,1,0,1,0,0,0,0,1,0,1,1,0,1,},
{1,0,0,0,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,},
{1,1,1,1,1,1,0,1,0,1,4,0,1,0,1,1,0,1,0,1,},
{1,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,1,},
{1,0,1,1,0,1,1,1,1,1,0,0,1,0,1,1,1,1,0,1,},
{1,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,},
{1,1,1,1,1,1,0,1,1,1,0,0,0,0,1,0,1,1,1,1,},
{1,1,0,0,0,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,},
{1,4,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,1,},
{1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,1,},
{1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,},
{1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,},
{1,0,1,0,0,0,0,0,0,0,1,4,0,0,0,0,1,1,0,1,},
{1,0,1,1,1,1,1,0,1,0,1,1,1,0,1,0,0,0,0,1,},
{1,0,1,0,0,0,1,0,1,0,0,0,1,1,1,1,1,1,1,1,},
{1,0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1,},
{1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,0,1,},
{1,1,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,},
{1,0,1,0,1,0,0,0,1,0,1,1,1,1,1,1,0,1,0,1,},
{1,0,0,0,1,1,1,1,1,0,0,0,1,0,1,0,0,1,0,1,},
{1,5,1,0,0,0,0,0,1,1,1,0,0,0,1,0,1,1,4,1,},
{1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,}};
void print_a() // выводим лабиринт на экран
{
for (int i=0; i<24; i++)
{
for (int m=0; m<24; m++)
{
if (a[i][m]==1) cout<<"░░";
if (a[i][m]==0 || a[i][m]==3) cout<<" ";
if (a[i][m]==2) cout<<"╣╠";
if (a[i][m]==4) cout<<"••";
if (a[i][m]==5) cout<<"––";
}
cout<<endl;
}
cout<<"Вишней: "<<z<<endl;
if (z==4) cout<<"Дверь открыта"; // если собрали все вишнисообщаем, что дверь открыта
}
int win()
{
if (a[23][1]==2) return 1; // если нашёл выход и открыл дверь то выиграл
else return 0;
}
void motion()
{
char m;
nonblock(1); // отключаем буферизованый ввод
m = getch(); // куда хочет пойти человек?
switch (m)
{
case 65 :
case 'w' : x--; break;
case 66 :
case 's' : x++; break; // обрабатываем ход
case 68 :
case 'a' : y--; break;
case 67 :
case 'd' : y++; break;
}
if (a[x][y]==0 || a[x][y]==3 || a[x][y]==4) a[x][y] = 2;
else // а если стенка ?
{
switch (m)
{
case 65 :
case 'w' : x++; break;
case 66 :
case 's' : x--; break; // возвращаем всё как было
case 68 :
case 'a' : y++; break;
case 67 :
case 'd' : y--; break;
}
a[x][y] = 2;
}
}
int main()
{
int k[4];
x = 0; // начало пути
y = 1; // начало пути
do
{
if (k[1]!=1)
if (x==4 && y==10) {z++; k[1]=1;}
if (k[2]!=1) // что бы 1 вишню не брали 2 раза
if (x==10 && y==1) {z++; k[2]=1;} // подобрали вишню
if (k[3]!=1)
if (x==14 && y==11) {z++; k[3]=1;}
if (k[4]!=1)
if (x==22 && y==18) {z++; k[4]=1;}
print_a();
a[x][y] = 0;
motion();
clear_scr();
if (z==4) a[22][1] = 0;
}
while (win()==0); // пока не выиграл
print_a();
cout<<endl<<"Ты выиграл!"<<endl;
return 0;
}