Г. Шилдт «C#. Учебный курс», «Питер», 2003.
Приложение 1
Листинг программы.
üForm1.cs
using System;System. Collections. Generic;System. ComponentModel;System. Data;System. Drawing;System. Text;System. Windows. Forms;EuroBasket
{partial class Form1: Form
{Team[] Teams; // Начальный массив командTeam[] TM;Team[] TC; // Массив команд в полуфинальных играхChampionship championship; // Чемпионат содержит всю игровую сетку по группамForm1 ()
{();
}index_step = 0; // Индекс текущего этапаvoid Exchange (Team one, Team two)
{TC = new Team(«», «»);. All_Lose_Points = one. All_Lose_Points;. All_Scores = one. All_Scores;. Country = one. Country;. Name = one. Name;. Three_Points = one. Three_Points;. Three_Points = two. Three_Points;. Name = two. Name;. All_Lose_Points = two. All_Lose_Points;. All_Scores = two. All_Scores;. Country = two. Country;. All_Lose_Points = TC. All_Lose_Points;. All_Scores = TC. All_Scores;. Country = TC. Country;. Name = TC. Name;. Three_Points = TC. Three_Points;
} // Метод для обмена командvoid Sort_In_Group (DataGridView OutPutData, Team[] Teams, int number_group) // Метод сортировки в группах
{. RowCount = 4;(int k = 4 * number_group; k < 4 * number_group + 4; k++) // Копируем нужную часть массива Teams[] в массив TM[] чтобы не перемешивать массив Teams[]
{[k] = new Team (Teams[k].Name, Teams[k].Country);[k].All_Lose_Points = Teams[k].All_Lose_Points;[k].All_Scores = Teams[k].All_Scores;[k].Three_Points = Teams[k].Three_Points;
}(int i = 0; i < 4; i++) // Сортируем
{(int o = 4 * number_group, p = 4 * number_group + 1; p < 4 * number_group + 4; o++, p++)
{(TM[o].All_Scores < TM[p].All_Scores) // По забитым мячам
{(TM[o], TM[p]);
}
{(TM[o].All_Scores == TM[p].All_Scores) // Если равны
{(championship. Games [o, p, number_group] < championship. Games [p, o, number_group]) // По играм друг с другам
{(TM[o], TM[p]);
}
{(championship. Games [o, p, number_group] == championship. Games [p, o, number_group]) // Если равны
{(TM[o].Difference > TM[p].Difference)
{(TM[o], TM[p]);
}
{(TM[o].Difference == TM[p].Difference) // По разнице забитых и пропущенных
{(TM[o].Three_Points < TM[p].Three_Points)
{(TM[o], TM[p]);
}
}
}
}
}
}
}
}(int i = 0, k = 4 * number_group; i < 4; i++, k++) // Выводим в таблицу
{[0, i].Value = i + 1;[1, i].Value = TM[k].Name;[3, i].Value = TM[k].All_Lose_Points;[2, i].Value = TM[k].All_Scores;[4, i].Value = TM[k].Three_Points;
}
}class Championship // Класс чемпионат
{int[,] Games; // Игровая сетка в группах
}class Team // Класс команда
{string Name; // Имяstring Country; // Странаint All_Scores; // Сумма забитыхint All_Lose_Points; // Сумма пропущенныхint Three_Points; // 3-х очковыеint Difference // Разница забитых и пропущенных
{
{All_Scores - All_Lose_Points;
}
}Team (string Name, string Country) // Конструктор
{. Name = Name;. Country = Country;
}
}void Build_Table (DataGridView output_data, int count_teams, int group_count)
{_data. RowCount = 12;(int i = count_teams * group_count, irows = 0; i < count_teams * group_count + count_teams - 1; i++)
{(int k = i + 1; k < count_teams * group_count + count_teams; k++)
{_data [1, irows].Value = Teams[i].Name;(irows% 2 == 0 & irows!= 0)
{_data [0, irows].Value = Convert. ToInt32 (output_data [0, irows - 2].Value) + 1;
}
{_data [0, 0].Value = 1;
}++;_data [1, irows].Value = Teams[k].Name;++;
}
}
}void button1_Click (object sender, EventArgs e) // Кнопка Начать
{. RowCount = 24; // Присвоить число строк(int i = 0; i < 24; i++)
{[0, i].Value = (i + 1).ToString(); // Присвоить ячейке по адресу [столбец, строка] значение
}. SelectedIndex++; // Перейти на следующую вкладку_Next. Visible = true; // Показать кнопку далее
}void button1_Next_Click (object sender, EventArgs e) // Кнопка далее
{// Если не введены данные в какую либо таблицу, чтобы не вылетали ошибки
{(tabControl1. SelectedIndex) // В зависимости от текущей вкладки
{1:// Присваиваем командам имена и страны
{_step = 0;= new Team [dataGridView1. RowCount];= new Team [dataGridView1. RowCount];(int i = 0; i < Teams. Length; i++)
{[i] = new Team (dataGridView1 [1, i].Value. ToString(), dataGridView1 [2, i].Value. ToString());
}. SelectedIndex++;. SelectedIndex = 0;_Table (dataGridView2, 24 / 6, index_step); // Строим групповую таблицу;
}2:
{(tabControl2. SelectedIndex) //
{0:
{= new Championship();. Games = new int [24, 24, 6];(int i = 0; i < dataGridView2. RowCount; i += 2) // Заполняем игровую сетку для текущей группы
{(int p = 4 * index_step; p < 4 * index_step + 4; p++)
{(dataGridView2 [1, i].Value. ToString() == Teams[p].Name)
{[p].All_Scores += Convert. ToInt32 (dataGridView2 [2, i].Value);[p].All_Lose_Points += Convert. ToInt32 (dataGridView2 [2, i + 1].Value);[p].Three_Points += Convert. ToInt32 (dataGridView2 [3, i].Value);(int m = 4 * index_step; m < 4 * index_step + 4; m++)
{(dataGridView2 [1, i + 1].Value. ToString() == Teams[m].Name)
{[m].All_Scores += Convert. ToInt32 (dataGridView2 [2, i + 1].Value);[m].All_Lose_Points+= Convert. ToInt32 (dataGridView2 [2, i].Value);[m].Three_Points += Convert. ToInt32 (dataGridView2 [3, i + 1].Value);. Games [p, m, index_step] = Convert. ToInt32 (dataGridView2 [2, i].Value);. Games [m, p, index_step] = Convert. ToInt32 (dataGridView2 [2, i + 1].Value);
}
}
}
}
}_In_Group (dataGridView3, Teams, index_step); // Сортируем. SelectedIndex++; // Переходим к результатам;
}1:
{_step++; // Индекс этап + 1(index_step < 6) // Если прошли не все этапы
{. SelectedIndex = 0;(int i = 0; i < dataGridView2. RowCount; i++)
{[2, i].Value = «»;[3, i].Value = «»;
}_Table (dataGridView2, 24 / 6, index_step);
}// Если все выводим командв прошедшие в 1 / 4
{. SelectedIndex++;. RowCount = 8;(int i = 0; i < 6; i++)
{[0, i].Value = i + 1;[1, i].Value = this.TM [i * 4].Country;[2, i].Value = this.TM [i * 4].Name;[3, i].Value = this.TM [i * 4].All_Scores;[4, i].Value = this.TM [i * 4].All_Lose_Points;[5, i].Value = this.TM [i * 4].Three_Points;
}[] TM = new Team[6];(int i = 0; i < 6; i++)
{[i] = new Team (this.TM [i * 4 + 1].Name, this.TM [i * 4 + 1].Country);[i].All_Lose_Points = this.TM [i * 4 + 1].All_Lose_Points;[i].All_Scores = this.TM [i * 4 + 1].All_Scores;[i].Three_Points = this.TM [i * 4 + 1].Three_Points;
}(int i = 0; i < 6; i++) // Сортировка 2 мест в группах
{(int o = 0, p = 1; p < 6 - i; o++, p++)
{(TM[o].All_Scores < TM[p].All_Scores)
{(TM[o], TM[p]);
}
{(TM[o].All_Scores == TM[p].All_Scores)
{(TM[o].Difference < TM[p].Difference)
{(TM[o], TM[p]);
}
{(TM[o].Difference == TM[p].Difference)
{(TM[o].Three_Points < TM[p].Three_Points)
{(TM[o], TM[p]);
}
}
}
}
}
}
// Вывод 2-х мест[0, 6].Value = 7;[1, 6].Value = TM[0].Country;[2, 6].Value = TM[0].Name;[3, 6].Value = TM[0].All_Scores;[4, 6].Value = TM[0].All_Lose_Points;[5, 6].Value = TM[0].Three_Points;[0, 7].Value = 8;[1, 7].Value = TM[1].Country;[2, 7].Value = TM[1].Name;[3, 7].Value = TM[1].All_Scores;[4, 7].Value = TM[1].All_Lose_Points;[5, 7].Value = TM[1].Three_Points;
// Полученные команды из таблицы в новый масив.TM = new Team[8];. RowCount = 8;(int i = 0; i < 8; i++)
{.TM[i] = new Team (dataGridView4 [2, i].Value. ToString(), dataGridView4 [1, i].Value. ToString());.TM[i].All_Lose_Points = Convert. ToInt32 (dataGridView4 [4, i].Value);.TM[i].All_Scores = Convert. ToInt32 (dataGridView4 [3, i].Value);.TM[i].Three_Points = Convert. ToInt32 (dataGridView4 [5, i].Value);[1, i].Value = this.TM[i].Name;
}(int i = 0, k = 1; i < 8; i += 2, k++)
{[0, i].Value = k;
}
};
}2:// Переходим к 1 / 4
{. SelectedIndex++;;
}
};
}3:// 1 / 4
{. RowCount = 4;= new Team[4];(int i = 0, k = 0; i < 8; i += 2, k++) // Считывание данных из таблицы
{.TM[i].All_Scores = 0;.TM[i].All_Lose_Points = 0;.TM[i].Three_Points = 0;.TM [i + 1].All_Scores = 0;.TM [i + 1].All_Lose_Points = 0;.TM [i + 1].Three_Points = 0;.TM[i].All_Scores = Convert. ToInt32 (dataGridView5 [2, i].Value);.TM[i].All_Lose_Points = Convert. ToInt32 (dataGridView5 [2, i + 1].Value);.TM[i].Three_Points = Convert. ToInt32 (dataGridView5 [3, i].Value);.TM [i + 1].All_Scores = Convert. ToInt32 (dataGridView5 [2, i + 1].Value);.TM [i + 1].All_Lose_Points = Convert. ToInt32 (dataGridView5 [2, i].Value);.TM [i + 1].Three_Points = Convert. ToInt32 (dataGridView5 [3, i + 1].Value);(this.TM[i].All_Scores > this.TM [i + 1].All_Scores) // Тут же сортировка
{[k] = new Team (TM[i].Name, TM[i].Country);[k].All_Lose_Points = TM[i].All_Lose_Points;[k].All_Scores = TM[i].All_Scores;[k].Three_Points = TM[i].Three_Points;
}
{(this.TM[i].All_Scores < this.TM [i + 1].All_Scores)
{[k] = new Team (TM[i + 1].Name, TM [i + 1].Country);[k].All_Lose_Points = TM [i + 1].All_Lose_Points;[k].All_Scores = TM [i + 1].All_Scores;[k].Three_Points = TM [i + 1].Three_Points;
}
{(this.TM[i].All_Scores == this.TM [i + 1].All_Scores)
{(this.TM[i].Three_Points > TM [i + 1].Three_Points)
{[k] = new Team (TM[i].Name, TM[i].Country);[k].All_Lose_Points = TM[i].All_Lose_Points;[k].All_Scores = TM[i].All_Scores;[k].Three_Points = TM[i].Three_Points;
}
{[k] = new Team (TM[i + 1].Name, TM [i + 1].Country);[k].All_Lose_Points = TM [i + 1].All_Lose_Points;[k].All_Scores = TM [i + 1].All_Scores;[k].Three_Points = TM [i + 1].Three_Points;
}
}
}
}
}(int i = 0; i < 4; i++) // Вывод Результатов 1 / 4
{[0, i].Value = i + 1;[1, i].Value = TC[i].Country;[2, i].Value = TC[i].Name;[3, i].Value = TC[i].All_Scores;[4, i].Value = TC[i].All_Lose_Points;[5, i].Value = TC[i].Three_Points;
}. SelectedIndex++; // Показываем результаты;
}4:// Строим 1 / 2 сетку игр
{. RowCount = 4;(int i = 0, k = 1; i < 4; i++)
{(i% 2 == 0)
{[0, i].Value = k;++;
}[1, i].Value = TC[i].Name;
}. SelectedIndex++;;
}5:
{(int i = 0; i < 4; i += 2) // Считываем данные 1 / 2
{.TC[i].All_Scores = 0;.TC[i].All_Lose_Points = 0;.TC[i].Three_Points = 0;.TC [i + 1].All_Scores = 0;.TC [i + 1].All_Lose_Points = 0;.TC [i + 1].Three_Points = 0;.TC[i].Name = dataGridView7 [1, i].Value. ToString();.TC[i].All_Scores = Convert. ToInt32 (dataGridView7 [2, i].Value);.TC[i].Three_Points = Convert. ToInt32 (dataGridView7 [3, i].Value);.TC [i + 1].Name = dataGridView7 [1, i + 1].Value. ToString();.TC [i + 1].All_Scores = Convert. ToInt32 (dataGridView7 [2, i + 1].Value);.TC [i + 1].Three_Points = Convert. ToInt32 (dataGridView7 [3, i + 1].Value);(this.TC[i].All_Scores < this.TC [i + 1].All_Scores) // Сортируем
{(TC[i], TC [i + 1]);
}
{(TC[i].All_Scores == TC [i + 1].All_Scores)
{(TC[i].Three_Points < TC [i + 1].Three_Points)
{(TC[i], TC [i + 1]);
}
}
}
}
// Выводим финалистов. Text = TC[0].Name;. Text = TC[2].Name;. SelectedIndex++;;
}6:
{(numericUpDown1. Value > numericUpDown3. Value) // Выбор победителя
{. Text = groupBox1. Text + «победитель чемпионата!!!»;
}
{(numericUpDown1. Value < numericUpDown3. Value)
{. Text = groupBox2. Text + «победитель чемпионата!!!»;
}
{(numericUpDown2. Value > numericUpDown4. Value)
{. Text = groupBox1. Text + «победитель чемпионата!!!»;
}
{. Text = groupBox2. Text + «победитель чемпионата!!!»;
}
}
}. SelectedIndex++;;
}
}{MessageBox. Show («В таблицу введены не все данные, или они введены некорректно», «Информация», MessageBoxButtons.OK, MessageBoxIcon. Information);}
}void tabControl1_TabIndexChanged (object sender, EventArgs e)
{_Next_Click (sender, e);
}}}
игра баскетбол программирование eurobasket