Введение
Основная цель курсовой работы - усовершенствование навыков работы в среде C#.
При изучении предметной области, выяснилось, что «EuroBasket» на первый взгляд простая игра, но для ее реализации необходимо обратится практически ко всем разделам программирования в среде C#.
Суть самой игры заключается в следующем:В чемпионате Европы по баскетболу среди мужских команд участвуют 24 сборных, разбитых на 6 групп. Места в группах в случае равенства очков у двух и более команд определяются следующим образом:
а) по результатам игр между собой;
б) по лучшей разнице заброшенных и пропущенных мячей;
в) по наибольшему числу 3-х очковых попаданий за все игры в группе.
Сборные, занявшие 1 места в группах, выходят в 1/4 финала. Кроме того, в 1/4 финала выходят 2 сборные из числа команд, занявших 2 места в группах, имеющие лучшие показатели по набранным очкам, а в случае их равенства:
а) по лучшей разнице заброшенных и пропущенных мячей;
б) по наибольшему числу 3-х очковых попаданий за все игры в группе. Пары в 1/4 и в 1/2 финала определяются жребием. Определить чемпиона Европы по баскетболу.
1.
Назначение и область применения
Данная программа может быть использована в качестве развлечения.
Программа имеет простой интерфейс, позволяющий быстро разобраться, как пользоваться данной программой. Поэтому программа легка для понимания и очень удобна в использовании для широкого круга пользователей.
Постановка задачи
Целью данной курсовой работы является углубление знаний и расширение навыков по разработке алгоритмов и их реализации на персональном компьютере. Курсовая работа выполнена в среде C#.
В курсовой работе используются основные возможности языка в работе со структурами, файлами.
|
В данной игре предполагалось создание:
1. легко осваиваемого интерфейса;
2. графическое окно, удобным расположением кнопок и вкладок;
. доступного для понимания руководства пользователя;
. Возможность в любой момент покинуть игру.
Используемые методы
В данной программе использовались следующие разделы C#:
Управляющие структуры (условие, циклы);
Массивы (одномерные, двумерные);
Символы и строки;
Процедуры;
Работа с файлами;
В итоги получилась программа - игра, в которой использовались основные возможности среды C#.
Список переменных и типов данных.
Класс Form1
Имя переменной | Тип данных | Описание |
Teams | Team[] | Начальный массив команд |
TM | Новый массив команд (чтоб не смешать старый) | |
TC | Массив команд в полуфинальных играх | |
index_step | int | Индекс текущего этапа |
Number_group | Номер группы | |
Count_teams | Количество команд | |
Group_count | Счёт в группе | |
Output_data | DataGridViev | Таблица команд по группам |
Класс Championship
Наименование | Тип данных | Описание |
Games | Int[,] | Игровая сетка в группах |
Класс Team
Наименование | Тип данных | Описание |
Name | String | Переменная для хранения имён участников |
Country | Переменная для хранения стран участников | |
All_Scores | int | Переменная для хранения суммы забитых мячей |
All_Lose_Points | Переменная для хранения суммы пропущенных мячей | |
Difference | Переменная для хранения разницы между забитыми и пропущенными мячами | |
Three_Points | Переменная для хранения количества 3-х очковых |
|
4.
Описание алгоритма программы
Текстовый алгоритм
1. Начало
. Вводим названия сборных и соответствующих им стран
Цикл пока i < числа команд
Массив команд[i] = Новая команда (Таблица1 [1, i].значение. ToString(),
Таблица2 [2, i].значение. ToString());
Следующий шаг i
3. Строим групповую таблицу для N-й группы
Групповая_таблица (Таблица2, 24/6, индекс_этапа)
4. Строим игровую сетку
Игровая_сетка = Новая игровая_сетка();
Игровая_сетка. Игра = новая int [24, 24, 6]
5. Заполняем игровую сетку для текущей группы
Цикл пока i < Таблицы2. СтрокаСтолбец
Цикл пока p < 4*индекс_этапа+4
Если Таблица2 [1, i].Значение. ToString()==Массив_команд[p].имя
Массив_команд[p].Сумма_забитых_очков += Convert. NoInt32 (Таблица2 [2, i].Значение);
Массив_команд[p].Сумма_пропущенных_очков += Convert. NoInt32 (Таблица2 [2, i+1].Значение);
Массив_команд[p].Сумма_3-х_очковых += Convert. NoInt32 (Таблица2 [3, i+1].Значение);
Цикл m< 4*индекс_этапа+4
Если Таблица2 [1, i+1].Значение. ToString()==Массив_команд[m].имя
Массив_команд[m].Сумма_забитых_очков += Convert. NoInt32 (Таблица2 [2, i+1].Значение);
Массив_команд[m].Сумма_пропущенных_очков += Convert. NoInt32 (Таблица2 [2, i].Значение);
Массив_команд[m].Сумма_3-х_очковых += Convert. NoInt32 (Таблица2 [3, i].Значение);
Игровая_сетка. Игра [p, m, индекс_этапа]= Convert. NoInt32 (Таблица2 [2, i].Значение);
Игровая_сетка. Игра [p, m, индекс_этапа]= Convert. NoInt32 (Таблица2 [2, i+1].Значение);
Следующий шаг i
Следующий шаг p
Следующий шаг m
6. Считываем данные с таблицы и сортируем
Цикл i<4
Цикл o=4*номер_группы, p=4*номер_группы+1 p<4*номер_группы+4
Если Массив_команд[o].Сумма забитых< Массив_команд[p].Сумма забитых
Обмен (Массив_чемпионата[o], Массив_чемпионата[p])
|
Иначе Если Массив_команд[o].Сумма забитых=Массив_команд[p].Сумма забитых
Если Игровая_сетка. Игра [o, p, Номер_группы]< Игровая_сетка. Игра [p, o, Номер_группы]
Обмен (Массив_чемпионата[o], Массив_чемпионата[p])
Иначе Если Игровая_сетка. Игра [o, p, Номер_группы] = Игровая_сетка. Игра [p, o, Номер_группы
Если Массив_чемпионата[o].Разница> Массив_чемпионата[p].Разница
Обмен (Массив_чемпионата[o], Массив_чемпионата[p])
Иначе Если Массив_чемпионата[o].Разница = Массив_чемпионата[p].Разница
Если Массив_чемпионата[o].Сумма_3-х_очковых< Массив_чемпионата[p]. Сумма_3-х_очковых
Обмен (Массив_чемпионата[o], Массив_чемпионата[p])
Следующий шаг i
Следующий шаг o
Следующий шаг p
7. Выводим Результаты
Цикл i=0, k= 4*номер_группы; i<4
Таблица_вывода [0, i].Значение=i+1;
Таблица_вывода [1, i].Значение=Массив_команд[k].Имя;
Таблица_вывода [2, i].Значение=Массив_команд[k].Сумма_пропушенны;
Таблица_вывода [3, i].Значение=Массив_команд[k].Сумма_забитых;
Таблица_вывода [4, i].Значение=Массив_команд[k].Сумма_3-х_оковых;
Следующий шаг i
Следующий шаг k
8. Выводим команды вышедшие в 1/4
А) Занявшие первые места в группах
Цикл i<6
Таблица4 [0, i].Значение=i+1;
Таблица4 [1, i].Значение=Массив_команд [i*4].Страна;
Таблица4 [2, i].Значение=Массив_команд [i*4].Имя;
Таблица4 [3, i].Значение=Массив_команд [i*4].Сумма_пропушенны;
Таблица4 [4, i].Значение=Массив_команд [i*4].Сумма_забитых;
Таблица4 [5, i].Значение=Массив_команд [i*4].Сумма_3-х_оковых;
Следующий шаг i
Б) сортируем и выводим 2 команды занявшие 2-е места
Цикл o=0, p=1 p<6-i
Если Массив_команд[o].Сумма забитых< Массив_команд[p].Сумма забитых
Обмен (Массив_чемпионата[o], Массив_чемпионата[p])
Иначе Если Массив_команд[o].Сумма забитых=Массив_команд[p].Сумма забитых
Если Массив_чемпионата[o].Разница< Массив_чемпионата[p].Разница
Обмен (Массив_чемпионата[o], Массив_чемпионата[p])
Иначе Если Массив_чемпионата[o].Разница = Массив_чемпионата[p].Разница
Если Массив_чемпионата[o].Сумма_3-х_очковых< Массив_чемпионата[p]. Сумма_3-х_очковых
Обмен (Массив_чемпионата[o], Массив_чемпионата[p])
Следующий шаг o
Следующий шаг p
Таблица4 [0, 6].Значение=7;
Таблица4 [1, 6].Значение=Массив_команд [i*4].Страна;
Таблица4 [2, 6].Значение=Массив_команд [i*4].Имя;
Таблица4 [3, 6].Значение=Массив_команд [i*4].Сумма_пропушенны;
Таблица4 [4, 6].Значение=Массив_команд [i*4].Сумма_забитых;
Таблица4 [5, 6].Значение=Массив_команд [i*4].Сумма_3-х_оковых;
Таблица4 [0, 7].Значение=8;
Таблица4 [1, 7].Значение=Массив_команд [i*4].Страна;
Таблица4 [2, 7].Значение=Массив_команд [i*4].Имя;
Таблица4 [3, 7].Значение=Массив_команд [i*4].Сумма_пропушенны;
Таблица4 [4, 7].Значение=Массив_команд [i*4].Сумма_забитых;
Таблица4 [5, 7].Значение=Массив_команд [i*4].Сумма_3-х_оковых;
9. Строим таблицу игр 1/4 и заполняем результаты
10. Сортируем результаты и выводим команды вышедшие в полуфинал
Цикл i < 4
Если Массив полуфинала[i].Сумма_забитых< Массив полуфинала [i+1].Сумма_забитых
Обмен (Массив полуфинала[i], Массив полуфинала [i+1])
Иначе Если Массив полуфинала[i].Сумма_забитых= Массив полуфинала [i+1].Сумма_забитых
Если Массив полуфинала[i].Сумма_3-х_очковых= Массив полуфинала [i+1].Сумма_3-х_очковых
Обмен (Массив полуфинала[i], Массив полуфинала [i+1])
Следующий шаг i
11. Вводим результаты 1/2
12. Выводим команды вышедшие в финал и заполняем результаты. Текст=Массив полуфинала[0].Имя. Текст=Массив полуфинала[2].Имя
13. Выводим победителя чемпионата
Если numericUpDown1. Значение> numericUpDown3. Значение. Текст= GroupBox1. Текст+ «Победитель чемпионата»
Иначе Если numericUpDown1. Значение< numericUpDown3. Значение. Текст= GroupBox2. Текст+ «Победитель чемпионата»
Иначе Если numericUpDown2. Значение> numericUpDown4. Значение. Текст= GroupBox1. Текст+ «Победитель чемпионата»
Иначе. Текст= GroupBox2. Текст+ «Победитель чемпионата»_In_Group (DataGridView OutPutData, Team[] Teams, int number_group)
Описание входных и выходных данных
Ниже в таблице описываются входные и выходные данные, которые выстроены примерно в том порядке, в котором они должны взаимодействовать с пользователем.
Описание входных и выходных данных
Входные | Выходные |
2. Выбор раздела в Главном меню программы 4. Ввод при помощи клавиатуры название команд и стран, либо при помощи кнопки случайно, случайно заполняем таблицу. 5. Ввод при помощи клавиатуры очков за забитые голы команд в Игре 1/8, либо при помощи кнопки случайно, случайно заполняем таблицу. 8. Ввод при помощи клавиатуры очков за забитые голы команд в Игре 1/4, либо при помощи кнопки случайно, случайно заполняем таблицу. 10. Ввод при помощи клавиатуры очков за забитые голы команд в Игре 1/2, либо при помощи кнопки случайно, случайно заполняем таблицу. 12. Ввод при помощи клавиатуры очков за забитые голы команд в Финале, либо при помощи кнопки случайно, случайно заполняем таблицу. | 1. Отображение на экране Главного меню 3. Вывод на экран ранее выбранного раздела: - Ввод команды - вывод на экран окна Ввод команды - Игры 1/8 - вывод на экран окна Игры 1/8 - Игры 1/4 - вывод на экран окна Игры 1/4 - Команды вышедшие в 1/2 - вывод на экран окна Команды вышедшие в 1/2 - Игры 1/2 - вывод на экран окна Игры 1/2 - Финал - вывод на экран окна Финал - Поздравление - Вывод на экран окна Поздравление 6. Вывод на экран окна Результаты. 7. Вывод на экран окна Команды вышедшие в 1/4. 9. Вывод на экран окна Команды вышедшие в 1/2. 11. Вывод на экран окна Команды вышедшие в финал. 14. Вывод на экран окна Поздравление. |