Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _WIN32_WINNT 0x0500
- #include <iostream>
- #include <Windows.h>
- #include <string>
- #include <vector>
- #include <conio.h>
- #include <stdio.h>
- #include <ctime>
- using namespace std;
- HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
- void ToPutWindow(short X = -5 - 1, short Y = -27 - 1)
- {
- SetWindowPos(GetConsoleWindow(), 0, X, Y, 0, 0, SWP_NOSIZE);
- }
- void UnwrapScreen()
- {
- COORD NewSBSize;
- SMALL_RECT DisplayArea = { 0, 0, 0, 0 };
- NewSBSize = GetLargestConsoleWindowSize(hCon);
- SetConsoleScreenBufferSize(hCon, NewSBSize);
- DisplayArea.Right = NewSBSize.X - 1;
- DisplayArea.Bottom = NewSBSize.Y - 1;
- SetConsoleWindowInfo(hCon, TRUE, &DisplayArea);
- }
- int main(){
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- ToPutWindow(0, 0);
- UnwrapScreen();
- ToPutWindow();
- CONSOLE_CURSOR_INFO curs = { 0 };
- curs.dwSize = sizeof(curs);
- curs.bVisible = FALSE;
- ::SetConsoleCursorInfo(::GetStdHandle(STD_OUTPUT_HANDLE), &curs);
- int z, l = 0, n = 2, u;
- vector <vector <int>> d(2);
- for (int i = 0; i < 10; i++){
- d[1].push_back(0);
- d[0].push_back(0);
- }
- int h = 30, g = 40, xa = 2, ya = 2;
- cout << "ВВедите размеры поля через пробел числа от 10 до 62:";
- cin >> h >> g;
- int x = h / 2, y = g / 2;
- system("cls");
- cout << "ВВедите скорость от 1 до 200:";
- cin >> u;
- system("cls");
- //system("mode con cols=32 lines=21"); //размер окна, вывод нужного количества строк в консоль
- //HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
- //COORD size{ 100, 100 };//символов строки, строк
- //SetConsoleScreenBufferSize(hout, size);//размер буфера
- vector <vector <char>> a(h);
- vector <char> af(2);
- for (int i = 0; i < h; i++){
- for (int j = 0; j < g; j++){
- if (i == 9){
- i = i;
- }
- if (i == 0 || i == h - 1){
- a[i].push_back('-');
- }
- else if (j == 0 || j == g - 1){
- a[i].push_back('|');
- }
- else {
- a[i].push_back(' ');
- }
- }
- }
- a[h/2][g/2] = '0';
- a[2][2] = '*';
- for (int i = 0; i < h; i++){
- for (int j = 0; j < g; j++){
- printf("%c", a[i][j]);
- }
- cout << endl;
- }
- z = char(_getch());
- if (z == 'w'){
- n = 4;
- }
- else if (z == 'd'){
- n = 3;
- }
- else if (z == 's'){
- n = 2;
- }
- else if (z == 'a'){
- n = 1;
- }
- while (x != 0 || x != h - 1 || y != 0 || y != g - 1){
- if (x == 0 || x == h - 1 || y == 0 || y == g - 1) break;
- Sleep(200-u);
- if (_kbhit()){
- z = char(_getch());
- if (z == 'w'){
- n = 4;
- }
- else if (z == 'd'){
- n = 3;
- }
- else if (z == 's'){
- n = 2;
- }
- else if (z == 'a'){
- n = 1;
- }
- }
- if (n == 1){
- if (l != d[0].size()){
- d[1][l] = x;
- d[0][l] = y;
- l++;
- }
- else{
- l = 0;
- d[1][l] = x;
- d[0][l] = y;
- l++;
- }
- if (a[x][y - 1] == '1'){
- break;
- }
- else{
- a[x][y - 1] = '0';
- y--;
- }
- }
- else if (n == 2){
- if (l != d[0].size()){
- d[1][l] = x;
- d[0][l] = y;
- l++;
- }
- else{
- l = 0;
- d[1][l] = x;
- d[0][l] = y;
- l++;
- }
- if (a[x + 1][y] == '1'){
- break;
- }
- else{
- a[x + 1][y] = '0';
- x++;
- }
- }
- else if (n == 3){
- if (l != d[0].size()){
- d[1][l] = x;
- d[0][l] = y;
- l++;
- }
- else{
- l = 0;
- d[1][l] = x;
- d[0][l] = y;
- l++;
- }
- if (a[x][y + 1] == '1'){
- break;
- }
- else{
- a[x][y + 1] = '0';
- y++;
- }
- }
- else if (n == 4){
- if (l != d[0].size()){
- d[1][l] = x;
- d[0][l] = y;
- l++;
- }
- else{
- l = 0;
- d[1][l] = x;
- d[0][l] = y;
- l++;
- }
- if (a[x - 1][y] == '1'){
- break;
- }
- else{
- a[x - 1][y] = '0';
- x--;
- }
- }
- if (x == xa && y == ya){
- d[0].push_back(0);
- d[1].push_back(0);
- xa = rand() % (h-2) + 1;
- ya = rand() % (g-2) + 1;
- for (int f = 0; f < d[0].size(); f++){
- if (a[xa][ya] == '1' || a[xa][ya] == '0'){
- xa = rand() % (h-2) + 1;
- ya = rand() % (g-2) + 1;
- f = 0;
- }
- }
- }
- for (int i = 0; i < h; i++){
- for (int j = 0; j < g; j++){
- for (int t = 0; t < d[0].size(); t++){
- if (i == d[1][t] && j == d[0][t]){
- a[i][j] = '1';
- break;
- }
- else if (i != 0 && i != h - 1 && j != 0 && j != g - 1 && a[i][j] != '0' && (i != xa || j != ya)){
- a[i][j] = ' ';
- }
- else if (i == xa && j == ya){
- a[i][j] = '*';
- break;
- }
- }
- }
- }
- system("cls");
- for (int i = 0; i < h; i++){
- for (int j = 0; j < g; j++){
- printf("%c", a[i][j]);
- }
- cout << endl;
- }
- }
- system("cls");
- cout << "game over";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement