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

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

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

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

03.05.2014, 14:55. Просмотров 196. Ответов 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");
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2014, 14:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Бесконечный цикл, змейка (C++):

Почему цикл на при 1 уходит в бесконечный цикл? - C++
#define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { int x=0, y=0,...

Бесконечный цикл - C++
Есть бесконечный цикл,благодаря которому постоянно вызываются функции. Из за этого бесконечного цикла глючит программу. Есть ли другой...

Бесконечный цикл - C++
Доброго времени суток! Написал программу в среде Visual Studio 2010 Win32 project, но в ней есть кусок кода, когда происходит...

Бесконечный цикл - C++
if (!(cin &gt;&gt; Mas &gt;&gt; Rost)) { cout &lt;&lt; &quot;Ошибка\n&quot;; continue; } В общем при вводе букв начинается бесконечный цикл, а надо...

Бесконечный цикл - C++
Задача: Дед Мазай спасает зайцев. На N островках находится некоторое количество зайцев разной массы. Грузоподъемность лодки Мазая...

Бесконечный цикл - C++
Как ввести программу в бесконечный цикл на C++ ? Смотрел видео где делали бесконечный цикл (НО!) это было на Small Basic'е, а мне нужно...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2014, 14:55
Привет! Вот еще темы с ответами:

бесконечный цикл - C++
Когда пытаюсь считать строки из файла с помощью цикла, он почему то начинает повторятся бесконечно. Вот код: int main(int argc, char*...

Бесконечный цикл - C++
Так. Консоль CLR Вод программа: #include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &quot;stdio.h&quot; using namespace...

Бесконечный цикл - C++
Здравствуйте. Программа должна принимать некоторые значения, обрабатывать их и выдавать в виде статистики (нарисовать звездочками). ...

Бесконечный цикл - C++
Задача: Ввести количество камней, ввести вес каждого камня, сложить камни в 2 кучки так чтобы разница между общими массами кучек были...


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

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

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