Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
1

нужно доделать игру немного)(кому не сложно)

25.01.2013, 10:25. Просмотров 637. Ответов 15
Метки нет (Все метки)

C++
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;
void main()
{
#pragma region Объявления
    enum {SPACE, WALL, SCORE, LIFE};
    enum DIRECTION{UP, DOWN, LEFT, RIGHT};
    const int Y = 24, X = 65;
    int maze[Y][X] = {
        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,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,0,0,0,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,3,1,1,1,1,1,1,1,1,
        1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,0,3,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,0,1,1,1,2,1,1,1,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,0,1,0,0,0,0,0,0,3,0,0,0,0,0,3,0,0,2,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,0,3,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,1,1,1,0,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,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,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,2,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,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,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,
    };
    HANDLE hndl = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD smileCoord = {40, 12}, enemyCoord1 = {55, 22}, enemyCoord2 = {12, 15}, scoreCoord = {68, 5}, livesCoord = {68, 10},wlCoord = {34,11};
        
    DIRECTION enemyDir1 = UP;
    DIRECTION enemyDir2 = LEFT;
    
    int score = 0, lives = 3;
#pragma endregion
#pragma region Отрисовка лабиринта
    for(int i = 0; i < Y; i++)
    {
        for(int j = 0; j < X; j++)
        {
            switch(maze[i][j])
            {
            case SPACE:cout << " ";
                break;
            case WALL:cout << (char)178;
                break;
            case SCORE:
                SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_INTENSITY);
                cout << "$";
                SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
                break;
            case LIFE:
                SetConsoleTextAttribute(hndl, FOREGROUND_RED|FOREGROUND_INTENSITY);
                cout << (char)3;
                SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
                break;
            }
        }
        cout << "\n";
    }
#pragma endregion
    SetConsoleCursorPosition(hndl, smileCoord);
    SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY);
    cout << (char)2;
    SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE);
    while(1)
    {
        if(lives == 0) 
        {
            system("cls");
            SetConsoleCursorPosition(hndl,wlCoord);
            SetConsoleTextAttribute(hndl,FOREGROUND_RED|FOREGROUND_INTENSITY);
            cout << "Проинрали((";
            Sleep(10000);
            exit(1);
        }
        if(score == 1000) 
        {
            system("cls");
            SetConsoleCursorPosition(hndl,wlCoord);
            SetConsoleTextAttribute(hndl,FOREGROUND_GREEN|FOREGROUND_INTENSITY);
            cout << "Вы собрали все бонусы))";
            Sleep(10000);
            exit(1);
        }
#pragma region Движение смайла
        if(_kbhit())
        {
            SetConsoleCursorPosition(hndl, smileCoord);
            cout << " ";
            switch(_getch())
            {
            case 'w':
            case 'W':
                if(maze[smileCoord.Y-1][smileCoord.X] != 1) smileCoord.Y--;
                break;
            case 's':
            case 'S':
                if(maze[smileCoord.Y+1][smileCoord.X] != 1) smileCoord.Y++;
                break;
            case 'a':
            case 'A':
                if(maze[smileCoord.Y][smileCoord.X-1] != 1) smileCoord.X--;
                break;
            case 'd':
            case 'D':
                if(maze[smileCoord.Y][smileCoord.X+1] != 1) smileCoord.X++;
                break;
            case 27:
                exit(1);
            }//switch
            switch(maze[smileCoord.Y][smileCoord.X])
            {
            case SCORE: 
                score += 100;
                break;
            case LIFE: lives++;
                break;
            }
            maze[smileCoord.Y][smileCoord.X] = 0;
        }//if(_kbhit()
        SetConsoleCursorPosition(hndl, smileCoord);
        SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY);
        cout << (char)2;
        SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE);
#pragma endregion 
        if (smileCoord.Y == enemyCoord1.Y && smileCoord.X == enemyCoord1.X) lives--;
        if (smileCoord.Y == enemyCoord2.Y && smileCoord.X == enemyCoord2.X) lives--;
