Программа "Тетрис"

Программа "Тетрис" осуществляет вывод на экран случайным образом падение различных фигур. Входными данными является ввод вариантов скорости движения фигур сверху вниз и управление падающими фигурами. Назначение программы - развитие логического мышления.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 09.03.2009
Размер файла 23,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

2

Министерство образования и науки Украины

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовому проекту

на тему "Игра тетрис"

по курсу "Объектно-ориентированное программирование"

2005

Аннотация

В данном документе описывается программа, написанная в соответствии с постановкой задачи на курсовое проектирование по теме "Тетрис" по дисциплине "Объектно-ориентированное программирование". Данная программа осуществляет вывод на экран случайным образом падение различных фигур. Входными данными является ввод вариантов скорости движения фигур сверху вниз и управление падающими фигурами.

Назначение программы - развлечение играющих, совершенствование их координации и логического мышления. Программа может применяться в качестве игровой на разных типах персональных компьютеров.

Требованием к аппаратному и программному обеспечению является наличие любого IBM-совместимого компьютера с наличием накопителя на гибких и (или) жестких магнитных дисках, видеоадаптера класса VGA и наличием достаточного количества оперативной памяти (достаточно 640к). На компьютере должна быть установлена операционная система MS-DOS v2.1(или выше) или любая другая, совместимая с ней.

Содержание

Введение

1. Постановка задачи

2. Анализ варианта и его доработка

3. Входные данные

4. Сообщения (системному программисту)

5. Структура программы

6. Проверка программы

7. Дополнительные возможности

8. Описание алгоритма игры

9. Описание и обоснование выбора метода организации данных

10. Создание интерфейса

11. Ввод данных с клавиатуры

12. Обработка данных

Заключение

Библиография

Приложение 1

Приложение 2

Приложение 3

Введение

По окончанию курса “Объектно-ориентированное программирование” стоит задача в закреплении навыков объектном программировании на ЭВМ. Она состоит в написании программы.

В современном мире обработки информации очень удобно использование диалогового режима работы, а также целесообразно использовать компилятор который более экономно распределяет память и ресурсы центрального процессора. Поэтому я разработал программу в среде Borland С - программу, управляемую событиями (события от клавиатуры и др.).

1. Постановка задачи по разработке программы
Требуется написать программу - тетрис, осуществляющую падение фигур и наложение их друг на друга, а также подсчет заполненных линий.
2. Анализ варианта и его доработка

В процессе анализа задания на курсовое проектирование в первоначальный вариант были внесены некоторые изменения, которые позволили расширить набор функций, выполняемых программой, используемых в программе.

Весь интерфейс с программой осуществляется в графическом режиме.

Ввод данных осуществляется с клавиатуры.

3. Входные и выходные данные

Входные данные - коды нажатых в режиме реального времени клавиш. Выходные данные - графическая информация на дисплее.

4. Сообщения (системному программисту)

Для нормальной (без замедления) работы программы на ЭВМ AT 286 или ЭВМ PC XT рекомендуется уменьшить значение, присваиваемое переменной stop, в 2-3раза. По аналогии рекомендуется увеличить это значение при использовании программы на ЭВМ AT 486 и PENTIUM. После этого программу рекомендуется перекомпилировать.

5. Структура программы

Исходный текст программы хранится в 3-х файлах: tetris.cpp, glass.cpp, tetris.h.

Название файла

Содержимое

tetris.cpp

Функция main и 2 функции класса tetris - PutArea и Randomize - перекрывшие виртуальные функции класс Glass

glass.cpp

реализация классов Glass и Tetris

tetris.h

определения констант, описание используемых структур данных, интерфейс классов Tetris и Glass

Компиляция в турбо-среде осуществляется с использованием файла проекта tetris.prj, в который записываются компоненты glass.cpp и tetris.cpp.

6. Проверка программы

Проверка работоспособности программы осуществляется в следующих случаях:

- независание фигуры при падении;

- падение фигуры до дна ящика;

- невыход фигуры за границы ящика;

- сдвиг фигуры и поворот её на расстоянии от стенок;

- сдвиг фигуры вблизи стенки и поворот её (при этом не должно происходить наложение фигуры на границу ящика);

- неналожение фигуры при достижении лежащих на дне ящика других фигур;

- изъятие слоя, не содержащего пустых ячеек (все ячейки заполнены квадратами фигур);

