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

Найти ошибку - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проект из нескольких файлов http://www.cyberforum.ru/cpp-beginners/thread1651385.html
Всем привет. Столкнулся с проблемой. Использую codeblocks, совсем тривиальный пример. Есть три файла use.cpp my.cpp my.h. Файл my.cpp #include "my.h" #include <iostream> using namespace std;
C++ Лабораторные работы Всем доброго времени суток. Скажите пожалуйста, есть ли у кого-то готовое решение для таких задач ? 1)Найти сумму 1^2+ 2^2+ 3^2+... + 10^2. Операцию возведения в степень не использовать, учесть особенности получения квадрата натурального числа, отмеченные в предыдущей задаче. 2)Дано натуральное число. Определить, есть ли в нем цифры а и b. 3)Дано натуральное число. Установить, является... http://www.cyberforum.ru/cpp-beginners/thread1651383.html
Выражение должно быть допустимым для изменения левосторонним значением C++
//Структура пользователя программой struct User { char Login; char Password; }; User Array; //Функция входа в программу void Enter()
Getline() и cin C++
Проблема заключается в том, что после ввода через cin , getline() не работает, точнее работает, но непонятно для меня. Я так предполагаю, что после ввода через cin в потоке остается \n и getline() автоматом считывает его в нужную мне строку. Очистка потока вввода с cin.clear() не помогает. #include <iostream> #include <string> #include <conio.h> using namespace std; class Employee {...
C++ Определить количество отрицательных элементов массива С++ со вставкой Assembler http://www.cyberforum.ru/cpp-beginners/thread1651339.html
В программе на языке С ++ определить произвольный массив целых элементов. Ввод исходных данных и вывод результатов осуществить на языке С ++, а обработку согласно варианта как ассемблерную вставку в программе на языке высокого уровня. Собственно вариант: Определить количество отрицательных элементов массива. Помогите, добрые люди...
C++ Floating point exception (core dumped) Здравствуйте товарищи. Загорелся я на днях создать программу с процедурной генерацией мира. Но поскольку опыта с С++ у меня мало (раньше работал с С#, Java) - я столкнулся с проблемой, которую никак не могу решить и прошу вашей помощи. Ссылка на мой репозиторий Я подозреваю, что ошибка кроется где-то в getVertex, но как бы я не плясал - толку ноль... Самый большой прогресс это появление... подробнее

Показать сообщение отдельно
Александр321321
5 / 5 / 4
Регистрация: 11.11.2014
Сообщений: 230
30.01.2016, 18:37     Найти ошибку
Только что дописал змейку, вроде бы работает, только иногда, не появляется еда, хотя координаты её выводятся на экран. Предположительно она не появляется, потому что координаты совпали с телом змейки, но в коде это вроде бы прописано, проверьте плз. На всякий случай скину всё, а саму функцию с появлением еды сделаю жирной.
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
# include <iostream>
# include <windows.h>
# include <conio.h>
//using namespace std;
char symbol,a[100][100];
const int N = 13, M = 17;
int foodx,foody,snake_size, c_x, c_y, coordinates_x[100], coordinates_y[100];
 
 
void show_table()
// функция для вывода таблицы
{
    system("cls");
    // очищаем консоль
    for (int i = 0; i <= N + 1; ++i)  {
     for (int j = 0; j <= M + 1; ++j)  {
if (i == 0 || j == 0  || i == N + 1 || j == M + 1) {
        printf("#");
        if(j>M)
           printf("\n");
      }
else {
printf("%c",a[i][j]);
if(j>M)
 printf("\n");
 
}
     }
}
    }
 
    void show_snake_on_table()
{
     if(c_x == 1 && c_y == 0)
     a[coordinates_x[1]][coordinates_y[1]] = 'V';
     if(c_x == -1 && c_y == 0)
     a[coordinates_x[1]][coordinates_y[1]] = '^';
     if(c_x == 0 && c_y == 1)
     a[coordinates_x[1]][coordinates_y[1]] = '>';
     if(c_x == 0 && c_y == -1)
      a[coordinates_x[1]][coordinates_y[1]] = '<';
 
          for (int i = 2; i <= snake_size; ++i){
         a[coordinates_x[i]][coordinates_y[i]] = '*';
       }
}
   void clear_snake_on_table()
{
     for (int i = 1; i <= snake_size; i++)
      a[coordinates_x[i]][coordinates_y[i]] = ' ';
}
 
 void check_coordinates()
{
    if (coordinates_x[1] > N) coordinates_x[1] = 1;
    if (coordinates_x[1] < 1) coordinates_x[1] = N;
    if (coordinates_y[1] > M) coordinates_y[1] = 1;
    if (coordinates_y[1] < 1) coordinates_y[1] = M;
}
 
void klav(){
symbol = getch();
if (symbol=='w' & c_x != -1 & c_y != 0) {
     c_x = -1;
     c_y = 0;
}
if (symbol=='a' & c_x != 0 & c_y != -1) {
     c_x = 0;
     c_y = -1;
}
if (symbol=='s' & c_x != 1 & c_y != 0) {
     c_x = 1;
     c_y = 0;
}
if (symbol=='d' & c_x != 0 & c_y != 1) {
     c_x = 0;
     c_y = 1;
}
 
}
 
[B]void edaran(){
  foodx=random(N-1)+1;    //задаются рандомные координаты для еды
  foody=random(M-1)+1;
 }[/B]
 
void dead(){
  printf("Game over. Rezyltat = %i   ",snake_size) ;
  system("pause");
  exit(0);
}
 
[B]void eda(){
   for (int i = 1; i <= snake_size; ++i){
  if (a[foodx][foody]==a[coordinates_x[i]][coordinates_y[i]]) {   //тут проверяются координаты, чтобы не совпадали с змеёй, а если совпадают, то снова даются рандомные координаты
  edaran();
  }
  }
  a[foodx][foody]='q';   --сама еда
}[/B]
 
 
   void next_step()
{   clear_snake_on_table();
 
 
     for (int i = snake_size; i >= 2; --i)
     {
         coordinates_x[i] = coordinates_x[i - 1];
         coordinates_y[i] = coordinates_y[i - 1];
     }
     coordinates_x[1] += c_x;
     coordinates_y[1] += c_y;
      for (int i = 2; i <= snake_size ; i++) {
    if (coordinates_x[1] ==  coordinates_x[i] && coordinates_y[1]==coordinates_y[i]) {
      dead();
    }
    if (a[coordinates_x[1]][coordinates_y[1]]=='q') {
 
      a[foodx][foody]=' ';
      eda();
          snake_size= snake_size++;
    }
 
          check_coordinates();
 
         show_snake_on_table();
 
    }
}
 
 
 
void standart_settings()
{
     snake_size = 9;
     edaran();
     coordinates_x[1] = 7;
     coordinates_y[1] = 1;
     c_x = 0;
     c_y = 1;
        eda();
}
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{ int r=snake_size-9;
  standart_settings();
for (int e=1;e<30;e++)   {
        if (kbhit() == true)
         klav();
 
     show_table();
      next_step();
     if (e>=25) {
     e=0;
     }
     r=snake_size-9;
     printf("Vash Rezyl'tat %i   %i %i",r, foodx,foody);
}
    getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru