Создание программы "EuroBasket"
Список переменных и типов данных. Программное и аппаратное обеспечение программы. Программирование игры в среде C# про чемпионат Европы по баскетболу среди мужских команд с определением места в группах по наибольшему числу трехочковых попаданий в группе.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 29.10.2012 |
Размер файла | 35,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
- Введение
Основная цель курсовой работы - усовершенствование навыков работы в среде C#.
При изучении предметной области, выяснилось, что «EuroBasket» на первый взгляд простая игра, но для ее реализации необходимо обратится практически ко всем разделам программирования в среде C#.
Суть самой игры заключается в следующем: В чемпионате Европы по баскетболу среди мужских команд участвуют 24 сборных, разбитых на 6 групп. Места в группах в случае равенства очков у двух и более команд определяются следующим образом:
а) по результатам игр между собой;
б) по лучшей разнице заброшенных и пропущенных мячей;
в) по наибольшему числу 3-х очковых попаданий за все игры в группе.
Сборные, занявшие 1 места в группах, выходят в 1/4 финала. Кроме того, в 1/4 финала выходят 2 сборные из числа команд, занявших 2 места в группах, имеющие лучшие показатели по набранным очкам, а в случае их равенства:
а) по лучшей разнице заброшенных и пропущенных мячей;
б) по наибольшему числу 3-х очковых попаданий за все игры в группе. Пары в 1/4 и в 1/2 финала определяются жребием. Определить чемпиона Европы по баскетболу.
1. Назначение и область применения
Данная программа может быть использована в качестве развлечения.
Программа имеет простой интерфейс, позволяющий быстро разобраться, как пользоваться данной программой. Поэтому программа легка для понимания и очень удобна в использовании для широкого круга пользователей.
2. Постановка задачи
Целью данной курсовой работы является углубление знаний и расширение навыков по разработке алгоритмов и их реализации на персональном компьютере. Курсовая работа выполнена в среде C#.
В курсовой работе используются основные возможности языка в работе со структурами, файлами.
В данной игре предполагалось создание:
1. легко осваиваемого интерфейса;
2. графическое окно, удобным расположением кнопок и вкладок;
3. доступного для понимания руководства пользователя;
4. Возможность в любой момент покинуть игру.
3. Используемые методы
В данной программе использовались следующие разделы 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. Начало
2. Вводим названия сборных и соответствующих им стран
Цикл пока 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. Выводим команды вышедшие в финал и заполняем результаты
GroupBox1. Текст=Массив полуфинала[0].Имя
GroupBox2. Текст=Массив полуфинала[2].Имя
13. Выводим победителя чемпионата
Если numericUpDown1. Значение> numericUpDown3. Значение
Label3. Текст= GroupBox1. Текст+ «Победитель чемпионата»
Иначе Если numericUpDown1. Значение< numericUpDown3. Значение
Label3. Текст= GroupBox2. Текст+ «Победитель чемпионата»
Иначе Если numericUpDown2. Значение> numericUpDown4. Значение
Label3. Текст= GroupBox1. Текст+ «Победитель чемпионата»
Иначе
Label3. Текст= GroupBox2. Текст+ «Победитель чемпионата»
Sort_In_Group (DataGridView OutPutData, Team[] Teams, int number_group)
5. Описание входных и выходных данных
Ниже в таблице описываются входные и выходные данные, которые выстроены примерно в том порядке, в котором они должны взаимодействовать с пользователем.
Описание входных и выходных данных
Входные |
Выходные |
|
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. Вывод на экран окна Поздравление. |
6. Программное и аппаратное обеспечение программы
Для запуска игры достаточно любого компьютера, на котором установлена хоть какая-нибудь операционная система, семейство Windows.
7. Руководство пользователя
1. Запустите файл «EuroBasket.exe». На экране появится стартовая страница.
2. Нажмите клавишу «Начать» и вы перейдёте ко вкладке ввода команд. Здесь в соответствующие столбцы вводим названия сборных и стран.
3. Нажмите «Далее».
Теперь перед вами таблица игр 1-й группы в 1/8. Таблицу, необходимо заполнить следующими данными: Очки, 3-очковые.
4. Нажмите «Далее» и вы перейдёте к таблице результатов, где увидите
распределение команд группы по местам, сумму очков, количество пропущенных мячей и сумму 3-х очковых.
5. Повторите действия 3-4 ещё 5 раз (пока все группы не сыграют в 1/8).
6. Нажмите «Далее» и вы перейдёте на вкладку, где увидите список команд, вышедших в 1/4 финала.
7. Нажмите «Далее» и на соответствующей вкладке введите результаты 1/4.
8. Нажмите «Далее», и увидите список команд, вышедших в 1/2.
9. Нажмите «Далее» и введите результаты полуфинальной игры.
10. Нажмите «Далее» и вы узнаете, какие команды вышли в финал.
Введите результаты финальной игры.
11. Нажмите «Далее» и радуйтесь за победителя чемпионате Европы по баскетболу среди мужских команд.
Заключение
Не смотря на внешне кажущуюся простоту данной программы, он таит в себе ряд сложностей, которые реализуются с использованием всех основных приемов Visual С#. На мой взгляд, изучая программирование в Visual С#, можно освоить основные приемы программирования.
Целью данной курсовой работы, являлось углубление знаний и расширение навыков по разработке алгоритмов и их реализации на персональном компьютере, на мой взгляд, разработанная мной программа, вполне отвечает поставленным целям. Особенностями данной программы является:
- Четко построенный алгоритм;
- Интуитивно понятный интерфейс;
- Удобное управление;
- Простота в использовании;
- Вполне понятное руководство пользователя;
- Отсутствие лишних дополнений.
Список литературы
1. Герберт Шилдт «Полный справочник по С#».: Пер. с англ. - М.: Издательский дом «Вильямс», 2004. - 740 с.: ил. - Парал. тит. англ.
2. Ч. Петцольд «Программирование для Windows на C#», «Москва», 2002.
3. Троелсен Э. «С# и платформа.NET. Библиотека программиста» - СПб.: Питер, 2004. - 796 с.: ил.
4. Г. Шилдт «C#. Учебный курс», «Питер», 2003.
Приложение 1
Листинг программы.
ь Form1.cs
using System;
using System. Collections. Generic;
using System. ComponentModel;
using System. Data;
using System. Drawing;
using System. Text;
using System. Windows. Forms;
namespace EuroBasket
{
public partial class Form1: Form
{
private Team[] Teams; // Начальный массив команд
private Team[] TM;
private Team[] TC; // Массив команд в полуфинальных играх
private Championship championship; // Чемпионат содержит всю игровую сетку по группам
public Form1 ()
{
InitializeComponent();
}
int index_step = 0; // Индекс текущего этапа
private void Exchange (Team one, Team two)
{
Team TC = new Team(«», «»);
TC. All_Lose_Points = one. All_Lose_Points;
TC. All_Scores = one. All_Scores;
TC. Country = one. Country;
TC. Name = one. Name;
TC. Three_Points = one. Three_Points;
one. Three_Points = two. Three_Points;
one. Name = two. Name;
one. All_Lose_Points = two. All_Lose_Points;
one. All_Scores = two. All_Scores;
one. Country = two. Country;
two. All_Lose_Points = TC. All_Lose_Points;
two. All_Scores = TC. All_Scores;
two. Country = TC. Country;
two. Name = TC. Name;
two. Three_Points = TC. Three_Points;
} // Метод для обмена команд
private void Sort_In_Group (DataGridView OutPutData, Team[] Teams, int number_group) // Метод сортировки в группах
{
OutPutData. RowCount = 4;
for (int k = 4 * number_group; k < 4 * number_group + 4; k++) // Копируем нужную часть массива Teams[] в массив TM[] чтобы не перемешивать массив Teams[]
{
TM[k] = new Team (Teams[k].Name, Teams[k].Country);
TM[k].All_Lose_Points = Teams[k].All_Lose_Points;
TM[k].All_Scores = Teams[k].All_Scores;
TM[k].Three_Points = Teams[k].Three_Points;
}
for (int i = 0; i < 4; i++) // Сортируем
{
for (int o = 4 * number_group, p = 4 * number_group + 1; p < 4 * number_group + 4; o++, p++)
{
if (TM[o].All_Scores < TM[p].All_Scores) // По забитым мячам
{
Exchange (TM[o], TM[p]);
}
else
{
if (TM[o].All_Scores == TM[p].All_Scores) // Если равны
{
if (championship. Games [o, p, number_group] < championship. Games [p, o, number_group]) // По играм друг с другам
{
Exchange (TM[o], TM[p]);
}
else
{
if (championship. Games [o, p, number_group] == championship. Games [p, o, number_group]) // Если равны
{
if (TM[o].Difference > TM[p].Difference)
{
Exchange (TM[o], TM[p]);
}
else
{
if (TM[o].Difference == TM[p].Difference) // По разнице забитых и пропущенных
{
if (TM[o].Three_Points < TM[p].Three_Points)
{
Exchange (TM[o], TM[p]);
}
}
}
}
}
}
}
}
}
for (int i = 0, k = 4 * number_group; i < 4; i++, k++) // Выводим в таблицу
{
OutPutData [0, i].Value = i + 1;
OutPutData [1, i].Value = TM[k].Name;
OutPutData [3, i].Value = TM[k].All_Lose_Points;
OutPutData [2, i].Value = TM[k].All_Scores;
OutPutData [4, i].Value = TM[k].Three_Points;
}
}
private class Championship // Класс чемпионат
{
public int[,] Games; // Игровая сетка в группах
}
private class Team // Класс команда
{
public string Name; // Имя
public string Country; // Страна
public int All_Scores; // Сумма забитых
public int All_Lose_Points; // Сумма пропущенных
public int Three_Points; // 3-х очковые
public int Difference // Разница забитых и пропущенных
{
get
{
return All_Scores - All_Lose_Points;
}
}
public Team (string Name, string Country) // Конструктор
{
this. Name = Name;
this. Country = Country;
}
}
private void Build_Table (DataGridView output_data, int count_teams, int group_count)
{
output_data. RowCount = 12;
for (int i = count_teams * group_count, irows = 0; i < count_teams * group_count + count_teams - 1; i++)
{
for (int k = i + 1; k < count_teams * group_count + count_teams; k++)
{
output_data [1, irows].Value = Teams[i].Name;
if (irows% 2 == 0 & irows!= 0)
{
output_data [0, irows].Value = Convert. ToInt32 (output_data [0, irows - 2].Value) + 1;
}
else
{
output_data [0, 0].Value = 1;
}
irows++;
output_data [1, irows].Value = Teams[k].Name;
irows++;
}
}
}
private void button1_Click (object sender, EventArgs e) // Кнопка Начать
{
dataGridView1. RowCount = 24; // Присвоить число строк
for (int i = 0; i < 24; i++)
{
dataGridView1 [0, i].Value = (i + 1).ToString(); // Присвоить ячейке по адресу [столбец, строка] значение
}
tabControl1. SelectedIndex++; // Перейти на следующую вкладку
button1_Next. Visible = true; // Показать кнопку далее
}
private void button1_Next_Click (object sender, EventArgs e) // Кнопка далее
{
try // Если не введены данные в какую либо таблицу, чтобы не вылетали ошибки
{
switch (tabControl1. SelectedIndex) // В зависимости от текущей вкладки
{
case 1:// Присваиваем командам имена и страны
{
index_step = 0;
Teams = new Team [dataGridView1. RowCount];
TM = new Team [dataGridView1. RowCount];
for (int i = 0; i < Teams. Length; i++)
{
Teams[i] = new Team (dataGridView1 [1, i].Value. ToString(), dataGridView1 [2, i].Value. ToString());
}
tabControl1. SelectedIndex++;
tabControl2. SelectedIndex = 0;
Build_Table (dataGridView2, 24 / 6, index_step); // Строим групповую таблицу
break;
}
case 2:
{
switch (tabControl2. SelectedIndex) //
{
case 0:
{
championship = new Championship();
championship. Games = new int [24, 24, 6];
for (int i = 0; i < dataGridView2. RowCount; i += 2) // Заполняем игровую сетку для текущей группы
{
for (int p = 4 * index_step; p < 4 * index_step + 4; p++)
{
if (dataGridView2 [1, i].Value. ToString() == Teams[p].Name)
{
Teams[p].All_Scores += Convert. ToInt32 (dataGridView2 [2, i].Value);
Teams[p].All_Lose_Points += Convert. ToInt32 (dataGridView2 [2, i + 1].Value);
Teams[p].Three_Points += Convert. ToInt32 (dataGridView2 [3, i].Value);
for (int m = 4 * index_step; m < 4 * index_step + 4; m++)
{
if (dataGridView2 [1, i + 1].Value. ToString() == Teams[m].Name)
{
Teams[m].All_Scores += Convert. ToInt32 (dataGridView2 [2, i + 1].Value);
Teams[m].All_Lose_Points+= Convert. ToInt32 (dataGridView2 [2, i].Value);
Teams[m].Three_Points += Convert. ToInt32 (dataGridView2 [3, i + 1].Value);
championship. Games [p, m, index_step] = Convert. ToInt32 (dataGridView2 [2, i].Value);
championship. Games [m, p, index_step] = Convert. ToInt32 (dataGridView2 [2, i + 1].Value);
}
}
}
}
}
Sort_In_Group (dataGridView3, Teams, index_step); // Сортируем
tabControl2. SelectedIndex++; // Переходим к результатам
break;
}
case 1:
{
index_step++; // Индекс этап + 1
if (index_step < 6) // Если прошли не все этапы
{
tabControl2. SelectedIndex = 0;
for (int i = 0; i < dataGridView2. RowCount; i++)
{
dataGridView2 [2, i].Value = «»;
dataGridView2 [3, i].Value = «»;
}
Build_Table (dataGridView2, 24 / 6, index_step);
}
else // Если все выводим командв прошедшие в 1 / 4
{
tabControl2. SelectedIndex++;
dataGridView4. RowCount = 8;
for (int i = 0; i < 6; i++)
{
dataGridView4 [0, i].Value = i + 1;
dataGridView4 [1, i].Value = this.TM [i * 4].Country;
dataGridView4 [2, i].Value = this.TM [i * 4].Name;
dataGridView4 [3, i].Value = this.TM [i * 4].All_Scores;
dataGridView4 [4, i].Value = this.TM [i * 4].All_Lose_Points;
dataGridView4 [5, i].Value = this.TM [i * 4].Three_Points;
}
Team[] TM = new Team[6];
for (int i = 0; i < 6; i++)
{
TM[i] = new Team (this.TM [i * 4 + 1].Name, this.TM [i * 4 + 1].Country);
TM[i].All_Lose_Points = this.TM [i * 4 + 1].All_Lose_Points;
TM[i].All_Scores = this.TM [i * 4 + 1].All_Scores;
TM[i].Three_Points = this.TM [i * 4 + 1].Three_Points;
}
for (int i = 0; i < 6; i++) // Сортировка 2 мест в группах
{
for (int o = 0, p = 1; p < 6 - i; o++, p++)
{
if (TM[o].All_Scores < TM[p].All_Scores)
{
Exchange (TM[o], TM[p]);
}
else
{
if (TM[o].All_Scores == TM[p].All_Scores)
{
if (TM[o].Difference < TM[p].Difference)
{
Exchange (TM[o], TM[p]);
}
else
{
if (TM[o].Difference == TM[p].Difference)
{
if (TM[o].Three_Points < TM[p].Three_Points)
{
Exchange (TM[o], TM[p]);
}
}
}
}
}
}
}
// Вывод 2-х мест
dataGridView4 [0, 6].Value = 7;
dataGridView4 [1, 6].Value = TM[0].Country;
dataGridView4 [2, 6].Value = TM[0].Name;
dataGridView4 [3, 6].Value = TM[0].All_Scores;
dataGridView4 [4, 6].Value = TM[0].All_Lose_Points;
dataGridView4 [5, 6].Value = TM[0].Three_Points;
dataGridView4 [0, 7].Value = 8;
dataGridView4 [1, 7].Value = TM[1].Country;
dataGridView4 [2, 7].Value = TM[1].Name;
dataGridView4 [3, 7].Value = TM[1].All_Scores;
dataGridView4 [4, 7].Value = TM[1].All_Lose_Points;
dataGridView4 [5, 7].Value = TM[1].Three_Points;
// Полученные команды из таблицы в новый масив
this.TM = new Team[8];
dataGridView5. RowCount = 8;
for (int i = 0; i < 8; i++)
{
this.TM[i] = new Team (dataGridView4 [2, i].Value. ToString(), dataGridView4 [1, i].Value. ToString());
this.TM[i].All_Lose_Points = Convert. ToInt32 (dataGridView4 [4, i].Value);
this.TM[i].All_Scores = Convert. ToInt32 (dataGridView4 [3, i].Value);
this.TM[i].Three_Points = Convert. ToInt32 (dataGridView4 [5, i].Value);
dataGridView5 [1, i].Value = this.TM[i].Name;
}
for (int i = 0, k = 1; i < 8; i += 2, k++)
{
dataGridView5 [0, i].Value = k;
}
}
break;
}
case 2:// Переходим к 1 / 4
{
tabControl1. SelectedIndex++;
break;
}
}
break;
}
case 3:// 1 / 4
{
dataGridView6. RowCount = 4;
TC = new Team[4];
for (int i = 0, k = 0; i < 8; i += 2, k++) // Считывание данных из таблицы
{
this.TM[i].All_Scores = 0;
this.TM[i].All_Lose_Points = 0;
this.TM[i].Three_Points = 0;
this.TM [i + 1].All_Scores = 0;
this.TM [i + 1].All_Lose_Points = 0;
this.TM [i + 1].Three_Points = 0;
this.TM[i].All_Scores = Convert. ToInt32 (dataGridView5 [2, i].Value);
this.TM[i].All_Lose_Points = Convert. ToInt32 (dataGridView5 [2, i + 1].Value);
this.TM[i].Three_Points = Convert. ToInt32 (dataGridView5 [3, i].Value);
this.TM [i + 1].All_Scores = Convert. ToInt32 (dataGridView5 [2, i + 1].Value);
this.TM [i + 1].All_Lose_Points = Convert. ToInt32 (dataGridView5 [2, i].Value);
this.TM [i + 1].Three_Points = Convert. ToInt32 (dataGridView5 [3, i + 1].Value);
if (this.TM[i].All_Scores > this.TM [i + 1].All_Scores) // Тут же сортировка
{
TC[k] = new Team (TM[i].Name, TM[i].Country);
TC[k].All_Lose_Points = TM[i].All_Lose_Points;
TC[k].All_Scores = TM[i].All_Scores;
TC[k].Three_Points = TM[i].Three_Points;
}
else
{
if (this.TM[i].All_Scores < this.TM [i + 1].All_Scores)
{
TC[k] = new Team (TM[i + 1].Name, TM [i + 1].Country);
TC[k].All_Lose_Points = TM [i + 1].All_Lose_Points;
TC[k].All_Scores = TM [i + 1].All_Scores;
TC[k].Three_Points = TM [i + 1].Three_Points;
}
else
{
if (this.TM[i].All_Scores == this.TM [i + 1].All_Scores)
{
if (this.TM[i].Three_Points > TM [i + 1].Three_Points)
{
TC[k] = new Team (TM[i].Name, TM[i].Country);
TC[k].All_Lose_Points = TM[i].All_Lose_Points;
TC[k].All_Scores = TM[i].All_Scores;
TC[k].Three_Points = TM[i].Three_Points;
}
else
{
TC[k] = new Team (TM[i + 1].Name, TM [i + 1].Country);
TC[k].All_Lose_Points = TM [i + 1].All_Lose_Points;
TC[k].All_Scores = TM [i + 1].All_Scores;
TC[k].Three_Points = TM [i + 1].Three_Points;
}
}
}
}
}
for (int i = 0; i < 4; i++) // Вывод Результатов 1 / 4
{
dataGridView6 [0, i].Value = i + 1;
dataGridView6 [1, i].Value = TC[i].Country;
dataGridView6 [2, i].Value = TC[i].Name;
dataGridView6 [3, i].Value = TC[i].All_Scores;
dataGridView6 [4, i].Value = TC[i].All_Lose_Points;
dataGridView6 [5, i].Value = TC[i].Three_Points;
}
tabControl1. SelectedIndex++; // Показываем результаты
break;
}
case 4:// Строим 1 / 2 сетку игр
{
dataGridView7. RowCount = 4;
for (int i = 0, k = 1; i < 4; i++)
{
if (i% 2 == 0)
{
dataGridView7 [0, i].Value = k;
k++;
}
dataGridView7 [1, i].Value = TC[i].Name;
}
tabControl1. SelectedIndex++;
break;
}
case 5:
{
for (int i = 0; i < 4; i += 2) // Считываем данные 1 / 2
{
this.TC[i].All_Scores = 0;
this.TC[i].All_Lose_Points = 0;
this.TC[i].Three_Points = 0;
this.TC [i + 1].All_Scores = 0;
this.TC [i + 1].All_Lose_Points = 0;
this.TC [i + 1].Three_Points = 0;
this.TC[i].Name = dataGridView7 [1, i].Value. ToString();
this.TC[i].All_Scores = Convert. ToInt32 (dataGridView7 [2, i].Value);
this.TC[i].Three_Points = Convert. ToInt32 (dataGridView7 [3, i].Value);
this.TC [i + 1].Name = dataGridView7 [1, i + 1].Value. ToString();
this.TC [i + 1].All_Scores = Convert. ToInt32 (dataGridView7 [2, i + 1].Value);
this.TC [i + 1].Three_Points = Convert. ToInt32 (dataGridView7 [3, i + 1].Value);
if (this.TC[i].All_Scores < this.TC [i + 1].All_Scores) // Сортируем
{
Exchange (TC[i], TC [i + 1]);
}
else
{
if (TC[i].All_Scores == TC [i + 1].All_Scores)
{
if (TC[i].Three_Points < TC [i + 1].Three_Points)
{
Exchange (TC[i], TC [i + 1]);
}
}
}
}
// Выводим финалистов
groupBox1. Text = TC[0].Name;
groupBox2. Text = TC[2].Name;
tabControl1. SelectedIndex++;
break;
}
case 6:
{
if (numericUpDown1. Value > numericUpDown3. Value) // Выбор победителя
{
label3. Text = groupBox1. Text + «победитель чемпионата!!!»;
}
else
{
if (numericUpDown1. Value < numericUpDown3. Value)
{
label3. Text = groupBox2. Text + «победитель чемпионата!!!»;
}
else
{
if (numericUpDown2. Value > numericUpDown4. Value)
{
label3. Text = groupBox1. Text + «победитель чемпионата!!!»;
}
else
{
label3. Text = groupBox2. Text + «победитель чемпионата!!!»;
}
}
}
tabControl1. SelectedIndex++;
break;
}
}
}
catch {MessageBox. Show («В таблицу введены не все данные, или они введены некорректно», «Информация», MessageBoxButtons.OK, MessageBoxIcon. Information);}
}
private void tabControl1_TabIndexChanged (object sender, EventArgs e)
{
button1_Next_Click (sender, e);
}}}
игра баскетбол программирование eurobasket
Размещено на Allbest.ru
Подобные документы
Особенности разработки компьютерной игры, в которой проводится чемпионат по волейболу. Список переменных и типов данных. Разработка текстового и графического алгоритма. Разбор основных этапов игры на примере. Основные положения руководства пользователя.
курсовая работа [976,9 K], добавлен 09.06.2016Группировка атрибутов в отношениях, их нормализация. Характеристика сжатых типов таблиц. Создание базы данных MS Access. Построение сценария работы программы. Создание кнопочной формы, запросов и отчетов. Минимальное аппаратное и программное обеспечение.
курсовая работа [1,3 M], добавлен 20.04.2015"Пятнашки" на первый взгляд простая игра, но для ее реализации необходимо обратится ко всем разделам программирования в среде Турбо Паскаль. Назначение и область применения. Описание алгоритма программы. Программное и аппаратное обеспечение программы.
курсовая работа [308,0 K], добавлен 04.07.2008Формирование на экране меню для выбора функций. Элементы пользовательского интерфейса. Описание внутренних переменных, входных и выходных данных языка программирования Си. Выбор пользователем функции. Создание программы "Список коммерческих банков".
курсовая работа [491,9 K], добавлен 17.03.2015Создание программы для обработки информации об объектах предметной области "Бытовая техника" в среде визуального программирования C++. Иерархия родственных классов. Описание логической структуры программы. Реализация файлового ввода/вывода данных.
курсовая работа [711,4 K], добавлен 27.07.2014Назначение и состав системного блока компьютера. Виды и применение системных программ. Основные возможности Word: способы выполнения команд, запуск программы, открытие документа и завершение работы. Функционирование информационно-вычислительной сети.
контрольная работа [541,2 K], добавлен 27.08.2013Рассмотрение основ работы в Microsoft Visual Studio 2010 с языком программирования С#. Реализация программы обработки данных авиапассажиров. Выбор метода ввода данных из текстового файла. Создание фильтра для обработки списка по определенным критериям.
курсовая работа [1,4 M], добавлен 17.01.2016Анализ предметной области. Проектирование и разработка базы данных и интерфейса в виде набора Web-страниц для отображения, создания, удаления и редактирования записей базы данных. Аппаратное и программное обеспечение системы. Алгоритм работы программы.
курсовая работа [3,0 M], добавлен 12.01.2016Разработка игры "Экзамен" с применением объектно-ориентированного программирования и языка Java (в среде Eclipse Helios). Структура программы и алгоритм решения задачи. Описание методов и переменных. Экспериментальное тестирование и оценка программы.
курсовая работа [122,5 K], добавлен 19.05.2011Разработка программы тестирования студентов по MS PowerPoint с кодом на языке Delphi. Создание алгоритма для решения функциональных требований задачи. Описание переменных, вспомогательных процедур, входных и выходных данных для реализации программы.
курсовая работа [1,5 M], добавлен 21.09.2010