2016-03-30 4 views
0

Мне нужна помощь с некоторым кодом на C++. Я пытаюсь сделать программу, где слово вверх идет вверх и вниз, идет по экрану. Я хочу, чтобы это делалось 3 раза. Моя программа успешна, когда слова делают то, что я хочу, чтобы они делали. Однако он не делает это 3 раза. Я положил его в цикл for, поэтому я не уверен, что не так. Я учусь, поэтому мне просто нужна помощь, чтобы понять, что я делаю неправильно. Вот мой код:Основные проблемы с кодом C++

#include <iostream> 
#include<windows.h> 
using namespace std; 

int main() 
{ 
    HANDLE screen = GetStdHandle(STD_OUTPUT_HANDLE); 
    COORD posUp = {5,25}; 
    COORD posDown = {68,1}; 

    SetConsoleCursorPosition(screen, posUp); 
    cout<<"Up"<<endl; 
    SetConsoleCursorPosition(screen, posDown); 
    cout<< "Down"<<endl; 
    Sleep(400); 
    for(int comeback=1; comeback<=3; comeback++) { 
     while(posUp.Y > 1 && posDown.Y < 24) { 
      SetConsoleCursorPosition(screen,posUp); 
      cout<<" "<<endl; 
      posUp.Y--; 
      SetConsoleCursorPosition(screen, posUp); 
      cout<<"Up"<<endl; 
      SetConsoleCursorPosition(screen, posDown); 
      cout<<" "; 
      posDown.Y++; 
      SetConsoleCursorPosition(screen, posDown); 
      cout<<"Down"<<endl; 
      Sleep(100); 
     } 

     SetConsoleCursorPosition(screen, posUp); 
     cout<<" "<<endl; 
     SetConsoleCursorPosition(screen, posDown); 
     cout<< " "<<endl; 
     Sleep(100); 
    } 
    return 0; 
} 
+1

Рассмотрите значение 'posUp.Y' во второй раз по внешнему циклу. Что это будет с вашей внутренней петлей? –

ответ

0

Я похож ваш уменьшающийся posUp и приращении posDown в то время цикла, но не сбросить значения в конце для цикла.

for(int comeback=1; comeback<=3; comeback++) { 
    while(posUp.Y > 1 && posDown.Y < 24) { 
     SetConsoleCursorPosition(screen,posUp); 
     cout<<" "<<endl; 
     posUp.Y--; 
     SetConsoleCursorPosition(screen, posUp); 
     cout<<"Up"<<endl; 
     SetConsoleCursorPosition(screen, posDown); 
     cout<<" "; 
     posDown.Y++; 
     SetConsoleCursorPosition(screen, posDown); 
     cout<<"Down"<<endl; 
     Sleep(100); 
    } 

    SetConsoleCursorPosition(screen, posUp); 
    cout<<" "<<endl; 
    SetConsoleCursorPosition(screen, posDown); 
    cout<< " "<<endl; 
    posUp = {5,25}; 
    posDown = {68,1}; 
    Sleep(100); 
} 
+0

Теперь я понимаю. Это имеет смысл, почему он не повторился. – user2093795