- "оседание" слоев при изъятии слоя, не содержащего пустых ячеек;

- окончание игры при заполнении ящика или по команде игрока.

7. Дополнительные возможности

Возможность выбора скорости игры при её начале (выбор одной из трех скоростей игры).

8. Описание алгоритма игры

9. Описание и обоснование выбора метода организации данных

Данные

Метод организации

Фигура

Двумерный массив-наиболее естественное представление, например:

Ящик

Двумерный массив, элемент которого-целое число - соответствует свободной или занятой ячейке.

Каталог фигур

Массив из приведенных выше матриц.

Ширина, высота ящика,количество цветов и фигур; флаги наложения, достижения дна ящика, свободной ячейки и др.

Константы

В соответствии с принципами объектно-ориентированного программирования в программе данные организованы в несколько объектов:

- ящик:

class Glass {

int iAttribute; // переменные, используемые

int iRange; // для описания движения фигуры,

int x,y; // а также её вида и цвета

char pbyMask[100]; //

char abyGlass // двумерные массивы,

[CONST_WIDTH+4][CONST_HEIGTH+4]; // изображающие ящик

char abyTemp // и используемые в процессе

[CONST_WIDTH+4][CONST_HEIGTH+4]; // всей игры

char abyOldGlass //

[CONST_WIDTH+4][CONST_HEIGTH+4]; //

int iStatus; //

void Figure(); // функции генерации случайной

void Turn(); // фигуры, её перемещения,

int Check(int op); // поворота,

public:

Glass(); // проверки наложения

int Next(); //

void Show(); //

void DoLeft(); //

void DoRight(); //

void DoTurn(); //

void QuickFall(); //

virtual void PutArea(int,int,int); //

virtual int Randomize(); //

- собсственно тетрис - класс, являющийся потомком ящика и перекрывший 2 виртуальные функции: PutArea() и Randomize().

class Tetris:public Glass {

void PutArea(int,int,int);

int Randomize(); };

10. Создание интерфейса

Начальный интерфейс выполняется тремя функциями:

а) вывод и движение слева на право зеленного окна;

б) падение на окно фигуры;

в) движение и развертывание выбора трех вариантов скорости.

Интерфейс рабочей области игры обеспечивает процедура класса Tetris, осуществляющая вывод квадрата фигуры или пустой ячейки на экран.

11. Ввод данных с клавиатуры

При первоначальном старте программы, во время движения фигур по экрану, можно прекратить выполнение, нажатием любой клавиши. После вывода на экран трех вариантов скорости, ее выбор осуществляется нажатием клавиши клавиатуры, номер которой она соответствует.

Подтверждение ввода клавишей Enter не требуется.

Далее на экране появляется ящик с падающими фигурами. Управление игрой осуществляется следующими клавишами:

Название клавиши

Выполняемая функция

Стрелка вправо

Сдвиг фигуры вправо

Стрелка влево

Сдвиг фигуры влево

Стрелка вверх

Поворот фигуры вокруг собственной оси по часовой стрелке

Enter

Падение фигуры до дна ящика

ESC

Окончание игры

Игру можно прекратить в любое время клавишей Esc, после ее нажатия открывается диалоговое окно выбора вариантов скорости, повторный Esc окончательный выход из программы.

12. Обработка данных

После выбора варианта скорости игры программа циклически опрашивает клавиатуру и генерирует новую фигуру: void Figure(void) с использованием генератора случайных чисел вычисляется номер фигуры в списке фигур и цвет фигуры (iAttribute), проверяется наложение: если ящик полон (Check(GET_CUBE)==

BE_SUPERPOSITION), то новая фигура появиться не может, и переменной состояния присваивается значение "конец игры": iStatus=BE_END.

Если ящик не заполнен (iStatus=BE_FREE), на экран выводится новая фигура (iStatus=BE_FALL). Определяем наложение фигуры и заполненные строки(Check(SET_CUBE)), если заполненных строк нет - генерируем новую(iStatus=BE_NEW), есть - удаляем строку, перерисовываем экран и генерируем новую фигуру (iStatus=BE_NEW).

Заключение

