Игровая система "Тетрис"

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

?нат фигуры.

table[10, 19] - двумерный массивтипа boolдля хранения, доступа и изменения фигур расположенных на игровой доске.

 

 

 

3. Диаграммы классов

 

Рис.

 

 

Рис.

 

 

4. Описание классов

 

Таблица

Экземпляр класса является фигурой на игровой доскеShapeЭкземпляр класса является основным обработчиком алгоритмов тетрисаBuildЭкземпляр класса является танком на игровой доскеTankЭкземпляр класса является пулей на игровой доскеShotЭкземпляр класса является основным обработчиком алгоритмов игры Гонки(танки)TanksЭкземпляр класса является главным GUIокном приложенияMainWindow

 

 

 

5. Блок-схема алгоритма

 

Блок-схема функции voidLineRem() - функция удаляет заполненные линии в игре стройка и опускает постройку в низ.

 

Рис.

 

 

Блок-схема функции voidcheckCoord(int[,] m) - функция проверяет не вышли ли координаты фигурыза границы игровой доски.

 

Рис.

 

 

6. Алгоритмы функций

 

Алгоритм функции voidMainWindow_FormClosing(objectsender, FormClosingEventArgse)-функция закрывает все активные потоки и закрывает программу.

1.Начало.

Входные данные:

sender- системный объект типа objectкоторый вызвал событие.

e - объект типа EventArgs- системные аргументы произошедшего события.

game- объект класса MainWindow типа stringхранящий название запущенной игры.

Buld_ -объект класса MainWindowтипа Buildдля запуска игры стройка.

Tanks_- объект класса MainWindowтипа Tanks_ для запуска игры гонки(танки).

2.if(game == Build) если текущая игра стройка то выполняем пункт 3 иначе переходим к пункту8.

3.if (Build_.thr != null) если поток игры стройка запущен то выполняем пункт 4 иначе переходим к пункту 8.

4.if (Build_.thr.ThreadState == System.Threading.ThreadState.Suspended)еслипотокнаходитсявсостоянии паузы то выполняем пункты 5-6 иначе переходим к пункту 7.

5.Build_.thr.Resume(); восстанавливаем поток.

6.Build_.thr.Abort(); останавливаем поток полностью.

7.Build_.thr.Abort(); останавливаем поток полностью.

8.if (game == Tanks &&Tanks_ != null) если текущая игра гонки(танки) и объект класса MainWindowTanks_ инициализирован то выполняем пункт 9 иначе переходим к пункту 19.

9.if (Tanks_.thr != null) если поток игры гонки(танки) инициализирован то выполняем 10 пункт иначе переходим к пункту 19.

10.if (Tanks_.thr.ThreadState == System.Threading.ThreadState.Suspended) если поток находится в состоянии паузы то выполняем пункты 11 - иначе переходим к пункту 16.

11.Tanks_.thr.Resume(); восстанавливаем поток.

12.Tanks_.thr.Abort(); останавливаем поток полностью.

13.thrTime.Resume(); восстанавливаем поток.

14.thrTime.Abort(); останавливаем поток полностью.

15.label11.Text = 0; обнуляем таймер.

16.Tanks_.thr.Abort(); останавливаем поток полностью.

17.thrTime.Abort(); останавливаем поток полностью.

18.label11.Text = 0; обнуляем таймер.

19.Конец.

АлгоритмфункцииvoidStartTanks(objectsender, EventArgse)- функциязапускает или останавливает игру гонки(танки).

1.Начало.

Входные данные:

sender- системный объект типа objectкоторый вызвал событие.

e - объект типа EventArgs- системные аргументы произошедшего события.

Tanks_ -объект класса MainWindowтипа Tanks для запуска игры гонки(танки).

thrTime - объект класса MainWindowтипа Threadдля запуска таймера в отдельном потоке.

richTextBox1, richTextBox2 - объекты класса MainWindowтипа RichTextBox содержащие имена игроков.

2.if (Tanks_ == null) если объект игры гонки(танки) не инициализирован то выполняем пункты 3-9 иначе переходим к 10 пункту.

3.checkBox2.Text = Stop; помечаем кнопку запуска теперь как кнопку остановки.

4.Tanks_ = newTanks(); инициализируем объект Tanks_.

5.Tanks_.Start(); запускаем игру гонки(танки).

6.richTextBox1.Enabled = false; закрываем доступ для изменения имени игрока 1.

7.richTextBox2.Enabled = false; закрываем доступ для изменения имени игрока 2.

8.Tanks_.Tank_1.name = richTextBox2.Text; приваиваемимятанку 2.

9.Tanks_.Tank_.name = richTextBox1.Text; приваиваемимятанку 1.

10.checkBox2.Text = Start; помечаем кнопку остановки теперь как кнопку запуска.

11.Tanks_.thr.Abort(); останавливаем поток в котором выполняется игра гонки(танки).

12.Tanks_.ClearTable(); чистим игровую доску.

13.Tanks_ = null; обнуляем объект игры гонки(танки).

14.thrTime.Abort(); останавливаем поток в котором выполнялся таймер.

15.label11.Text = 0; обнуляем таймер

16.richTextBox1.Enabled = true; открываем доступ для изменения имени игрока 1.

17.richTextBox2.Enabled = true; открываем доступ для изменения имени игрока 2.

18.Конец

 

 

 

. Результат работы программы

 

Рисунок 7.2 - начало игры в гонки

 

Рисунок 7.3 - игровой процесс

 

Рисунок 7.4 - конец игры

 

Рисунок 7.5 - начало игры в стройку

 

Рисунок 7.6 - игровой процесс

 

 

Рисунок 7.7 - конец игры

 

 

Приложение А

 

Листинг программы

 

КлассShape - отвечает за падающую фигуру в игре стройка.System;System.Collections.Generic;System.Linq;System.Text;System.Threading.Tasks;System.Drawing;System.Drawing.Drawing2D;TetrixSystem

{

{lastShape = 0;count = 0;nextShape = 0;state = 1;d = true;[,] coord = {

{0,0}, //x,y

{0,0},

{0,0},

{0,0},

};[,] tcoord = {

{0,0}, //x,y

{0,0},

{0,0},

{0,0},

};left()

{( coord[0, 0] == 0 || coord[1, 0] == 0 || coord[2, 0] == 0 || coord[3, 0] == 0);x = 0;y = 0;x1 = 0;y1 = 0;f = false;(int i = 0;i < 4; i++)

{

x = coord[i, 0];

y = coord[i, 1];(MainWindow.table[x - 1, y] == true)

{(int j = 0; j < 4; j++)

{

x1 = coord[j, 0];

y1 = coord[j, 1];(x - 1 == x1 && y == y1)

{

f = true;;

}

}(!f) return;

f = false;

}

}();

coord[0, 0]--;

coord[1, 0]--;

coord[2, 0]--;

coord[3, 0]--;

toTable();.Inv();