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

Циклы - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
25.07.2012, 22:35     Циклы #1
Нужна помощь с циклом.Есть определенный массив из которого необходимо вытащить данные и поставить в цикл, так же необходимо делать проверку, вот что у меня получилось:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
LPDIRECT3DTEXTURE9 values[4];
    values[0] = Green; 
    values[1] = Red; 
    values[2] = Yellow; 
    values[3] = Blue; 
 
    while (GetAsyncKeyState(VK_NUMPAD1) &1 )
     {
         for (int i=0; i <= 4; ++i)
        {
        x = values[i];
        bFugas = !bFugas;
        }
        
 
     }
Т.Е при нажатии на num1 , должна происходить смена цвета)
P.S Надеюсь написал понятным языком)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2012, 22:35     Циклы
Посмотрите здесь:

C++ Циклы
циклы for, while C++
C++ циклы
C++ циклы
Циклы WHILE, DO-WHILE. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
25.07.2012, 23:01     Циклы #2
скажу так : ппц ты объяснил!
одно замечание
C++
1
for (int i=0; i < 4; ++i)
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
25.07.2012, 23:08  [ТС]     Циклы #3
Цитата Сообщение от Leomana Посмотреть сообщение
скажу так : ппц ты объяснил!
одно замечание
C++
1
for (int i=0; i < 4; ++i)
Попробую объяснить) Я создаю свой wh, и мне нужно, чтоб при нажатии на num1 происходила смена цвета подсвечиваемой текстуры!) Для этого я создал массив, и создал цикл.. Но дальше запарка)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 06:31     Циклы #4
И что не работает? Вход в while если нажата num1. Так? Там четыре раза меняется значение x и bFugas. Это и есть смена цвета? Проверки только не видно.
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
26.07.2012, 09:23  [ТС]     Циклы #5
Цитата Сообщение от alsav22 Посмотреть сообщение
И что не работает? Вход в while если нажата num1. Так? Там четыре раза меняется значение x и bFugas. Это и есть смена цвета? Проверки только не видно.
Какой проверки?) Мне нужно. что если я 1 раз нажал, то цвет 1 раз и сменился!
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 09:55     Циклы #6
Цитата Сообщение от Igrom@n Посмотреть сообщение
Какой проверки?)
Цитата Сообщение от Igrom@n Посмотреть сообщение
Нужна помощь с циклом.Есть определенный массив из которого необходимо вытащить данные и поставить в цикл, так же необходимо делать проверку, вот что у меня получилось:
Это кто писал? Не вы?
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
26.07.2012, 10:01     Циклы #7
Попробую предположить.
C++
1
2
3
4
5
while (GetAsyncKeyState(VK_NUMPAD1) &1 )
{
   x = values[++i];
   bFugas = !bFugas;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 10:18     Циклы #8
Цитата Сообщение от Intel~lect Посмотреть сообщение
Попробую предположить.
C++
1
2
3
4
5
while (GetAsyncKeyState(VK_NUMPAD1) &1 )
{
   x = values[++i];
   bFugas = !bFugas;
}
А контроль за i ?
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
26.07.2012, 10:33     Циклы #9
Цитата Сообщение от alsav22 Посмотреть сообщение
А контроль за i ?
Ну это не сложно. Добавить условие что-то вроде этого:
C++
1
2
3
4
5
6
7
if (i>=0 && i<3)
   x = values[++i];
else
{
   i = 0;
   x = values[i];
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 10:48     Циклы #10
Цитата Сообщение от Igrom@n Посмотреть сообщение
P.S Надеюсь написал понятным языком)
Опишите поподробней, что должно происходить. Например, просто смена цвета на следующий в списке и дальше поехали, или, перебор цветов (при каждом нажатии на клавишу), выбор нужного, и уже тогда дальше поехали?
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,185
Завершенные тесты: 1
26.07.2012, 10:57     Циклы #11
А может имелось ввиду что-то такого типа:
C++
1
2
3
4
5
6
7
8
9
10
i=0;
while (true)
{
   if(GetAsyncKeyState(VK_NUMPAD1) &1)
   {
        x = values[i++];
        bFugas = !bFugas;
        if(i==4)i=0;
    }
}
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
26.07.2012, 11:10  [ТС]     Циклы #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Это кто писал? Не вы?
Писал я)
C++ (Qt)
1
2
3
4
5
while (GetAsyncKeyState(VK_NUMPAD1) &1 )
{
   x = values[++i];
   bFugas = !bFugas;
}
пробовал) загорается 1 цветом, при нажатии 2 раз затухает(
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 11:16     Циклы #13
Если просто сменить цвет на следующий и выйти, то можно, наверное, так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
while (true)
{
if (GetAsyncKeyState(VK_NUMPAD1) &1)
{
    if (i < 3)
    {
        x = values[++i];
        bFugas = !bFugas;
        break;
    }
    else
    {
        i = 0;
        x = values[i];
        bFugas = !bFugas;
        break;
    }
}
}
В while будет ожидаться нажатие клавиши, при нажатии меняется x и bFugas(за что отвечает - не знаю) и выход.
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
26.07.2012, 11:29  [ТС]     Циклы #14
Цитата Сообщение от zss Посмотреть сообщение
А может имелось ввиду что-то такого типа:
C++
1
2
3
4
5
6
7
8
9
10
i=0;
while (true)
{
   if(GetAsyncKeyState(VK_NUMPAD1) &1)
   {
        x = values[i++];
        bFugas = !bFugas;
        if(i==4)i=0;
    }
}
с этим игра вообще не запускается =)

