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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2015, 11:35   #1
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию Вопрос с кодом, использование switch и if

Делал код по книге, используется if для движения ракетки, после компиляции возникла проблема: ракетка двигалась сама к правой части.
Изменил на switch, остальное закомментировал. Если бы требовалась оптимизация что лучше switch или if.
Код:
void __fastcall TForm1::RightLeft()
{
	//if ( rd != 0 )
   //	{
  //		if (rd = 1)
	//	{
	  //		if (rx2 < wp)
		//	{
	  switch (rd)
	  {
	  case 1:	Form1->Canvas->Pen->Color = cBack;
				Form1->Canvas->Rectangle(rx1, ry, rx1 + rdx, ry + 1);
				Form1->Canvas->Pen->Color = clRed;
				Form1->Canvas->Rectangle(rx2, ry, rx2 + rdx, ry + 1);
				rx1 += rdx;
				rx2 += rdx; return;
		//	}
   //		}
   //	}
   //	else
   //	{
	 //	if (rx1 > 1)
	   //	{
	  case 2:   Form1->Canvas->Pen->Color = cBack;
				Form1->Canvas->Rectangle(rx2, ry, rx2 - rdx, ry + 1);
				Form1->Canvas->Pen->Color = clRed;
				Form1->Canvas->Rectangle(rx1 -rdx, ry, rx1 + rdx, ry +1);
				rx1 -= rdx;
				rx2 -= rdx;      return;
 //		}
	}
}
Если убрать switch и case, return в обоих случаях, получим код с книги.
Dima-91 вне форума Ответить с цитированием
Старый 09.09.2015, 11:54   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

.....лучше бы на функции код разбил))) оптимизировать тут нечего ибо 99% будет уходить на рисование
GreenWizard вне форума Ответить с цитированием
Старый 09.09.2015, 12:13   #3
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Код:
if (rd = 1)
Ух ты, как интересно ничего, что это всегда true? Или это не плюсики?

Последний раз редактировалось Croessmah; 09.09.2015 в 12:18.
Croessmah вне форума Ответить с цитированием
Старый 09.09.2015, 14:40   #4
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Ух ты, как интересно ничего, что это всегда true? Или это не плюсики?
Весь код не написан rd в начале равно 0, после значение принимает 1 или 2 в зависимости какую стрелку нажать.
Dima-91 вне форума Ответить с цитированием
Старый 09.09.2015, 14:47   #5
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

"if (rd = 1)" - записывает 1 в rd, а потом проверяет rd <> 0
"if (rd == 1)" - сравнивает 1 с rd
GreenWizard вне форума Ответить с цитированием
Старый 09.09.2015, 15:12   #6
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Цитата:
Сообщение от GreenWizard Посмотреть сообщение
"if (rd = 1)" - записывает 1 в rd, а потом проверяет rd <> 0
"if (rd == 1)" - сравнивает 1 с rd
Реализация через switch имеет права на жизнь?
Пробовал rd==1 исправить, ракетка все равно влево улетает.

Последний раз редактировалось Dima-91; 09.09.2015 в 15:24.
Dima-91 вне форума Ответить с цитированием
Старый 09.09.2015, 15:40   #7
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Цитата:
Сообщение от Dima-91 Посмотреть сообщение
Реализация через switch имеет права на жизнь?
да всё имеет право на жизнь......... но не будем впадать в философию)))))
Цитата:
Пробовал rd==1 исправить, ракетка все равно влево улетает.
это уже др. тема) нужно смотреть и думать, а изначальный вопрос был о другом)
GreenWizard вне форума Ответить с цитированием
Старый 09.09.2015, 16:20   #8
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Всем спасибо, пару скобочек нужно было отредактировать.
Dima-91 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование оператора выбора switch Dina 85 Visual C++ 1 18.10.2013 21:52
Использование инструкции выбора switch. ming_ruport Помощь студентам 3 20.11.2011 19:31
Вопрос по организации взаимодействия графической части с кодом в C++ Evgenii Общие вопросы C/C++ 7 19.03.2011 10:45
Чтение битого файла на CD небольшой вопрос с кодом xSpikeRx Win Api 1 21.12.2009 01:59
Вопрос о Memo1 [помогите с кодом] kakawkin Общие вопросы Delphi 2 01.12.2009 14:10