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

Не могу разобраться с отработкой циклов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Строка в стиле С http://www.cyberforum.ru/cpp-beginners/thread268794.html
Чем отличается строка в стиле классического С и С++?
C++ наследование Задача : Базовый класс: class Shape2D { public: Shape2D(); virtual ~ Shape2D(); virtual float Area( )= 0; virtual float Perimeter() = 0; virtual void PrintMessage(); http://www.cyberforum.ru/cpp-beginners/thread268784.html
C++ Матрица
2.3) Дана квадратная матрица.Поменять последние элементы каждого столбца с элементами главной диагонали.
C++ строковый массив. сортировка и поиск в нем
помгите с задачей, пожалуйста. даже не знаю, с чего начать дан одномерный массив, состоящий из произвольного количества слов, каждое из которых имеет одну или больше букв "О". Организовать его сортировку по возростанию способом обмена. Ключ сортировки - количество в слове букв "О". Вывести информацию о том, сколько слов в массиве имело только одну букву "О". Особенности: использовать...
C++ Системы искусственного интелекта http://www.cyberforum.ru/cpp-beginners/thread268729.html
Помогите разобраться!Нужно написать программу на си#, которая ставит диагноз по истории болезни... даже не знаю с какой стороны подойти к этой задаче....
C++ Описание программы Помогите разобратся в программе... кто нибудь может написать описание к каждой строчке?? Вот текст программы: #include <stdio.h> #include <conio.h> int doska; int horizontal, vertical; подробнее

Показать сообщение отдельно
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
02.04.2011, 18:25     Не могу разобраться с отработкой циклов
Функция GetAsyncKeyState - но это для Windows.
А у тебя не виндоус, так что не знаю. Может в conio есть аналогичное что-то.

Добавлено через 14 минут
1 - добавить звено
3 - удалить
При движении влево добавляются некорректно, т.к. проверок никаких естессно не делал.
Зато анимация уже есть.)
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
#include <conio.h>
#include <list>
 
#define SIZE1 21
#define SIZE2 60
 
typedef std::pair<int,int> Link;
typedef std::list<Link> Snake;
 
Link operator+ ( Link lhs, const Link & rhs )
{
    lhs.first += rhs.first;
    lhs.second += rhs.second;
    return lhs;
}
 
bool SnakeHere(const Snake & s, int w, int h )
{
    for( Snake::const_iterator ii = s.begin(); ii != s.end(); ++ii )
    {
        if( ii->first == w && ii->second == h )
            return true;
    }
 
    return false;
}
 
void AddLink( Snake & snake, int count )
{
    for( int i = 0; i < count; ++i )
        snake.push_back(snake.back() + Link(1,0));
}
 
void RemoveLink( Snake & snake, int count )
{
    for( int i = 0; i < count; ++i )
        snake.pop_front();
}
 
void Play()
{
    Snake snake;
    const int linkCount = 10;
 
    for( int i = 0; i < linkCount; ++i )
        snake.push_back( Link(i+1,1) );
 
    Link dir(1,0);
 
    while( true )
    {
        system("cls");
        
        for( int h = 0; h < SIZE1; ++h )
        {
            for( int w =0; w < SIZE2; ++w )
            {
                const bool edge = h == 0 || h == (SIZE1-1) || w == 0 || w == (SIZE2-1);
                if( edge )
                    putch( 'W' );
                else  if( SnakeHere( snake, w, h ) )
                    putch( 'O' );
                else
                    putch( ' ' );
            }
            putch( '\n' );
        }
 
        if( kbhit() )
        {
            switch( getch() )
            {
            case 'q':
                return;
            case 'w':
                dir = Link(0,-1);
                break;
            case 'a':
                dir = Link(-1,0);
                break;
            case 'd':
                dir = Link(1,0);
                break;
            case 's':
                dir = Link(0,1);
                break;
            case '1':
                AddLink( snake, 1 );
                break;
            case '3':
                RemoveLink(snake, 1);
                break;
            };
        }
        snake.pop_front();
        snake.push_back( snake.back() + dir );
    };
 
}
 
int main() {
    Play();
    return 0;
}
 
Текущее время: 02:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru