Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.76
beregok
0 / 0 / 0
Регистрация: 08.01.2009
Сообщений: 9
#1

игра лабиринт - C++

23.01.2009, 10:41. Просмотров 3966. Ответов 1
Метки нет (Все метки)

Есть код игры
Смайлик движется по лабиринту с помощью нажатия клавиш, есть два смайлика врага (один движется по вертикали, второй по горизонтали),
необходимо ещё добавить смайлик, который движется на смайлик игрока
помогите с алгоритмом смайлика движущегося на смайлик игрока!

Добавлено через 33 секунды
вот что у меня получилось
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
int i,j;
int lives = 3;//счетчик жизней
DIR dir1 = LEFT;
DIR dir2 = LEFT;
HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord = {25,10};// Координаты смайла
COORD coord1 = {40,15};// Координаты 1-го врага
COORD coord2 = {15,8};//Координаты 2-го врага
COORD coord3 = {20,7};
COORD coordLives = {0,22};// Координаты вывода счетчика жизней
 
//Отрисовка лабиринта>>>
for(i=0;i<Y;i++)
{
for(j=0;j<X;j++)
{
switch(a[i][j])
{
case 1:cout << (char)177;break;
case 2:cout << (char)36;break;
case 3:cout << (char)3;break;
case 0:cout << ' ';break;
}
}
cout << '\n';
}
//Отрисовка лабиринта<<<
 
while(true)
{
Sleep(50);//Задержка движения
 
//Движение 1-го врага>>>
SetConsoleCursorPosition(console,coord1);
cout << ' ' << flush;//Стираем
if(dir1 == LEFT)
{
if(a[coord1.Y][coord1.X-1]!=1)coord1.X--;
else dir1 = RIGHT;
}
else
{
if(a[coord1.Y][coord1.X+1]!=1)coord1.X++;
else dir1 = LEFT;
}
 
SetConsoleCursorPosition(console,coord1);
SetConsoleTextAttribute(console, FOREGROUND_RED|FOREGROUND_INTENSITY);//Цвет врага - красный
cout << (char)2 << flush;//Рисуем
SetConsoleTextAttribute(console, FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);//Возвращаем белый цвет
if(coord.X == coord1.X && coord.Y == coord1.Y)
{
lives--;
}
//Движение 2-го врага>>>
SetConsoleCursorPosition(console,coord2);
cout << ' ' << flush;//Стираем
if(dir2 == LEFT)
{
if(a[coord2.Y-1][coord2.X]!=1)coord2.Y--;
else dir2 = RIGHT;
}
else
{
if(a[coord2.Y+1][coord2.X]!=1)coord2.Y++;
else dir2 = LEFT;
}
 
SetConsoleCursorPosition(console,coord2);
SetConsoleTextAttribute(console, FOREGROUND_BLUE|FOREGROUND_INTENSITY);//Цвет врага - красный
cout << (char)2 << flush;//Рисуем
SetConsoleTextAttribute(console, FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);//Возвращаем белый цвет
if(coord.X == coord2.X && coord.Y == coord2.Y)
{
lives--;
}
//Движение 1-го врага<<<
 
if(_kbhit())//Если пользователь нажал клавишу
{
int code = _getch();//Получаем ее код
SetConsoleCursorPosition(console,coord);
cout << ' ' << flush;//Стираем смайл
switch(code)
{
case 'w': if(a[coord.Y-1][coord.X]!=1)coord.Y--;break;
case 's': if(a[coord.Y+1][coord.X]!=1)coord.Y++;break;
case 'a': if(a[coord.Y][coord.X-1]!=1)coord.X--;break;
case 'd': if(a[coord.Y][coord.X+1]!=1)coord.X++;break;
case 27: exit(1);
}
if(coord.X == coord1.X && coord.Y == coord1.Y)
{
lives--;
}
 
}
if(lives == 0)
{
system("cls");
COORD center={35,15};
SetConsoleCursorPosition(console,center);
cout << " G A M E O V E R!!!"<<flush;
_getch();
break;
}
SetConsoleCursorPosition(console,coordLives);
cout << "Lives: " << lives << flush;
SetConsoleTextAttribute(console, FOREGROUND_GREEN|FOREGROUND_INTENSITY);//Цвет смайла - зеленый
SetConsoleCursorPosition(console,coord);
cout << (char)1 << flush;//Выводим смайл
SetConsoleTextAttribute(console, FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);//Возвращаем белый цвет
SetConsoleCursorPosition(console,coord3);
cout << (char)2 << flush;//Выводим смайл
SetConsoleTextAttribute(console, FOREGROUND_GREEN|FOREGROUND_BLUE|FOREGROUND_RED);//Возвращаем белый цвет
}
}
 
[SIZE=1][COLOR=#666686]Добавлено через 54 секунды[/COLOR][/SIZE]
вот сам лабиринт
using namespace std;
const int Y = 20, X = 50;
enum DIR{UP, DOWN, LEFT, RIGHT};
void main()
{
int a[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,0,1,0,0,0,0,1,0,0,0,0,0,1,0,1,0,1,0,0,1,0,1,0,0, 0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,1,0,1,1,0,1,0,1,1,1,0,0,0,1,0,1,1,0,1,0,1,0,1, 1,1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,1,0,0,1,0,1,0,1,0,1,1,0,0,0,0,0,0,0,1,0,1,0,0, 0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,1,1,0,1,0,0,0,0,0,0,1,1,1,0,0,1,1,0,1,0,1,0,0, 0,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0, 0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,1,0,1,1,0,1,0,0, 0,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,1,0,0,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0, 0,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,1,1,1,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,1, 1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,0,0,0, 0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1, 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,1,1,0,1,1,1,1,0,1,1,0,1,0,0,1,1,1,1,0,1,1,1,1, 0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,1,0,1,0,0,1,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,1,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,1,1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,1,1,0,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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} ;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2009, 10:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос игра лабиринт (C++):

Игра Лабиринт - C++
В лабиринте средством перемещения так сказать &quot;персонажа&quot; являются стрелки.Помогите пожалуйста сделать так чтобы стена была стеной...

Игра Лабиринт - C++
Пишу простейшую игру лабиринт.Поле загружаю из файла, курсор двигаю клавишами через SetConsoleCursorPosition, как сделать ограничение на...

игра-ЛАБИРИНТ! - C++
Нужно написать игрушку-лабиринт, очень простую на С++! Она должна иметь несколько уровней (разных лабиринтов). Передвигается персонаж...

Лабиринт C++ - C++
я написал код лабиринта на c++, с помощью чего можно найти кратчайший путь выхода из лабиринта? #include &lt;iostream&gt; #include...

Лабиринт - C++
Народ помогите! есть задание: Лабиринт представляет собой квадрат, состоящий из NxN сегментов. Каждый из сегментов может быть либо...

Лабиринт - C++
Всем привет. Подскажите, вот делаю игру (понятно какую) но проблема. Вот код #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace...

1
XuTPbIu_MuHTAu
Эксперт С++
2226 / 741 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
23.01.2009, 11:59 #2
Почитай про Алгоритм Дейсктры (загугли). Составь на основе лабиринта граф - и запускай алгоритм. Можно вообще поискать другие алгоритмы поиска пути. Ну, идея в том,чтобы искать путь от "плохого смайлика" к смайлику игрока и по нему идти.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2009, 11:59
Привет! Вот еще темы с ответами:

лабиринт - C++
Всем привет. У меня проблема. В игре лабиринт получается, что каждый ход открывается новый лабиринт, как сделать, что бы он был один и тот...

Лабиринт - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;conio.h&gt; #include &lt;time.h&gt; #include &lt;cmath&gt; #include &lt;stdio.h&gt; using...

Лабиринт - C++
Вообщем у меня 2 проблемы: 1) Либирнт генерирует 2 раза 2) '8' ходит как хочит Поправте плз код #include &lt;iostream&gt; #include...

лабиринт - C++
Коридорами лабиринта разрешается двигаться только в направлениях, указанных стрелками. Человек вошел в комнату A и, выбирая случайным...


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

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

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