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

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

Войти
Регистрация
Восстановить пароль
 
Pxinxs
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 32
#1

Бесконечный цикл, змейка - C++

03.05.2014, 14:55. Просмотров 193. Ответов 0
Метки нет (Все метки)

Делаю змейку, но столкнулся с проблемой
Есть функция движения (то есть в моем случаи отрисовка следующего элементов змеи), также есть бесконечный цикл. Но дело в том, что элементы не двигаються( а двигаються только тогда, когда пробегаюсь дебагом по программе.
Кидаю весь код для большей наглядности
Саму змейку делал структурной
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
#include <iostream>
#include <conio.h>
#include <Windows.h>
#include <time.h>
using namespace std;
 
enum VECTOR 
{
    vverh,
    vniz,
    vlevo,
    vpravo
}; 
struct Position                
{
    int x_pos;
    int y_pos;
};
void gotoxy(int x,int y,char c)
{
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
 
    _COORD pos;
    pos.X=x;
    pos.Y=y;
 
    SetConsoleCursorPosition(hConsole,pos);
    cout<<c;
}
 
const int size = 1200;
int score = 0;
int k = 4;
int n = 2;
int k1 = 1;
int n1 = 1;
 
void func_one (Position arr[], int snake_size, char symbol = '*')
{
    for (int i=0; i<snake_size; ++i)
    {
        gotoxy(arr[i].x_pos, arr[i].y_pos, symbol);
    }
}
VECTOR move (VECTOR vector)
{
    int dvishenie = _getch();
    if (dvishenie==72 && vector != vpravo)      //vlevo
        vector=vlevo;
    else if (dvishenie==80 && vector != vlevo)  //vpravo
        vector=vpravo;
    else if (dvishenie==75 && vector != vverh)  //vniz
        vector=vniz;
    else if (dvishenie==77 && vector != vniz)   //vverh
        vector=vverh;
    return vector;
}
void polojit_plus (int arr[size])
{
a:
    srand(time(0));
    int x=rand()%size+1;
    if (arr[x] != 0)
        goto a;
    gotoxy(x,0,'+');
}
void dvijhenie(Position arr[], VECTOR vector,int snake_size)
{
    int time = clock(); 
    if (time < clock())
    {
        if (vector==vlevo)
        { 
 
            arr[k].x_pos--;
            gotoxy(arr[k].x_pos,arr[n].y_pos,'*');
        }
        else if (vector==vpravo)
        {
            arr[k1].x_pos++;
            gotoxy(arr[k1].x_pos,arr[n1].y_pos,'&');
            arr[k].x_pos++;
            gotoxy(arr[k].x_pos,arr[n].y_pos,'*');
        }
        else if (vector==vverh)
        {
            arr[n].y_pos--;
            gotoxy(arr[k].x_pos,arr[n].y_pos,'*');
        }
        else if (vector==vniz)
        {
            arr[n].y_pos++;
            gotoxy(arr[k].x_pos,arr[n].y_pos,'*');
        }
    }
}
int main()
{
    Position mas_mas[6];
    mas_mas[0].x_pos = 4;
    mas_mas[0].y_pos = 2;
    mas_mas[1].x_pos = 3;
    mas_mas[1].y_pos = 2;
    mas_mas[2].x_pos = 2;
    mas_mas[2].y_pos = 2;
    int snake_size = 3;
    func_one (mas_mas,snake_size);
 
    mas_mas[k].x_pos = 4;           //голова змеи по х
    mas_mas[n].y_pos = 2;           //голова змие по у
 
    mas_mas[k1].x_pos = 1;          //хвост змеи по х
    mas_mas[n1].y_pos = 2;          //хвост змеи по у
 
    //polojit_plus(mas);
    VECTOR vector = vpravo;
    clock();                        //возвращает количество милшисекунд, которые прошли с начала игры
    while (true)
    {
        if(_kbhit())
            vector=move(vector);
 
        dvijhenie (mas_mas,vector,snake_size);
 
        Sleep(400);     
    }
    gotoxy(21,0,' ');
    cout<<endl;
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2014, 14:55     Бесконечный цикл, змейка
Посмотрите здесь:

Бесконечный цикл - C++
Простите что с таким лёгким вопросом, но мистика окутывает мою учёбу всё больше и больше ^^ Тут програмка которая считает сумму каждого...

Не работает бесконечный цикл - C++
#include &lt;iostream&gt; // для оператора cout #include &lt;cctype&gt; // для функции islower #include &lt;cmath&gt; //для математич. вычислений ...

Уходит в бесконечный цикл - C++
int main() { setlocale(LC_ALL, &quot;rus&quot;); system(&quot;COLOR CE&quot;); system(&quot;cls&quot;); int n=99; string text; vector &lt;string&gt; slova;...

Устранить бесконечный цикл - C++
Можете подсказать в чем ошибка? Программа запускается, но, после ввода основания и 2ух чисел, останавливается. #include &quot;stdafx.h&quot; ...

while : переходит в бесконечный цикл - C++
#include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; int main() { int y,n; cout&lt;&lt;&quot;n: &quot;; cin&gt;&gt;n; ...

как создать бесконечный цикл - C++
помогите)нужно чтоб можно было вводить несколько раз за сеанс)экзе файл закрывается

Бесконечный цикл. Двумерные массивы - C++
Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной...

Бесконечный цикл не вешающий программу - C++
Добрый день. Столкнулся с тем, что мне необходимо мониторить директорию на наличие определенного файла. Суть в том, что цикл мониторинга...

Бесконечный цикл -замена рекурсией - C++
Привет всем. имеется код функции float expr() { float resplus=factor(); for(;;)

Бесконечный цикл при исключениях - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;exception&gt; #include &lt;locale.h&gt; using namespace std; int...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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