Жарков В.А. - Visual C++ 2005, DirectX 9.0c и Microsoft Agent в компьютерной графике, мультимедиа и играх (Листинги книги) - 2005
.pdf30 Жарков В.А. Компьютерная графика, мультимедиа и игры на 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;
}
}