Добавлено через 9 минут
Цитата Сообщение от alsav22 Посмотреть сообщение
Опишите поподробней, что должно происходить. Например, просто смена цвета на следующий в списке и дальше поехали, или, перебор цветов (при каждом нажатии на клавишу), выбор нужного, и уже тогда дальше поехали?
При нажатии на клавишу, необходимо брать цвет из массива подставлять в функцию, при достижении конечного элемента сбросится(т.е ничего не должно светится).

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Если просто сменить цвет на следующий и выйти, то можно, наверное, так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
while (true)
{
if (GetAsyncKeyState(VK_NUMPAD1) &1)
{
    if (i < 3)
    {
        x = values[++i];
        bFugas = !bFugas;
        break;
    }
    else
    {
        i = 0;
        x = values[i];
        bFugas = !bFugas;
        break;
    }
}
}
В while будет ожидаться нажатие клавиши, при нажатии меняется x и bFugas(за что отвечает - не знаю) и выход.
С while(true) игра вообще не загружается)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 11:32     Циклы #15
Если можете, покажите полный код.

Добавлено через 3 минуты
Цитата Сообщение от Igrom@n Посмотреть сообщение
брать цвет из массива подставлять в функцию
В какую функцию?
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
26.07.2012, 11:36  [ТС]     Циклы #16
Цитата Сообщение от alsav22 Посмотреть сообщение
Если можете, покажите полный код.
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
HRESULT APIENTRY hkIDirect3DDevice9::DrawIndexedPrimitive(D3DPRIMITIVETYPE device,INT BaseVertexIndex,UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount)
{
 
LPDIRECT3DTEXTURE9 x,y;
LPDIRECT3DTEXTURE9 values[4];
values[0] = Green; 
values[1] = Red; 
values[2] = Yellow; 
values[3] = Blue; 
 
 
    if (GetAsyncKeyState(VK_NUMPAD1) &1 )
     {
         for (int i=0; i < 4; ++i)
 
        {
        x = values[i];
        bFugas = !bFugas;
        }
    }
 
 
 
if (bFugas) 
 { 
 if (Fugas) 
 { 
 DWORD dwOldZEnable; 
 m_pD3Ddev->GetRenderState(D3DRS_ZENABLE,&dwOldZEnable); 
 m_pD3Ddev->SetRenderState(D3DRS_ZENABLE,D3DZB_FALSE); 
 m_pD3Ddev->SetTexture(0,White);
 m_pD3Ddev->DrawIndexedPrimitive(device,BaseVertexIndex,MinVertexIndex,NumVertices,startIndex,primCount); 
 m_pD3Ddev->SetRenderState(D3DRS_ZENABLE,dwOldZEnable); 
 m_pD3Ddev->SetTexture(0,x);
 } 
 }
 
 
    HRESULT hRet = m_pD3Ddev->DrawIndexedPrimitive(device, BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
    return hRet;
}
Это участок кода с которым на данный момент работаю) Или надо полностью исходник?
P.S Вот с этим текстура подсвечивается 2 цветом, а при нажатии 2 раз просто отключается):
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
while (GetAsyncKeyState(VK_NUMPAD1) &1 )
{
   x = values[++i];
   bFugas = !bFugas;
}
 
i=0;
while (true)
{
   if(GetAsyncKeyState(VK_NUMPAD1) &1)
   {
        x = values[i++];
        bFugas = !bFugas;
        if(i==4)i=0;
    }
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 11:43     Циклы #17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
while (GetAsyncKeyState(VK_NUMPAD1) &1 )
{
   x = values[++i];
   bFugas = !bFugas;
}
 
i=0;
while (true)
{
   if(GetAsyncKeyState(VK_NUMPAD1) &1)
   {
        x = values[i++];
        bFugas = !bFugas;
        if(i==4)i=0;
    }
}
Во втором выхода из while нет.
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
26.07.2012, 11:49  [ТС]     Циклы #18
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
while (GetAsyncKeyState(VK_NUMPAD1) &1 )
{
   x = values[++i];
   bFugas = !bFugas;
}
 
i=0;
while (true)
{
   if(GetAsyncKeyState(VK_NUMPAD1) &1)
   {
        x = values[i++];
        bFugas = !bFugas;
        if(i==4)i=0;
    }
}
Во втором выхода из while нет.
Простите, отпечатался(не то скопировал) вот правильное:
C
1
2
3
4
5
6
7
8
9
10
11
12
while (GetAsyncKeyState(VK_NUMPAD1) &1 )
{
   x = values[++i];
   bFugas = !bFugas;
}
if (i>=0 && i<3)
   x = values[++i];
else
{
   i = 0;
   x = values[i];
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.07.2012, 11:53     Циклы #19
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int i = 0;
while (GetAsyncKeyState(VK_NUMPAD1) &1 )
{
 if (i<3)
{
   x = values[++i];
   bFugas = !bFugas;
}
else
{
   i = 0;
   x = values[i];
   bFugas = !bFugas;
}
}
Так попробуйте.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2012, 11:59     Циклы
Еще ссылки по теме:

с++ циклы C++
Циклы в С++ C++
C++ Циклы в с++

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

Или воспользуйтесь поиском по форуму:
Igrom@n
0 / 0 / 0
Регистрация: 25.07.2012
Сообщений: 35
26.07.2012, 11:59  [ТС]     Циклы #20
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int i = 0;
while (GetAsyncKeyState(VK_NUMPAD1) &1 )
{
 if (i<3)
{
   x = values[++i];
   bFugas = !bFugas;
}
else
{
   i = 0;
   x = values[i];
   bFugas = !bFugas;
}
}
Так попробуйте.
Пробовал, краш
Yandex
Объявления
26.07.2012, 11:59     Циклы
Ответ Создать тему
Опции темы

Текущее время: 13:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru