Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Жарков В.А. - Visual C++ 2005, DirectX 9.0c и Microsoft Agent в компьютерной графике, мультимедиа и играх (Листинги книги) - 2005

.pdf
Скачиваний:
306
Добавлен:
13.08.2013
Размер:
1.14 Mб
Скачать

30 Жарков В.А. Компьютерная графика, мультимедиа и игры на Visual C++ 2005

textBox1->Text = ""; textBox1->Focus();

Дважды щелкаем кнопку “=” (рис. 11.1) и в тот же метод для этой кнопки, ниже нашего предыдущего кода, записываем:

if (i==2)

{

number2 = Convert::ToDouble(textBox1->Text); number3 = Number - number2;

textBox1->Text = number3.ToString();

}

Аналогично для умножения чисел дважды щелкаем кнопку “ * ” (рис. 11.1) и в шаблон нового метода записываем:

i=3;

Number = Convert::ToDouble(textBox1->Text); textBox1->Text = "";

textBox1->Focus();

Дважды щелкаем кнопку “=” (рис. 11.1) и в тот же метод для этой кнопки, ниже нашего предыдущего кода, записываем:

if (i==3)

{

number2 = Convert::ToDouble(textBox1->Text); number3 = Number * number2;

textBox1->Text = number3.ToString();

}

Аналогично для деления чисел дважды щелкаем кнопку “ / ” (рис. 11.1) и в шаблон нового метода записываем:

i=4;

Number = Convert::ToDouble(textBox1->Text); textBox1->Text = "";

textBox1->Focus();

Дважды щелкаем кнопку “=” (рис. 11.1) и в тот же метод, ниже нашего предыдущего кода, записываем:

if (i==4)

{

number2 = Convert::ToDouble(textBox1->Text); number3 = Number / number2;

textBox1->Text = number3.ToString();

}

Наш алгоритм деления “1/x” предусматривает только один щелчок по этой одной кнопке “1/x” (рис. 11.1). Для программирования деления “1/x” дважды щелкаем эту кнопку “1/x” (рис. 11.1) и в шаблон нового метода записываем:

double number2;

Number = Convert::ToDouble(textBox1->Text); number2 = 1/Number;

textBox1->Text = number2.ToString();

Чтобы наш калькулятор решал пять стандартных задач на проценты, дважды

Глава 11. Разработка стандартного калькулятора

31

щелкаем эту кнопку “ % ” (рис. 11.1) и в шаблон нового метода записываем: double number2, number3;

if (i==1)

{

number2 = Convert::ToDouble(textBox1->Text); number3 = Number*(1 + number2/100); textBox1->Text = number3.ToString();

}

if (i==2)

{

number2 = Convert::ToDouble(textBox1->Text); number3 = Number*(1 - number2/100); textBox1->Text = number3.ToString();

}

if (i==3)

{

number2 = Convert::ToDouble(textBox1->Text); number3 = Number*number2/100; textBox1->Text = number3.ToString();

}

if (i==4)

{

number2 = Convert::ToDouble(textBox1->Text); number3 = Number/number2*100; textBox1->Text = number3.ToString();

}

Правила вычислений процентов стандартны для нашего, настольного и Windowsкалькуляторов. А примеры для вычислений процентов на данном втором калькуляторе будут даны и подробно объяснены в следующей главе при создании третьего калькулятора.

Для очистки окна от числа дважды щелкаем кнопку “C” (рис. 11.1) и в шаблон нового метода записываем:

textBox1->Text = ""; textBox1->Focus();

Для обнуления памяти дважды щелкаем кнопку “Memory clearing MC” (рис. 11.1) и в шаблоне нового метода обнуляем глобальную переменную Memory:

Memory = 0;

Чтобы вызвать в окно число, сохраненное нами в памяти калькулятора, дважды щелкаем кнопку “Memory recall MR” (рис. 11.1) и в шаблон метода записываем:

textBox1->Text = Memory.ToString();

Чтобы занести (сохранить) в память калькулятора записанное нами в окно число, дважды щелкаем кнопку “Store to memory MS” (рис. 11.1) и в шаблон записываем:

Memory = Convert::ToDouble(textBox1->Text);

Чтобы сложить число (которое мы видим в окне) с числом, сохраненным в памяти калькулятора, дважды щелкаем кнопку “Add to memory M+” (рис. 11.1) и в шаблон нового метода записываем:

double number2, number3;

32 Жарков В.А. Компьютерная графика, мультимедиа и игры на Visual C++ 2005

number2 = Convert::ToDouble(textBox1->Text); number3 = number2 + Memory;

textBox1->Text = number3.ToString();

Листинг 11.1. Код для выполнения анимации.

//Объявляем булеву переменную myColor со значением false: bool static myColor = false;

private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)

{

//Вводим анимацию: if (myColor == false)

{

//Задаем чередование красного (Red) //и зеленого (Green) цветов формы: this->BackColor = Color::Red;

//Изменяем значение myColor на противоположное: myColor = true;

}

else

{

//Задаем зеленый цвет (Green): this->BackColor = Color::Green;

//Изменяем значение myColor на противоположное: myColor = false;

}

}

Глава 12. Вычисление процентов

Теперь в файл Form7.h необходимо написать нашу часть кода для выполнения расчетов на калькуляторе. Для решения первой задачи на проценты (при помощи первой кнопки со знаком “=” на Form7) дважды щелкаем эту кнопку (рис. 12.1). Появляется файл Form7.h с шаблоном, в который записываем:

double mul1, mul2, mul3;

mul1 = Convert::ToDouble(textBox1->Text); mul2 = Convert::ToDouble(textBox2->Text); mul3 = mul1 * mul2/100;

textBox3->Text = mul3.ToString(); textBox4->Focus();

Для решения второй задачи на проценты (при помощи второй кнопки со знаком “=” на Form7) дважды щелкаем эту кнопку в режиме проектирования (рис. 12.1). Появляется файл Form7.h с шаблоном, в который записываем:

double mul1, mul2, mul3;

mul1 = Convert::ToDouble(textBox4->Text); mul2 = Convert::ToDouble(textBox5->Text); mul3 = mul1/mul2*100;

textBox6->Text = mul3.ToString(); textBox7->Focus();

Для решения третьей задачи на проценты (при помощи третьей кнопки со знаком “=” на данной форме Form7) дважды щелкаем эту кнопку в режиме проектирования (рис. 12.1). Появляется файл Form7.h с шаблоном, в который записываем:

double mul1, mul2, mul3;

mul1 = Convert::ToDouble(textBox7->Text); mul2 = Convert::ToDouble(textBox8->Text); mul3 = mul1/mul2*100;

textBox9->Text = mul3.ToString(); textBox10->Focus();

Для решения четвертой задачи на проценты (при помощи четвертой кнопки со знаком “=” на Form7) дважды щелкаем эту кнопку в режиме проектирования (рис. 12.1). Появляется файл Form7.h с шаблоном, в который записываем:

double mul1, mul2, mul3;

mul1 = Convert::ToDouble(textBox10->Text); mul2 = Convert::ToDouble(textBox11->Text); mul3 = mul1*(1 + mul2/100); textBox12->Text = mul3.ToString(); textBox13->Focus();

Для решения пятой задачи на проценты (при помощи пятой кнопки со знаком “=” на Form7) дважды щелкаем эту кнопку в режиме проектирования (рис. 12.1). Появляется файл Form7.h с шаблоном, в который записываем:

double mul1, mul2, mul3;

mul1 = Convert::ToDouble(textBox13->Text);

34 Жарков В.А. Компьютерная графика, мультимедиа и игры на Visual C++ 2005

mul2 = Convert::ToDouble(textBox14->Text); mul3 = mul1*(1 - mul2/100); textBox15->Text = mul3.ToString();

Листинг 12.1. Код для выполнения анимации.

//Объявляем булеву переменную myColor со значением false: bool static myColor = false;

private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)

{

//Вводим анимацию: if (myColor == false)

{

//Выводим черный цвет текста для элементов на форме: this->ForeColor = Drawing::Color::Black;

//Изменяем значение myColor на противоположное: myColor = true;

}

else

{

//Выводим белый цвет текста для элементов на форме: this->ForeColor = Drawing::Color::White;

//Изменяем значение myColor на противоположное: myColor = false;

}

}

Глава 13. Степени, корни, логарифмы и факториалы

Теперь в файл Form9.h необходимо написать нашу часть кода для выполнения расчетов. Для возведения числа “x” в различные степени (при помощи первой кнопки со знаком “=” на Form9) дважды щелкаем эту кнопку (рис. 13.1). Появляется файл Form9.h с шаблоном в который записываем:

double x, x2, x3, x4, x5;

x = Convert::ToDouble(textBox1->Text); x2 = Math::Pow(x,2);

textBox2->Text = x2.ToString(); x3 = Math::Pow(x,3); textBox3->Text = x3.ToString(); x4 = Math::Exp(x); textBox4->Text = x4.ToString(); x5 = Math::Pow(10,x); textBox5->Text = x5.ToString(); textBox6->Focus();

Для вычисления степени x y или x^y (при помощи второй кнопки со знаком “=” на Form9) дважды щелкаем эту кнопку в режиме проектирования (рис. 13.1). Появляется файл Form9.h с другим шаблоном, в который записываем:

double x, y, x2;

x = Convert::ToDouble(textBox1->Text);

y = Convert::ToDouble(textBox6->Text); x2 = Math::Pow(x,y);

textBox7->Text = x2.ToString(); textBox11->Focus();

Для вычисления корней x или sqrt(x); 3 x или x^(1/3); y x или x^(1/y)

(при помощи третьей кнопки со знаком “=” на Form9) дважды щелкаем эту кнопку (рис. 13.1). Появляется файл Form9.h с шаблоном, в который записываем:

double x, x2, c, x3, x4, y;

x = Convert::ToDouble(textBox1->Text); x2 = Math::Sqrt(x);

textBox8->Text = x2.ToString(); c = 1/3.0;