#pragma region Движение горизонтального врага
        SetConsoleCursorPosition(hndl, enemyCoord2);
        cout << " ";
        switch(enemyDir2)
        {
        case LEFT:
            if(maze[enemyCoord2.Y][enemyCoord2.X-1] != 1) enemyCoord2.X--;
            else enemyDir2 = RIGHT;
            break;
        case RIGHT:
            if(maze[enemyCoord2.Y][enemyCoord2.X+1] != 1) enemyCoord2.X++;
            else enemyDir2 = LEFT;
            break;
        }
        if (smileCoord.Y == enemyCoord2.Y && smileCoord.X == enemyCoord2.X) lives--;
        SetConsoleCursorPosition(hndl, enemyCoord2);
        SetConsoleTextAttribute(hndl, FOREGROUND_RED|FOREGROUND_INTENSITY);
        cout << (char)1;
        SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE);
#pragma endregion
#pragma region Движение вертикального врага
        SetConsoleCursorPosition(hndl, enemyCoord1);
        cout << " ";
        switch(enemyDir1)
        {
        case UP:
            if(maze[enemyCoord1.Y-1][enemyCoord1.X] != 1) enemyCoord1.Y--;
            else enemyDir1 = DOWN;
            break;
        case DOWN:
            if(maze[enemyCoord1.Y+1][enemyCoord1.X] != 1) enemyCoord1.Y++;
            else enemyDir1 = UP;
            break;
        }
        if (smileCoord.Y == enemyCoord1.Y && smileCoord.X == enemyCoord1.X) lives--;
        SetConsoleCursorPosition(hndl, enemyCoord1);
        SetConsoleTextAttribute(hndl, FOREGROUND_RED|FOREGROUND_INTENSITY);
        cout << (char)1;
        SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE);
#pragma endregion
        SetConsoleCursorPosition(hndl, scoreCoord);
        cout << "<Бонусов: " << score;
        SetConsoleCursorPosition(hndl, livesCoord);
        cout << "Жизней: " << lives;
        Sleep(150);
    }//while(1)
}//main()
как сделать переход типо на следующий уровень игры, помогите просто вставьте код и сделайте переход на следующий уровень, а там я сам уже доделаю
С++

Добавлено через 10 часов 10 минут
ля ну помогите, так тяжело??
просто код для перехода на 2рой уровень, а сам второй уровень я сам сделаю
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2013, 10:25
Ответы с готовыми решениями:

Разработать произвольную игру. (Кому не сложно, подскажите пожалуйста)
Вобщем мужики, дедлайн завтра в 10. Как вы поняли я ничего не сделал и сейчас сел и не понимаю что...

кому не сложно, нужно решение задач
1)Даны текстовый файл, напечатать ленты, которые имеют длину не менее 30 символов, но не более 100...

Нужно немного доделать программу
Ввести класс для работы с обьектом дробь и реализовать 1) сложение(вычитание) 2)приведение к...

Нужно немного исправить игру
Здравствуйте! Я сделала игру, только есть проблемы: очки не начисляются при выстреле в картинку и...

15
119 / 107 / 29
Регистрация: 18.12.2010
Сообщений: 378
25.01.2013, 10:34 2
Вы бы хоть для начала сказали, что за игра, и как она должна работать
0
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
25.01.2013, 10:58  [ТС] 3
принцип игры: в ней лабиринт и бегает добрый смайлик,(должен собрать все жизни и бонусы) а ещё бегают злые смайлики два, про столкновении с ними отнимаются жизни, так я все сделал, только мне нужно в игре сделать 2 уровня, по окончанию сбора всех бонусов игра должна перейти на второй уровень
0
52 / 41 / 16
Регистрация: 16.12.2012
Сообщений: 144
25.01.2013, 11:06 4
Слушай у меня че то добрый смайлик вообще не хочет двигаться , на какие кнопки жать а то он на месте стоит ?
0
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
25.01.2013, 11:14  [ТС] 5
нужно переключить раскладку на английскую, как в обычных играх "w"a"s"d"
1
52 / 41 / 16
Регистрация: 16.12.2012
Сообщений: 144
25.01.2013, 11:20 6
Классно сделал молодец )) Только вместо букв выводятся кракозябры . Ну и со 2 лвл я тебе не помогу , ты вроде как часть программы уже написал въехал в тему так сказать , так что тебе будет даже проще написать этот переход
, чем кому то постороннему во все это вникать и писать .
0
12 / 12 / 0
Регистрация: 08.04.2012
Сообщений: 81
25.01.2013, 11:49 7
Написать не напишу, но примерный алгоритм скажу:
К уровню добавь счетчик очков, жизней, бонусов. Если бонус собран, то убавляй счетчик на еденицу, и так пока не будет 0. После нуля отрисовывай новый уровень...
0
2 / 2 / 0
Регистрация: 18.12.2012
Сообщений: 77
25.01.2013, 13:15  [ТС] 8
у меня не получается, можете сделать только код перехода