В ходе курсовой работы мною были изучены некоторые аспекты объектно-ориентированного программирования на языке Си++ (организация данных в структуре класс, обеспечение доступа к ним, наследование классов, переопределение функций). При оформлении курсовой работы был получены навыки оформления программной документации, а также большой практический опыт работы в Borland C++ v3.1, Microsoft Word for Windows, Visio 2000 (хотя освоение этих программных продуктов не было целью курсовой работы, данные навыки нельзя считать бесполезными). Теоретические сведения были закреплены практическими занятиями.

Библиография

1. Страустрап Б. Введение в язык С++ Ресурсы электронной библиотеки InfoCity (http://www.inforcity.kiev.ua), 1995.

2. Бочков С. О., Субботин Д. М. Язык программирования Си для персонального компьютера . М.: “Диалог”, Радио и связь, 1990.

3. Справочная система языка C++.

4. Конспект лекций по дисциплине ОПиАЯ.

Приложение 1

(tetris.cpp)

#include <graphics.h>

#include <conio.h>

#include <stdlib.h>

#include "tetris.h"

#include <dos.h>

// процедура класса Tetris, осуществляющая вывод квадрата

// фигуры или пустой ячейки на экран

void Tetris::PutArea(int x,int y,int color)

{

if(color == 0) {

setfillstyle(CLOSE_DOT_FILL,BROWN);

bar(x*20+100,y*20+50,x*20+119,y*20+69);

setfillstyle(SOLID_FILL,LIGHTMAGENTA);

bar(x*20+109,y*20+59,x*20+111,y*20+61);

} else {

setfillstyle(CLOSE_DOT_FILL,BROWN);

bar(x*20+100,y*20+50,x*20+119,y*20+69);

setfillstyle(SOLID_FILL,LIGHTMAGENTA);

bar(x*20+102,y*20+52,x*20+117,y*20+67);

setfillstyle(SOLID_FILL,color);

bar(x*20+104,y*20+54,x*20+115,y*20+65);

}

}

// генерация случайного числа

int Tetris::Randomize()

{

static int iRnd = 0;

if(!iRnd) randomize();

iRnd = 1;

return(rand());

}

// Основная программа

main()

{

START: // инициализация класса

Tetris tetris;

int c,d,i,j,gdriver = VGA,gmode = VGAHI,errorcode;

int x1,y1,x2,y2,x3,y3,stop,sch;

// инициализация графики

initgraph(&gdriver,&gmode,"egavga.bgi");

errorcode = graphresult();

if(errorcode!=grOk) return(1);

setfillstyle(EMPTY_FILL,DARKGRAY);bar(0,0,639,479);

// вывод заголовка

setfillstyle(INTERLEAVE_FILL,DARKGRAY);bar(190,100,425,200);

outtextxy(260,120,"T E T R I S");

outtextxy(203,160,"By Reiman Valeriy. gr.I-32");

// движения окна по экрану справа налево

for(i=80;i!=0;--i) {

if(kbhit()) {closegraph(); return(0);}

j=5*i;

setfillstyle(HATCH_FILL,GREEN);bar(j+12,312,j+188,388);

outtextxy(j+30,330,"Press any key");

outtextxy(j+50,350,"for exit");

delay(20);

setfillstyle(EMPTY_FILL,DARKGRAY);bar(j,300,j+200,400);

}

setfillstyle(HATCH_FILL,GREEN);bar(j+12,312,j+188,388);

settextstyle(SMALL_FONT,HORIZ_DIR,6);

outtextxy(j+30,330,"Press any key");

outtextxy(j+50,350,"for exit");

// падение фигуры на окно

for(i=0;i<24;++i) {

if(kbhit()) {closegraph(); return(0);}

j=10*i;

setfillstyle(SOLID_FILL,WHITE);

bar(10,j+10,30,j+30);

bar(10,j+30,30,j+50);

bar(10,j+50,30,j+70);

bar(30,j+30,50,j+50);

setfillstyle(SOLID_FILL,RED);

bar(12,j+12,28,j+28);

bar(12,j+32,28,j+48);

bar(12,j+52,28,j+68);

bar(32,j+32,48,j+48);

delay(100);

setfillstyle(EMPTY_FILL,DARKGRAY);

bar(1,j,60,j+80);

};

setfillstyle(HATCH_FILL,GREEN);bar(17,312,193,388);

outtextxy(35,330,"Press 1-3 for");

outtextxy(55,350,"select level:");

delay(500);

// 3 окна c вариантами скорости игры разлетаются

for(i=0;i<20;++i) {

if(kbhit()) {closegraph(); return(0);}

x1=7*i;y1=4*i;x2=7*i;y2=0;x3=7*i;y3=-4*i;

outtextxy(220+x1,340+y1,"3 - quick level");

outtextxy(220+x2,340+y2,"2 - normal level");

outtextxy(220+x3,340+y3,"1 - eazy level");

delay(100);

setfillstyle(EMPTY_FILL,DARKGRAY);bar(198+x1,328+y1,352+x1,382+y1);setfillstyle(EMPTY_FILL,DARKGRAY);bar(198+x2,328+y2,352+x2,382+y2);

setfillstyle(EMPTY_FILL,DARKGRAY);bar(198+x3,328+y3,352+x3,382+y3);

}

outtextxy(353,416,"3 - QUICK LEVEL");

outtextxy(353,340,"2 - NORMAL LEVEL");

outtextxy(353,264,"1 - EAZY LEVEL");

// выбор скорости игры

input:

stop=getch();

switch(stop) {

case 49: stop=400; break;

case 50: stop=300; break;

case 51: stop=200; break;

case 27: closegraph();return(0);

case 13: return(0);

default: goto input;

}

setfillstyle(EMPTY_FILL,DARKGRAY);bar(0,0,639,479);

setfillstyle(SOLID_FILL,LIGHTGRAY);

bar(95,45,105+20*CONST_WIDTH,55+20*CONST_HEIGTH);

// цикл опроса клавиатуры

for(;;) {

for(i=0;i!=stop;i++)

{

delay(1);

if(kbhit()) { c=getch();

switch(c)

{

case 0: d=getch();switch(d)

{

case 72: tetris.DoTurn();break;

case 75: tetris.DoLeft();break;

case 77: tetris.DoRight();break;

}

break;

case 13: tetris.QuickFall();break;

case 27: goto START;

}

}

}

if(tetris.Next() == BE_END) {

// окончание игры

setfillstyle(HATCH_FILL,RED);bar(130,200,370,300);

settextstyle(SMALL_FONT,HORIZ_DIR,10);

outtextxy(145,230,"GAME OVER");

settextstyle(SMALL_FONT,HORIZ_DIR,5);

outtextxy(175,270,"Press any key");

getch();

closegraph();

return(0);

}

}

Приложение 2

glass.cpp

#include <stdio.h>

#include "tetris.h"

#include<string.h>

#include <conio.h>

#include <graphics.h>

int sch=0;

// массив структур с описанием фигур

struct Block Blocks[CONST_FIGURES]={

{"00..00...",3,0},{".0.000...",3,0},

{"0..000...",3,0},{"..0000...",3,0},

{".0000....",3,0},{"0000",2,0},

{".......0....0....0....0..",5,-1}};

// виртуальная функция вывода на экран

// квадрата фигуры или пустой ячейки

void Glass::PutArea(int x,int y,int color)

{}

// виртуальная функция генерации случайного числа

int Glass::Randomize()

{

return(0);

}

// сдвиг фигуры влево, если это возможно */

void Glass::DoLeft()

{

x--;

// проверка наложения передвинутой фигуры

if(Check(GET_CUBE)==BE_SUPERPOSITION) x++;

// изображение передвинутой фигуры в ящике

Show();

}

// сдвиг фигуры вправо, если это возможно

void Glass::DoRight()

{

x++;

// проверка наложения передвинутой фигуры

if(Check(GET_CUBE)==BE_SUPERPOSITION) x--;

// изображение передвинутой фигуры в ящике

Show();

}

// поворот фигуры, если это возможно

void Glass::DoTurn()

{

Turn(); Turn(); Turn();

// проверка наложения передвинутой фигуры

if(Check(GET_CUBE)==BE_SUPERPOSITION)

Turn();

// изображение передвинутой фигуры в ящике

Show();

}

// уронить тетрамино как можно быстрее

void Glass::QuickFall()

{

if(y<0) Next();

Next();

// падение фигуры до дна ящика

while(y>=1) Next();

}

// изъятие заполненных строк,

// сдвиг фигуры вниз на одну позицию,

// или, если это невозможно, генерация новой фигуры

int Glass::Next()

{

int i,j,n,k;

char text[20];

// sch=1;

switch(iStatus) {

case BE_FALL: // эта часть осуществляет падение на

y++; // одну позицию и проверку наложения

if(Check(GET_CUBE)==BE_SUPERPOSITION) {

y--; // эта часть убирает

Check(SET_CUBE); // заполненные строки

for(n=j=CONST_HEIGTH+1;j!=1;j--) {

for(i=0,k=0;i!=CONST_WIDTH;i++) {

abyGlass[i+2][n] = abyGlass[i+2][j];

if(abyGlass[i+2][n] == ITEM_EMPTY)

k++;

if(n!=j)

{ abyGlass[i+2][j] = 0;

if((j==2)&(k==15))

{ setfillstyle(EMPTY_FILL,0);

bar(420,190,600,210);

sprintf(text,"Closed Lines -> %d",sch=sch+n-2);

outtextxy(430,200,text); }

}

}

if(k) n--;

}

} else {

// изображение передвинутой фигуры в ящике

Show();

break;

}

case BE_NEW:

Figure(); //эта часть генерирует новую фигуру

if(Check(GET_CUBE)==BE_SUPERPOSITION) {

iStatus=BE_END;

break;

}

// изображение передвинутой фигуры в ящике

Show();

iStatus = BE_FALL;

}

return(iStatus);

}

// изображение передвинутой фигуры в ящике

void Glass::Show()

{

int i,j;

memcpy(abyTemp,abyGlass,(4+CONST_WIDTH)*(4+CONST_HEIGTH))

Check(SET_CUBE);

for(j=0;j!=CONST_HEIGTH;j++)

for(i=0;i!=CONST_WIDTH;i++)

if(abyOldGlass[i+2][j+2]!=abyGlass[i+2][j+2]) {

PutArea(i,j,abyGlass[i+2][j+2]);

abyOldGlass[i+2][j+2] = abyGlass[i+2][j+2];

}

memcpy(abyGlass,abyTemp,(4+CONST_WIDTH)*(4+CONST_HEIGTH))

}

// конструктор класса Glass

Glass::Glass(void)

{

int i,j;

iStatus = BE_NEW;

for(j=0;j!=CONST_HEIGTH+4;j++) {

for(i=0;i!=CONST_WIDTH+4;i++) {

abyGlass[i][j] = abyOldGlass[i][j] = -1;

if(((i>1)&&(i<CONST_WIDTH+2))&&((j>1)&&(j<CONST_HEIGTH+2))

abyGlass[i][j] = 0;

}

}

// выбор вида и цвета фигуры с помощью генератора

// случайных чисел

void Glass::Figure()

{

int i,iRnd;

iRnd = Randomize();

iAttribute = ((iRnd & 0xff00)>>8)%CONST_COLOR+1;

i=(iRnd & 0x0ff)%CONST_FIGURES;

strcpy(pbyMask,Blocks[i].pbyMask);

iRange = Blocks[i].iRange;

y = Blocks[i].iUpLine;

x = (CONST_WIDTH-iRange)/2;

}

// функция поворота фигуры

void Glass::Turn()

{

int offset,i1,i2,i3,pos;

int range=iRange-1;

char c;

if(iRange&1) {

for(offset=0;offset!=range/2;offset++) {

for(pos=0;pos!=range-offset*2;pos++) {

i1=pos+offset;

i2=range-offset;

i3=range-pos-offset;

c=*(pbyMask+offset+i1*iRange);

*(pbyMask+offset+i1*iRange)=*(pbyMask+i1+i2*iRange);

*(pbyMask+i1+i2*iRange)=*(pbyMask+i2+i3*iRange);

*(pbyMask+i2+i3*iRange)=*(pbyMask+i3+offset*iRange);

*(pbyMask+i3+offset*iRange)=c;

}

}

}

}

// функция контроля наложения фигуры

int Glass::Check(int op)

{

int i,j;

for(j=0;j!=iRange;j++) {

for(i=0;i!=iRange;i++) {

if(*(pbyMask+i+j*iRange)!=BE_EMPTY) {

switch(op) {

case SET_CUBE:

abyGlass[i+x+2][j+y+2] = iAttribute;

break;

case GET_CUBE:

if(abyGlass[i+x+2][j+y+2]!=ITEM_EMPTY)

return (BE_SUPERPOSITION);

}

}

}

}

return(BE_FREE);

}

Приложение 3

Файл TETRIS.H

// габариты ящика

#define CONST_HEIGTH 20

#define CONST_WIDTH 15

// количество цветов

#define CONST_COLOR 9

// количество фигур

#define CONST_FIGURES 7

// значения, присваиваемые переменной состояния и

// характеризующие рабочее состояние программы

#define BE_EMPTY '.'

#define BE_FREE 15

#define BE_NEW 16

#define BE_SUPERPOSITION 17

#define BE_FALL 18

#define BE_END 20

#define ITEM_EMPTY 0

#define SET_CUBE 22

#define GET_CUBE 23

// тип массива, используемого для хранения фигуры

struct Block {

char *pbyMask;

int iRange;

int iUpLine; };

// класс, описывающий ящик и все работающие с ним процедуры

class Glass {

int iAttribute;

int iRange;

int x,y;

char pbyMask[100];

char abyGlass

[CONST_WIDTH+4][CONST_HEIGTH+4];

char abyTemp

[CONST_WIDTH+4][CONST_HEIGTH+4];

char abyOldGlass

[CONST_WIDTH+4][CONST_HEIGTH+4];

int iStatus;

void Figure();

void Turn();

int Check(int op);

public:

Glass();

int Next();

void Show();

void DoLeft();

void DoRight();

void DoTurn();

void QuickFall();

virtual void PutArea(int,int,int);

virtual int Randomize(); };

// класс, описывающий ящик с двумя добавленными процедурами:

// вывода квадрата на экран и генерации фигуры

class Tetris:public Glass {

void PutArea(int,int,int);

int Randomize(); };


Подобные документы

  • Проектирование приложения "Тетрис", осуществляющего вывод различных фигур на экран случайным образом и их падение. Описание логической структуры программы, ее тестирование. Требования к аппаратной и программной средам. Функции для работы с приложением.

    курсовая работа [343,7 K], добавлен 20.01.2015

  • История создания игры "Тетрис", смысл и правила данной головоломки. Разработка поля игры и фигур тетрамино. Процедуры и функции, используемые для реализации движения фигур, их поворота и складывания в ряды, удаления и подсчета количества целых рядов.

    курсовая работа [87,0 K], добавлен 02.02.2013

  • Написание программы, которая позволяет пользователю играть в графическом режиме в игру "Тетрис". Разработка функционала с возможностью выбора скорости. Обзор требований к аппаратному и программному обеспечению. Интерфейс, описание данных и тестирование.

    курсовая работа [506,3 K], добавлен 17.12.2014

  • Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.

    курсовая работа [1,5 M], добавлен 17.01.2011

  • Создание игровой системы "Тетрис": количество игр, режимы сложности, интерфейс пользователя, игровая статистика, обработка исключений. Структура входных и выходных данных. Диаграммы и описание классов. Блок-схема алгоритма программы, результаты ее работы.

    курсовая работа [1,9 M], добавлен 13.06.2012

  • Разработка игровой программы "Frag the monster", которая осуществляет вывод на экран случайным образом врагов, основного игрока и дополнительных объектов (оружия). Обоснование выбора языка программирования - С++. Интерфейс и принцип работы программы.

    курсовая работа [3,2 M], добавлен 27.12.2011

  • Розробка програми "Тетрис", яка виконує створення та переміщення фігур, видалення повних рядів та нарахування балів. Вимоги до умов експлуатації ігрової програми, вхідні та вихідні дані. Проектування діаграми класів та діаграми станів ігрового додатку.

    курсовая работа [515,8 K], добавлен 27.05.2019

  • Основные этапы разработки игровой системы "Тетрис", создание игр "Стройка" и "Гонки" на основе тетриса в трех режимах сложности: сложный, средний, легкий. Особенности контейнеров, итераторов, обработка исключений, описание основных классов и алгоритмов.

    курсовая работа [1,4 M], добавлен 22.06.2012

  • Процедура ввода исходных данных в программу, вывод результатов работы программы на экран. Принцип организации хранения логически связанных наборов информации в виде файлов. Параметры характеристики файла, способы обращения к нему, соглашения по типу.

    реферат [14,5 K], добавлен 06.12.2011

  • Программа на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран. Лист с начальными данными. Ввод начальных (нулевых) значений для расчетных величин. Вспомогательные переменные, счетчики циклов. Формирование матрицы данных.

    курсовая работа [2,7 M], добавлен 01.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.