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

неработает где ошибка? - C++

Восстановить пароль Регистрация
 
Aziz_05
 Аватар для Aziz_05
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 24
04.06.2013, 10:24     неработает где ошибка? #1
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
#include <graphics.h> //Подключаем графическую библиотеку
#include <stdlib.h> //Библиотека содержит функцию exit
  //(см. GraphInit)
#include <stdio.h> //Библиотека содержит функцию printf
  //(см. GraphInit)
#include <conio.h> //Библиотека содержит функцию getch
 
enum Direction {LEFT, UP, RIGHT, DOWN}; 
  //Перечисляемый тип - направления движения
 
const int Width = 15; //Ширина поля в клетках
const int Height = 15; //Высота поля в клетках
const int CellSize = 30; //Размер клетки в пикселах
 
int Cell[Width][Height]={ //Задаем массив клеток поля
{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, 1},
{1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1},
{1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1},
{1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1},
{1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0},
{1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1},
{1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1},
{1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1},
{1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1},
{1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
}; //Ноль - клетка свободна, единица - клетка занята
 
void DrawField() //Функция, рисующая поле
 {
 setcolor(WHITE); //Устанавливаем цвет линий
 rectangle(0, 0, 30 * Width, 30 * Height); //Внешняя граница поля
 for (int i = 1; i < (Width - 1); i++) 
  //Рисуем вертикальные линии сетки
  line(i * CellSize, 1, i * CellSize, Height * CellSize);
 for (i = 1; i <= (Height - 1); i++) //Горизонтальные линии
  line(1, i * CellSize, Width * CellSize, i * CellSize);
 setfillstyle(1, WHITE); //Устанавливаем стиль заливки
 for (i = 0; i < Width; i++)
  for (int j = 0; j < Height; j++)
   if (Cell[i][j] == 1) //Рисуем все занятые клетки
    bar(i * CellSize, j * CellSize, (i + 1) * CellSize, 
  (j + 1) * CellSize);
 }
 
class CharacterClass //Класс "Персонажа"
 {
 int Radius; //Радиус круга
 int X, Y; //Положение на поле
 public: 
 CharacterClass(); //Конструктор класса
 void Draw(); //Функция, рисующая "персонаж"
 void Erase(); //Функция, стирающая "персонаж"
 void Move(int Cell[Width][Height], Direction dir); 
  //Движение "персонажа". Аргументы - массив клеток поля и 
  //направление движения
 };
CharacterClass::CharacterClass()
 {
 Radius = 15;
 X = 7; Y = 0; //Устанавливаем начальные координаты -
  //на одной из свободных клеток поля
 }
void CharacterClass::Draw()
 {
 setcolor(BLUE); //Устанавливаем цвет линии окружности...
 setfillstyle(1, BLUE); //...и цвет внутренней заливки
 fillellipse((2 * X + 1) * Radius, (2 * Y + 1) * Radius, Radius, 
  Radius); //Окружность с закрашенной внутренней областью
 }
void CharacterClass::Erase()
 {
 setcolor(BLACK); //Устанавливаем цвета фона
 setfillstyle(1, BLACK);
 fillellipse((2 * X + 1) * Radius, (2 * Y + 1) * Radius, Radius, 
  Radius);
 }
void CharacterClass::Move(int Cell[Width][Height], Direction dir)
 {
 Erase(); //Перед перемещением закрашиваем текущее положение
 switch(dir) //В зависимости от направлении движения...
  { //...если клетка-цель пуста и не будет выхода за пределы поля,
  //перемещаем "персонаж"
  case LEFT: if ((X > 0) && Cell[X - 1][Y] != 1) X--; break;
  case UP: if (Y > 0 && Cell[X][Y - 1] != 1) Y--; break;
  case RIGHT: if (X < Width && Cell[X + 1][Y] != 1) X++; break;
  case DOWN: if (Y < Height && Cell[X][Y + 1] != 1) Y++; break;
  }
 Draw(); //Рисуем в новом положении
 }
 
void main()
{
GraphInit(); //Текст функции расположен по ссылке.
  //Функция инициализирует графику
 
int exitOk = 0; //Флаг, означающий выход из программы
char c; //Считываемый с клавиатуры символ
 
DrawField(); //Сначала рисуем поле
 
CharacterClass Character;
Character.Draw(); //Рисуем "персонаж"
 
while (!exitOk)
 {
 c = getch(); //Считываем с клавиатуры символ
 switch (c) //Если была нажата клавиша-стрелка,..
  { //...перемещаем "персонаж"
  case 27: exitOk = !0; //Выход по "Escape"
  case 75: Character.Move(Cell, LEFT); break;
  case 72: Character.Move(Cell, UP); break;
  case 77: Character.Move(Cell, RIGHT); break;
  case 80: Character.Move(Cell, DOWN); break;
  }
 DrawField(); //После перемещения вновь рисуем поле
 }
closegraph();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 10:24     неработает где ошибка?
Посмотрите здесь:

C++ Где ошибка??
где ошибка? C++
Где ошибка ? C++
C++ Где ошибка?
C++ Вывести на экран количество слов где первая и последняя буквы одинаковы (не понимаю где ошибка)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
 Аватар для anmartex
1700 / 1193 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
04.06.2013, 11:45     неработает где ошибка? #2
Цитата Сообщение от Aziz_05 Посмотреть сообщение
Не работает, где ошибка?
Всё работает, просто в связи с тем, что вы использовали getch() (строк 111), то и ввод будет ожидаться с консоли. Я не знаю какой реализацией BGI вы пользуетесь, но вот в той реализации, которой воспользовался я, есть функция readkey. С ней всё нормально работает:
C++
1
2
      // Строка 110
      c = readkey; //Считываем с клавиатуры символ
неработает где ошибка?

Бинарник: program.7z

P.S.: шарик в красный перекрасил я, его просто не было видно.
Aziz_05
 Аватар для Aziz_05
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 24
06.06.2013, 09:50  [ТС]     неработает где ошибка? #3
какая у вас программа у меня <kode bloks> на нём не работает,
anmartex
...
 Аватар для anmartex
1700 / 1193 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
06.06.2013, 10:52     неработает где ошибка? #4
Цитата Сообщение от Aziz_05 Посмотреть сообщение
какая у вас программа у меня <kode bloks> на нём не работает
Code::Blocks - это IDE, а вот компилятор скорее всего MinGW-GCC. Я тоже пользуюсь таким же компилятором, но вот камень преткновения -библиотека graphics.

Цитата Сообщение от anmartex Посмотреть сообщение
Я не знаю какой реализацией BGI вы пользуетесь
Я пользовался вот этой библиотекой: openbgi. Если не имеете представления как собирать её, то можете взять готовую мою. В папочку с компилятором скопируйте заголовочный файл в include, а саму библиотеку в lib.

В свойствах проекта не забудьте указать подключение библиотеки openbgi. Кроме неё ещё нужно будет указать gdi32 библиотеку, ибо openbgi базируется на ней.
Вложения
Тип файла: 7z openbgi.7z (15.0 Кб, 8 просмотров)
Yandex
Объявления
06.06.2013, 10:52     неработает где ошибка?
Ответ Создать тему
Опции темы

Текущее время: 23:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru