Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2015, 23:50   #1
ProstoI_Student
Новичок
Джуниор
 
Регистрация: 06.12.2015
Сообщений: 1
По умолчанию Перемещение символа по консоли!!!

Здравствуйте, уважаемые пользователи киберфорума!! Проблема следующего плана: при помощи стрелок я перемещаю символы по консоли. Но проблема в том, что при перемещении символа не старом местоположении он также остается. То есть получается такая дорожка из символов.)) Будьте добры помогите это исправить.

Код:
#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;
int main()
{
	bool pf;
	int a;
	pf=true;
	HANDLE h = GetStdHandle (STD_OUTPUT_HANDLE);
	COORD c = {1, 1};
	HANDLE h1 = GetStdHandle (STD_OUTPUT_HANDLE);
	COORD c1 = {15, 15};
	do
	{
		if (pf==true)
		{
			SetConsoleCursorPosition (h, c);
			int k = getch(); 
			if (k==0||k==224)  k = getch();
				switch(k)
				{
				case 72: 
					c.Y=c.Y-1;
					cout<<char(1);
					break;
				case 75:
					c.X=c.X-1;
					cout<<char(1);
					break;
				case 77:
					c.X=c.X+1;
					cout<<char(1);
					break;
				case 80:
					c.Y=c.Y+1;			
					cout<<char(1);
					break;
				default: return 0;
				
				}
		        SetConsoleCursorPosition(h, c);
		        
			pf=false;
			
		}
		else
		{
			SetConsoleCursorPosition (h1, c1);
			int k = getch(); 
				if (k==0||k==224)  k = getch();
				switch(k)
				{
				case 72: //72,75,77,80 - êîä äëÿ 
êëàâèø ñòðåëîê
íà êëàâèàòóðå,
 char(1) - ñìàéëèê
					c1.Y=c1.Y-2;
					cout<<char(1);
					break;
				case 75:
					c1.X=c1.X-2;
					cout<<char(1);
					break;
				case 77:
					c1.X=c1.X+2;
					cout<<char(1);
					break;
				case 80:
					c1.Y=c1.Y+2;			
					cout<<char(1);
					break;
				default: return 0;
				
				}
		        SetConsoleCursorPosition(h1, c1);
			pf=true;
			system("cls");
		}
	} while(c.Y!=c1.Y || c.X!=c1.X);
	
}

Последний раз редактировалось Stilet; 07.12.2015 в 09:54.
ProstoI_Student вне форума Ответить с цитированием
Старый 07.12.2015, 00:46   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы бы хоть название форума меняли когда копируете...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.12.2015, 09:58   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ProstoI_Student
Становись на позицию, где символ выведен, и затирай его пробелом.
Код:
SetConsoleCursorPosition(hLast, cLast);
cout<<' ';
SetConsoleCursorPosition (h, c);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена числового символа на подстрочный после определенного символа strokky Microsoft Office Word 4 26.07.2014 02:56
Перемещение символа стрелками Slash4eveR Помощь студентам 9 18.11.2012 21:20
Код символа в консоли Artoo Помощь студентам 2 19.05.2012 18:33
Перемещение символа: Skripnichenko Общие вопросы C/C++ 0 24.03.2011 22:06
Координаты символа в консоли Pro100Chel Visual C++ 9 17.08.2010 17:00