Добавлено через 17 минут
для примера что не будь можете скинуть?
0
62 / 67 / 2
Регистрация: 05.10.2012
Сообщений: 240
25.01.2013, 13:28 9
Расскажите пожалуйста как прога берет зачения 0,1,2,3 для
C++
1
enum {SPACE, WALL,SCORE, LIFE};
Как она понимает что на месте 1(в массиве), при прорисовке должен быть символ char=178 (стена)?
Или ссылку на статью. Заранее спасибо.
0
алкокодер
156 / 152 / 41
Регистрация: 27.12.2012
Сообщений: 550
26.01.2013, 02:51 10
Почему бы не запихнуть всё в функцию, и каждый раз передавать ей новый массив(уровень)?
0
DaZOr
26.01.2013, 16:28 11
Цитата Сообщение от VlaDdislav Посмотреть сообщение
cout << "Проинрали(("
возможно допущена ошибка
алкокодер
156 / 152 / 41
Регистрация: 27.12.2012
Сообщений: 550
26.01.2013, 16:43 12
VlaDdislav,
Запихиваешь весь код в функцию, ей передаёшь массив.

Когда всё собрано, немного поменять тело
C++
1
2
3
4
5
6
7
8
9
        if(score == 1000) 
        {
            system("cls");
            SetConsoleCursorPosition(hndl,wlCoord);
            SetConsoleTextAttribute(hndl,FOREGROUND_GREEN|FOREGROUND_INTENSITY);
            cout << "Âû ñîáðàëè âñå áîíóñû))";
            Sleep(1000);
            return 0;
        }
в майне

C++
1
2
3
4
5
int maze[X][Y] = {...};
Function(maze, X, Y);
 
int maze2[X][Y] = {...};
Function(maze2, X, Y);
0
Kgfq
26.01.2013, 17:05
  #13

Не по теме:

VlaDdislav, тебе не в лом было заполнять 24*65 матрицу?

0
алкокодер
156 / 152 / 41
Регистрация: 27.12.2012
Сообщений: 550
26.01.2013, 20:08 14

Не по теме:

Kgfq,
а что там заполнять? ctrl+c, ctrl+v. или она вообще сгенерирована.



Добавлено через 6 минут
Ещё функции можно передать координаты смайла и врагов.
0
15 / 15 / 1
Регистрация: 31.12.2012
Сообщений: 101
27.01.2013, 01:45 15
О! Игры кодируешь свои...
Не по делу: Даже я бы постарался не так грубо массив, а прикрутить текстовый файл где эти цифры или лучше - Буквы им соответствующие написаны, и сканировать его в программу.

По делу. Прямо сейчас не решаюсь сесть и сделать код, но.
Простейший способ видится так.
1_ Эту запись int maze[Y][X] = инициализация массива. переделать на примерно int maze[2][Y][X] = чуть более сложная и в два раза большая инициализация массива. в ней - первый уровень и какой надо второй.
2_ ввести переменную Level_it (в смысле - текущий уровень, назвать можно как хочешь). В начале задавать её нулём, что соответствует первому уровню.
3_ везде где надо заменить (возня, но выполнимо для кода такого размера довольно быстро) записи maze[ что-то][что-то] на maze[Level_it][ прежние параметры] Убедиться полностью, что новый код работает точно также!
4_ На какую-то кнопку прикрутить (для теста, игровой переход на уровень - позже) задание Level_it++; т.е. был нулевой - станет первый и повторную прорисовку.
5_ Если всё это сделать, то скорее всего после нажатия той кнопки, на которую повесил - увидишь второй уровень.
Если именно так, то нажав еще раз - увидешь невесть что, так как переменная уровня стала 2, а ничего нормального по этому адресу нет... Исправляется прикруткой проверки типа if(Level_it< какой в данный момент есть максимальный уровень в СИШНЫХ терминах, т.е. если задали два, то для массивов си они Нулевой и Первый, а не первый и второй по логике человека...){Level_it++;}else{либо ничего, либо сообщение об ошибке "Вы и так на последнем уровне"}


Гораздо лучше бы создать Объект поле, который умеет - загрузиться из файла, при помощи функции типа getpole(x,y); возвращать текущий уровень, функциями getLevel() и setLevel(); выставлять ему уровень с априори проверкой , не вылазит ли за имеющиеся уровни... Но это надо серьезно переписать.

Добавлено через 17 минут
Массивы легко переделал, а вот где у тебя вообще обработка клавиатуры - на первый взгляд не понял. Пока так. Тут вручную выставляешь до компиляции ноль или один и видишь в игре первый или второй уровень (у меня второй отличается добавкой квадратика нулей слева сверху, как хочешь - уже сам рисуй)

C++
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;
int main() /// ГАВ!!! СКОЛЬКО УМНОГО НА ПЛЮСАХ НАПИСАЛ, А ЭЛЕМЕНТАРНОЕ НОРМАЛЬНОЕ ВОЗВРАЩЕНИЕ int-a  main НЕ СДЕЛАЛ! У МЕНЯ void main КОМПИЛЯТОР ПОСЫЛАЛ
{
#pragma region Объявления
    enum {SPACE, WALL, SCORE, LIFE};
    enum DIRECTION{UP, DOWN, LEFT, RIGHT};
    const int Y = 24, X = 65;
    int Level_it=1; //// ПЕРЕМЕННАЯ УРОВНЯ
    int maze[2][Y][X] = {{ //// ТРЕХМЕРНЫЙ МАССИВ ДЛЯ ДВУХ УРОВНЕЙ. далее везде меняем записи на трехиндексные
        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,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,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,0,0,0,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,3,1,1,1,1,1,1,1,1,
        1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,0,3,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,0,1,1,1,2,1,1,1,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,0,1,0,0,0,0,0,0,3,0,0,0,0,0,3,0,0,2,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,0,3,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,1,1,1,0,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,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,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,2,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,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,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,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,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,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,0,0,0,1,1,0,0,0,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,3,1,1,1,1,1,1,1,1,
        1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,
        1,1,1,1,0,3,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,0,1,1,1,2,1,1,1,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,0,1,0,0,0,0,0,0,3,0,0,0,0,0,3,0,0,2,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,0,3,0,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,1,1,1,0,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,0,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,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,
        1,1,1,1,1,1,1,1,1,1,1,2,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,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,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,
    }
};
    HANDLE hndl = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD smileCoord = {40, 12}, enemyCoord1 = {55, 22}, enemyCoord2 = {12, 15}, scoreCoord = {68, 5}, livesCoord = {68, 10},wlCoord = {34,11};
        
    DIRECTION enemyDir1 = UP;
    DIRECTION enemyDir2 = LEFT;
    
    int score = 0, lives = 3;
#pragma endregion
#pragma region Отрисовка лабиринта
    for(int i = 0; i < Y; i++)
    {
        for(int j = 0; j < X; j++)
        {
            switch(maze[Level_it][i][j])
            {
            case SPACE:cout << " ";
                break;
            case WALL:cout << (char)178;
                break;
            case SCORE:
                SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_INTENSITY);
                cout << "$";
                SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
                break;
            case LIFE:
                SetConsoleTextAttribute(hndl, FOREGROUND_RED|FOREGROUND_INTENSITY);
                cout << (char)3;
                SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY);
                break;
            }
        }
        cout << "\n";
    }
#pragma endregion
    SetConsoleCursorPosition(hndl, smileCoord);
    SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY);
    cout << (char)2;
    SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE);
    while(1)
    {
        if(lives == 0) 
        {
            system("cls");
            SetConsoleCursorPosition(hndl,wlCoord);
            SetConsoleTextAttribute(hndl,FOREGROUND_RED|FOREGROUND_INTENSITY);
            cout << "Проинрали((";
            Sleep(10000);
            exit(1);
        }
        if(score == 1000) 
        {
            system("cls");
            SetConsoleCursorPosition(hndl,wlCoord);
            SetConsoleTextAttribute(hndl,FOREGROUND_GREEN|FOREGROUND_INTENSITY);
            cout << "Вы собрали все бонусы))";
            Sleep(10000);
            exit(1);
        }
#pragma region Движение смайла
        if(_kbhit())
        {
            SetConsoleCursorPosition(hndl, smileCoord);
            cout << " ";
            switch(_getch())
            {
            case 'w':
            case 'W':
                if(maze[Level_it][smileCoord.Y-1][smileCoord.X] != 1) smileCoord.Y--;
                break;
            case 's':
            case 'S':
                if(maze[Level_it][smileCoord.Y+1][smileCoord.X] != 1) smileCoord.Y++;
                break;
            case 'a':
            case 'A':
                if(maze[Level_it][smileCoord.Y][smileCoord.X-1] != 1) smileCoord.X--;
                break;
            case 'd':
            case 'D':
                if(maze[Level_it][smileCoord.Y][smileCoord.X+1] != 1) smileCoord.X++;
                break;
            case 27:
                exit(1);
            }//switch
            switch(maze[Level_it][smileCoord.Y][smileCoord.X])
            {
            case SCORE: 
                score += 100;
                break;
            case LIFE: lives++;
                break;
            }
            maze[Level_it][smileCoord.Y][smileCoord.X] = 0;
        }//if(_kbhit()
        SetConsoleCursorPosition(hndl, smileCoord);
        SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_INTENSITY);
        cout << (char)2;
        SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE);
#pragma endregion 
        if (smileCoord.Y == enemyCoord1.Y && smileCoord.X == enemyCoord1.X) lives--;
        if (smileCoord.Y == enemyCoord2.Y && smileCoord.X == enemyCoord2.X) lives--;
#pragma region Движение горизонтального врага
        SetConsoleCursorPosition(hndl, enemyCoord2);
        cout << " ";
        switch(enemyDir2)
        {
        case LEFT:
            if(maze[Level_it][enemyCoord2.Y][enemyCoord2.X-1] != 1) enemyCoord2.X--;
            else enemyDir2 = RIGHT;
            break;
        case RIGHT:
            if(maze[Level_it][enemyCoord2.Y][enemyCoord2.X+1] != 1) enemyCoord2.X++;
            else enemyDir2 = LEFT;
            break;
        }
        if (smileCoord.Y == enemyCoord2.Y && smileCoord.X == enemyCoord2.X) lives--;
        SetConsoleCursorPosition(hndl, enemyCoord2);
        SetConsoleTextAttribute(hndl, FOREGROUND_RED|FOREGROUND_INTENSITY);
        cout << (char)1;
        SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE);
#pragma endregion
#pragma region Движение вертикального врага
        SetConsoleCursorPosition(hndl, enemyCoord1);
        cout << " ";
        switch(enemyDir1)
        {
        case UP:
            if(maze[Level_it][enemyCoord1.Y-1][enemyCoord1.X] != 1) enemyCoord1.Y--;
            else enemyDir1 = DOWN;
            break;
        case DOWN:
            if(maze[Level_it][enemyCoord1.Y+1][enemyCoord1.X] != 1) enemyCoord1.Y++;
            else enemyDir1 = UP;
            break;
        }
        if (smileCoord.Y == enemyCoord1.Y && smileCoord.X == enemyCoord1.X) lives--;
        SetConsoleCursorPosition(hndl, enemyCoord1);
        SetConsoleTextAttribute(hndl, FOREGROUND_RED|FOREGROUND_INTENSITY);
        cout << (char)1;
        SetConsoleTextAttribute(hndl, FOREGROUND_GREEN|FOREGROUND_RED|FOREGROUND_BLUE);
#pragma endregion
        SetConsoleCursorPosition(hndl, scoreCoord);
        cout << "<Бонусов: " << score;
        SetConsoleCursorPosition(hndl, livesCoord);
        cout << "Жизней: " << lives;
        Sleep(150);
    }//while(1)
}//main()
Добавка. Если ты знаешь где тут у тебя ввод с клавы, то на какую угодно клавишу для начала повесь Level_it=1-Level_it; То есть - если нулевой уровень, то первый, если уже на первом, то вернет на нулевой. Так для игры странно, но для начала - при тестировании всё будет работать, сколько бы ни жал на клавишу, не будет переполнения
0
UnsKneD
27.01.2013, 20:16     нужно доделать игру немного)(кому не сложно)
  #16

Не по теме:

чёт 2 стр не открывается, пишет Внутренняя ошибка сервера.

0
27.01.2013, 20:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2013, 20:16
Привет! Вот еще темы с ответами:

Pascal. Записи(самая ужасная тема). Нужно немного доделать программу, у меня не получается
Необходимо что бы вывод Фамилии, Имени, Отчества, Даты рождения осуществлялся в столбик, то-есть...

кому не сложно
вот программа которая находит площадь пересечения прямоугольников #include &quot;stdafx.h&quot; #include...

Кому не сложно.)
Ребят, о4ень прошу помощи... Хо4у сделать приятное другу, новый логотип ему сделать хотелось бы,...

кому не сложно
Ребят


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.