x3 = Math::Pow(x,c); textBox9->Text = x3.ToString();

y = Convert::ToDouble(textBox6->Text); if (y!=0)

{

c = 1/y;

x4 = Math::Pow(x,c);

}

36 Жарков В.А. Компьютерная графика, мультимедиа и игры на Visual C++ 2005

else x4 = 0;

textBox10->Text = x4.ToString(); textBox11->Focus();

Для вычисления корня y a x или a^(x/y) (при помощи четвертой кнопки со знаком “=” на Form9) дважды щелкаем эту кнопку (рис. 13.1). Появляется файл Form9.h

с шаблоном, в который записываем:

 

double x, y, a, c, x4;

 

x = Convert::ToDouble(textBox1->Text);

 

y = Convert::ToDouble(textBox6->Text);

 

a = Convert::ToDouble(textBox11->Text);

 

if (y!=0)

 

{

 

c = x/y;

 

x4 = Math::Pow(a,c);

 

}

 

else x4 = 0;

 

textBox12->Text = x4.ToString();

 

textBox13->Focus();

 

Для вычислений трех логарифмов loge x или ln(x);

log10 x или log(x);

logy x или log[y](x) (при помощи пятой кнопки со знаком “=” на Form9) дважды

щелкаем эту кнопку (рис. 13.1). Появляется файл Form9.h с шаблоном, в который записываем:

double x, x2, x3, x4=0, x5=1, x6, y; x = Convert::ToDouble(textBox1->Text); y = Convert::ToDouble(textBox6->Text); if (x!=0)

{

x2 = Math::Log(x);

}

else x2 = 0;

textBox13->Text = x2.ToString(); if (x!=0)

{

x3 = Math::Log10(x);

}

else x3 = 0;

textBox14->Text = x3.ToString(); if (x!=0) x4 = Math::Log10(x); if (y!=0) x5 = Math::Log10(y); x6 = x4/x5;

textBox15->Text = x6.ToString(); textBox16->Focus();

Для вычисления факториалов n!, где n – целое положительное число (при n=0, n!=1) при помощи шестой кнопки со знаком “=” на Form9 дважды щелкаем эту кноп-

Глава 13. Степени, корни, логарифмы и факториалы

37

ку (рис. 13.1). Появляется файл Form9.h с шаблоном, в который записываем: int i, n; long Fac=1;

n = Convert::ToInt32(textBox16->Text); if (n == 0) Fac = 1;

if (n <= 12)

for (i=2; i<=n; i++) Fac = Fac*i;

textBox17->Text = Fac.ToString();

Листинг 13.1. Код для выполнения анимации.

//Объявляем булеву переменную myText со значением false: bool static myText = false;

private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)

{

//Программируем анимацию: if (myText == false)

{

//Выводим название рамки: groupBox1->Text =

"Powers, Roots, Logarithms and Factorials"; //Изменяем значение myText на противоположное: myText = true;

}

else

{

//Удаляем название рамки: groupBox1->Text = "";

//Изменяем значение myText на противоположное: myText = false;

}

}

Часть IV. Методология создания графической системы в двухмерном пространстве

Глава 14. Алгоритмы и оглавление графической системы

Листинг 14.1. Метод для выполнения анимации.

//Объявляем булеву переменную myColor со значением false: bool static myColor = false;

private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)

{

//Вводим анимацию: if (myColor == false)

{

//Выводим красный цвет переключателя: radioButton2->BackColor = Color::Red; //Изменяем значение myColor на противоположное: myColor = true;

}

else

{

//Выводим белый цвет переключателя: radioButton2->BackColor = Color::White; //Изменяем значение myColor на противоположное: myColor = false;

}

}

Глава 15. График линейной функции

Листинг 15.1. Метод для кнопки Graph.

private: System::Void button1_Click( System::Object^ sender, System::EventArgs^ e)

{

float a_Form3, b_Form3, x_min_Form3, x_max_Form3; a_Form3 = Convert::ToSingle(textBox1->Text); b_Form3 = Convert::ToSingle(textBox2->Text); x_min_Form3 = Convert::ToSingle(textBox3->Text); x_max_Form3 = Convert::ToSingle(textBox4->Text); Form5^ myForm5 = gcnew Form5();

myForm5->a = a_Form3; myForm5->b = b_Form3; myForm5->x_min = x_min_Form3; myForm5->x_max = x_max_Form3; myForm5->Show();

}

Для программной реализации этого алгоритма дважды щелкаем значок для компонента Timer (ниже формы в режиме проектирования). Появляется файл с шаблоном, который после записи нашего кода принимает следующий вид.

//Объявляем булеву переменную myColor со значением false: bool static myColor = false;

private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)

{

//Вводим анимацию: if (myColor == false)

{

//Выводим красный цвет переключателя: groupBox1->BackColor = Color::Red;

//Изменяем значение myColor на противоположное: myColor = true;

}

else

{

//Выводим белый цвет переключателя: groupBox1->BackColor = Color::White; //Изменяем значение myColor на противоположное: myColor = false;

}

}

Соседние файлы в предмете Программирование на C++