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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ GDIPlus и динамический массив для многоугольника http://www.cyberforum.ru/cpp-beginners/thread1164873.html
Нигде не нашел решения такой проблемы. Имеются два вектора vector<int> с одинаковым количеством элементов ArrXY_SIZE: один с координатами X, второй с координатами Y точек для рисования многоугольника Polygon. Есть размер массива точек для рисования многоугольника: const short ARR_Dst_SIZE = ArrXY_SIZE; // Размер динамического массива Константа ArrXY_SIZE равна размеру векторов. Есть...
C++ Метод Эйлера Подскажите пожалуйста, первая модификация метода Эйлера- это усреднение или центрирование? http://www.cyberforum.ru/cpp-beginners/thread1164869.html
C++ Двунапревленный список вещественных чисел
Господа, нужна ваша помощь. Нужно создать двунаправленный список элементов вещественного типа. Затем найти вещественное число введенное с клавиатуры и удалить его. Это нужно сделать, используя динамические структуры. Классы не использовать, преподаватель наложил на них табу Заранее благодарен.
Не корректно выводит числа массива C++
Программа сортирует парные числа по возрастанию, а не парные по убыванию Но проблема в том что в консоле выводит числа типа -84215... хотя обращение к адресу вроде коректно #include <iostream> #include <conio.h> using namespace std; const int N = 4;
C++ Наследование операторов http://www.cyberforum.ru/cpp-beginners/thread1164833.html
Пожалуйста, подскажите как правильно задать оператор например =, в базовом классе, а вызывать в классе потомке, на примере: Базовый Базовый::operator=(const Базовый &b) {... } Строка Строка::operator=(const Строка &b) { return this->Базовый::operator=(b);//что здесь нужно написать? }
C++ Что за что отвечает в программе? Не могу разобраться #include "stdafx.h" #include <iostream> #include <cstring> #include <math.h> using namespace std; int Proverka (int N) { int a; int b; int k=0; int k1=0; подробнее

Показать сообщение отдельно
Pxinxs
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 32
03.05.2014, 14:55     Бесконечный цикл, змейка
Делаю змейку, но столкнулся с проблемой
Есть функция движения (то есть в моем случаи отрисовка следующего элементов змеи), также есть бесконечный цикл. Но дело в том, что элементы не двигаються( а двигаються только тогда, когда пробегаюсь дебагом по программе.
Кидаю весь код для большей наглядности
Саму змейку делал структурной
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");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru