Игра "Крестики-нолики" - Курсовая работа

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


Аннотация к работе
Выбор и проработка программных средствИнтеллектуальная логическая игра «Крестики-нолики».Игра «Крестики-нолики» позволяет пользователю выбрать поле 9х9, 15х15, 45х45, играть против компьютера и ходить крестиками во время игры.2.1 Документ, на основании которого ведется разработкаНациональный Исследовательский Томский политехнический университет.Данная разработка дает возможность пользователю развить его логическое мышление, выбор поля позволяет заинтересовать пользователя и делает процесс игры разнообразным.Программа должна предоставить возможность пользователю нажать кнопку «Finish» по окончанию ввода ника. 4.1.2 Программа должна содержать главное меню, состоящее из четырех разделов «Begin», «Record», «About», «Exit», и каждый раздел меню должен иметь подменю. 4.1.4 Программа должна предоставить возможность осуществление управлением игрой с помощью манипулятора - мышь. 4.1.6 Программа должна предоставить возможность пользователю в ходе игрового процесса наблюдать за своим количеством побед, за количеством побед компьютера, видеть свой ник и текущие победы в специальном окне левом верхнем углу, а также в любой момент игры сохранить свое текущее количество побед. 4.1.7 Программа должна предоставить возможность пользователю в ходе игрового процесса в случае выигрыша или проигрыша видеть в левом верхнем углу сообщение о победе или неудаче: «You win!» или «You lose!»4.2.1 Программа должна отслеживать существование файлов «data1.txt» и «data.txt» при их открытии, в противном случае выдать ошибку.Для функционирования игры «Крестики-нолики» необходим компьютер IBM PC совместимый и следующие технические средства: · процессор Intel 80286 или совместимый; · объем свободной оперативной памяти 700 Кб;Для функционирования текстового редактора необходимо наличие операционной системы MS-DOS или совместимой.Предварительный состав программной документации: · «Техническое задание», текст программы с комментариями, описание алгоритма и программы.Существует эмулятор DOSBOX, который позволяет увеличить быстродействие выполнение программы и отрисовку графики, что значительно экономит время при выполнении программы.ТЗ - техническое задание, ПЗ - пояснительная записка. Содержание этапа или стадия Срок Форма отчетности начало конецИмя функции обрабатывающей одно и то же событие для всех объектов одинаково, но ее реализация зависит от объекта, точнее от класса этого объекта, и определяется во время выполнения программы. В классе kletka_nolik метод paint реализует отрисовку ноликов и через объект, созданный в методе game класса common используется, когда необходимо нарисовать нолик. Из методов inilization_graph, mouse, mov_mouse, resize, chose_fl, save, oformlenie, game, swap, record, spravka, find, enter, registration, menu, privet, которые объявлены как public, то есть доступные для других классов в программе; Все счетчики для игрока отображаются на экране в правом верхнем углу в подменю Start меню Begin, а также вызывается метод сохранения количества побед игрока в любой момент - save (wins_old_nick,win_new_nick) - то есть сохраняются именно победы игрока, которые отображаются в разделе меню Record, при условии, если игрок попал в десятку лучших игроков. Изначально в файле первая строка содержит количество ников: за количество ников отвечает член класса - n , на второй указана длина ника: массив length [i] отвечает за длины ников, так как ников содержится несколько в файле, и на этой же строке далее находится название ника, которое представлено, как массив символов - char nick[10][10], причем массив двумерный, так как ников несколько в файле, на третьей - количество побед, за которое отвечают члены wins_old_nick или win_new_nick.В ходе написания программы были использованы элементы объектно-ориентированного программирования. Было использовано переопределение стандартных операций для переменных абстрактных типов, а так же работа с графикой, строками и т.д. Были применены знания, полученные в процессе изучения курса «Программирование на ЯВУ».

План
СОДЕРЖАНИЕ

Техническое задание

Введение

1.1 Наименование продукта

1.2 Краткая характеристика области применения

2. Основание для разработки

2.1 Документ, на основании которого ведется разработка

2.2 Организация, утвердившая документ

3. Назначение разработки

4. Требования к разработке

4.1 Требования к функциональным характеристикам

4.2 Требования к надежности

4.3 Требования к составу и параметрам технических средств

4.4 Требования к информационной и программной совместимости

5. Требования к программной документации

6. Технико-экономические показатели

Введение
Постановка задачи

Выбор и проработка программных средств

Проектирование программы

Анализ результатов разработки программы

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

Были применены знания, полученные в процессе изучения курса «Программирование на ЯВУ». При выполнении курсовой была проработана литература по языкам С/С , объектно-ориентированному программированию. Работать с объектами класса при помощи функций членов намного удобнее, нежели не использовать классы, а применять только стандартный набор типов данных.

Пользователю не придется тратить много времени на освоение правил игры «Крестики-нолики». Простота и наглядность интерфейса делают игру удобной в использовании.

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

Список литературы
Листинг программы

ТЕХНИЧЕСКОЕ ЗАДАНИЕ НА РАЗРАБОТКУ ПРОГРАММНОЙ РЕАЛИЗАЦИИ ИГРЫ «КРЕСТИКИ-НОЛИКИ»

1. ВВЕДЕНИЕ1. Мирошниченко Е.А. и др. Программирование на языке С . Часть II. Учебное пособие/ Н.В. Триханова, Е.А. Мирошниченко. - Томск: Изд. ТПУ, 2001. - 118с.

2. Костюк Ю.Л. Основы алгоритмизации: Учебное пособие. / Ю.Л.Костюк. - Томск: Изд. ТГУ, 1996. - 124с.

3. Бондарев В.М. и др. Основы программирования. / В.М. Бондарев, В.И. Рублинецкий, Е.Г. Качко. / Худож.-оформитель С.А. Пяткова. - Харьков: Фолио; Ростов н/Д: Феникс, 1997. - 368с.

4. Вирт Н. Алгоритмы и структуры данных. / Н. Вирт. - М.: Мир, 1989. - 310с.:ил.

5. Рейзлин В.И. Программирование на языке высокого уровня: учебник http://ad.cctpu.edu.ru/cpp/Textbook.htm

ЛИСТИНГ ПРОГРАММЫ

#include

#include

#include

#include

#include

#include

#include class kletka_pust

{ protected: int FIELDSX,FIELDSY;

int s;

public: kletka_pust(){};

kletka_pust(int x1,int y1)

{

FIELDSX=x1;

FIELDSY=y1;

}

~kletka_pust(void)

{

} virtual void paint(int g,int h,int ISIZEFL)

{

}

};

class kletka_cross:kletka_pust

{ public: kletka_cross(){};

kletka_cross(int x1,int y1)

{

FIELDSX=x1;

FIELDSY=y1;

} kletka_cross::~kletka_cross(void)

{

} void paint(int g,int h,int ISIZEFL)

{ int t=0;

int kletka = 450/ISIZEFL;

setcolor(1);

if(ISIZEFL!=45)

{ do

{ line(FIELDSX kletka*(g-1) t,FIELDSY kletka*(h-1),FIELDSX kletka*g,FIELDSY kletka*h-t);

line(FIELDSX kletka*(g-1),FIELDSY kletka*h-t,FIELDSX kletka*g-t,FIELDSY kletka*(h-1));

line(FIELDSX kletka*(g-1),FIELDSY kletka*(h-1) t,FIELDSX kletka*g-t,FIELDSY kletka*h);

line(FIELDSX kletka*(g-1) t,FIELDSY kletka*h,FIELDSX kletka*g,FIELDSY kletka*(h-1) t);

t ;

}while(t!=5);

} else do

{ line(FIELDSX kletka*(g-1) t,FIELDSY kletka*(h-1),FIELDSX kletka*g,FIELDSY kletka*h-t);

line(FIELDSX kletka*(g-1),FIELDSY kletka*h-t,FIELDSX kletka*g-t,FIELDSY kletka*(h-1));

line(FIELDSX kletka*(g-1),FIELDSY kletka*(h-1) t,FIELDSX kletka*g-t,FIELDSY kletka*h);

line(FIELDSX kletka*(g-1) t,FIELDSY kletka*h,FIELDSX kletka*g,FIELDSY kletka*(h-1) t);

t ;

}while(t!=2);

setcolor(9);

}

};

class kletka_nolik:kletka_pust

{ public: kletka_nolik(){};

kletka_nolik(int x1,int y1)

{

FIELDSX=x1;

FIELDSY=y1;

} kletka_nolik::~kletka_nolik(void)

{

} void paint(int g,int h,int ISIZEFL)

{ int t=0;

int kletka = 450/ISIZEFL;

setcolor(13);

do

{ circle(FIELDSX (kletka)*(g-0.5),FIELDSY (kletka)*(h-0.5),kletka/2-5 t);

circle(FIELDSX (kletka)*(g-0.5),FIELDSY (kletka)*(h-0.5),kletka/2-5-t);

t ;

}while(t!=5);

setcolor(9);

}

};

class pair

{ public: int X, Y;

friend pair& operator (pair&);

pair()

{

X=40; Y=10;

}

~pair() {};

};

pair& operator (pair& P)

{

P.Y=P.Y 30;

P.X=P.X 10;

return P;

} class common

{ public: int i,j,x,y,button,n,q,just,d,COUNTTIE,e;

int MENUXM;

int MENUYM ;

int LONGMENUM;

int WIDTHMENUM;

int COUNTMENUM;

int SPACEMENUM;

int LENGTHKNOB;

int WIDTHKNOB;

int QUANTILYKNOBWI;

int QUANTILYKNOBLE;

int SPACEKNOB;

int XKNOB;

int YKNOB;

int XWIN;

int YWIN;

int LENGTHWIN;

int WIDTHWIN;

int MENUXAU;

int MENUYAU;

int LONGMENUAU;

int WIDTHMENUAU;

int SPACEMENUAU;

int FIELDSX;

int FIELDSY ;

int MENUX, MENUY;

int Longmenu;

int widthmenu;

int space;

int endcikl, p,a, count,max;

int length[10];

char nick[10][10];

int winer[10];

char buf[10];

char buf1[10];

int length_buf;

char old_nick[10];

char new_nick[10];

int length_old_nick;

int wins_old_nick;

int length_new_nick;

int win_new_nick;

int place,finish;

int k,l, n1, n2, n3,u, Finish,probel;

int ASCII;

char back_buf[1];

int type_of_nick;

int number;

int win_comp;

int tie;

int w,er,kletka;

int ISIZEFL;

int vixod2;

int znak;

int i0,j0,EXITFOR,ALLMAX0,ALLMAXX,MAXX, COUNTX,count0,EXITMARK;

char CHARRPIE[45][45];

int IARRVES0[45][45];

int IARRVESX[45][45];

int win,WINZNAK,way;

int vixod_4,gor,vert,diag,pdiag,proverka_2,for_break;

common()

{

LONGMENUM = 160;

WIDTHMENUM = 60;

COUNTMENUM = 4;

SPACEMENUM = 10;

LENGTHKNOB = 68;

WIDTHKNOB = 32;

QUANTILYKNOBWI = 4;

QUANTILYKNOBLE = 6;

SPACEKNOB = 10;

XKNOB = 91;

YKNOB = 200;

XWIN = 220;

YWIN =100;

LENGTHWIN = 200;

WIDTHWIN = 20;

MENUXAU = 190;

MENUYAU = 240;

LONGMENUAU = 260;

WIDTHMENUAU = 60;

SPACEMENUAU = 30;

FIELDSX = 95;

FIELDSY = 15;

MENUX=5, MENUY=30;

Longmenu=95;

widthmenu=30;

space=10;

MENUXM=240;

MENUYM = 60;

endcikl=0, p,a, count=0,max=0;

length[10];

win_new_nick=0;

place = 0;

u=0;

finish = 0;

probel=0;

ASCII=0;

type_of_nick;

number =2;

win_comp=0;

tie=0;

ISIZEFL=5;

vixod2=1;

znak = 1;

i0,j0,EXITFOR=0,ALLMAX0,ALLMAXX,MAXX, COUNTX,count0,EXITMARK;

vixod_4=0;

gor=0;

vert=0;

diag=0;

pdiag=0;

proverka_2;

endcikl=0; count=0;max=0;

length_old_nick=0;

wins_old_nick=0;

length_new_nick=0;

win_new_nick=0;

place = 0;

k=0;

n1=0;

n2=0; n3=0;u=0; Finish = 0;probel=0;

ASCII=0;

type_of_nick=0;

number =2;

win_comp=0;

tie=0;

w=0;er=0;kletka=0;

ISIZEFL=5;

vixod2=1;

znak = 1;

i0=0;j0=0;EXITFOR=0;ALLMAX0=0;ALLMAXX=0;MAXX=0; COUNTX=0;count0=0;EXITMARK=0;

win=0;WINZNAK=0;way=0;

vixod_4=0;gor=0;vert=0;diag=0;pdiag=0;proverka_2=0;for_break=0;

}

~common(void) {};

/*************************************************************************/ void inilization_graph()

{ int gdriver = DETECT, gmode, errorcode;

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

errorcode = graphresult();

if (errorcode != GROK)

{ printf("Graphics error: %s

", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

}

/*************************************************************************/ void mouse(int mode)

{

_AX = mode;

geninterrupt(0x33);

} void mov_mouse(int mode2)

{ do

{

_AX=mode2;

geninterrupt (0x33);

x=_CX;

y=_DX;

button=_BL ;

} while (button == 0);

} void resize()

{

_AX = 7;

_CX = 0;

_DX = 640;

geninterrupt (0x33);

_AX = 8;

_CX = 0;

_DX = 480;

geninterrupt (0x33);

}

/*************************************************************************/ void chose_fl()

{ just=0;

const int Xupravlemie = 230;

const int Yupravlemie = 110;

const int kolishestvo = 4;

const int LONGKNOBYPR= 180;

const int WIDTHKNOBYPR= 60;

const int probel_upravleni=10;

int q,obchee,EZXXXIT=1;

inilization_graph();

do

{ cleardevice();

setbkcolor(7);

setfillstyle(1,14);

setcolor(9);

obchee=probel_upravleni*(kolishestvo-1) WIDTHKNOBYPR*kolishestvo;

for(i=0;i<obchee;i =probel_upravleni WIDTHKNOBYPR)

{ mouse(2);

bar(Xupravlemie,Yupravlemie i,Xupravlemie LONGKNOBYPR,Yupravlemie WIDTHKNOBYPR i);

mouse(1);

} settextstyle(0,0,3);

outtextxy(Xupravlemie-75,Yupravlemie WIDTHKNOBYPR/2-5-100,"Choose Flied");

settextstyle(0,0,2);

outtextxy(Xupravlemie 4,Yupravlemie WIDTHKNOBYPR/2-8,"Flied 9x9");

outtextxy(Xupravlemie 4,Yupravlemie WIDTHKNOBYPR/2-8 WIDTHKNOBYPR probel_upravleni,"Flied 15x15");

outtextxy(Xupravlemie 4,Yupravlemie WIDTHKNOBYPR/2-8 probel_upravleni*2 WIDTHKNOBYPR*2,"Flied 45x45");

outtextxy(Xupravlemie 4,Yupravlemie WIDTHKNOBYPR/2-8 probel_upravleni*3 WIDTHKNOBYPR*3,"Exit main");

settextstyle(0,0,0);

delay(200);

mouse(1);

mov_mouse(3);

for (q = 1; q <= kolishestvo ; q ) if((y > (Yupravlemie probel_upravleni*(q-1) WIDTHKNOBYPR*(q-1)))&&(y Xupravlemie)&&(x<Xupravlemie LONGKNOBYPR))break;

if(q==1) {ISIZEFL=9;EZXXXIT=0;} if(q==2) {ISIZEFL=15;EZXXXIT=0;} if(q==3) {ISIZEFL=45;EZXXXIT=0;} if(q==4) {just=1;return;}

} while(EZXXXIT==1);

}

/*************************************************************************/ void save(int wins_old_nick,int win_new_nick)

{ ifstream f("data.txt");

f >> n;

for(i = 0; i<n; i )

{ f >> length[i];

if(length[i]>max) max=length[i];

for (j = 0; j < length[i]; j ) f>>nick[i][j];

} for(i = 0; i<n; i )

{ f>> winer[i];

} if(type_of_nick==0)

{ for(i = 0; i<n; i )

{ if(length[i]==length_old_nick) for (j = 0; j < length[i]; j ) if(nick[i][j]==old_nick[j]) count ;

if (count==length_old_nick)

{ winer[i]=winer[i] wins_old_nick;

}

} ofstream fl("data.txt");

fl<<n;

fl<<"

";

for(i=0;i<n;i )

{ fl << length[i];

if(length[i]>max) max=length[i];

for (j = 0; j < length[i]; j ) fl<<nick[i][j];

fl<<"

";

} for(i = 0; i<n; i )

{ fl<< winer[i];

if(i!=n-1)fl<<"

";

}

} if(type_of_nick==1)

{ for(j=0;j<length_new_nick;j )

{ nick[n][j] = new_nick[j];

} length[n]=length_new_nick;

winer[n] = win_new_nick;

n=n 1;

ofstream fl("data.txt");

fl<<n;

fl<<"

";

for(i=0;i<n;i )

{ fl << length[i];

if(length[i]>max) max=length[i];

for (j = 0; j < length[i]; j ) fl<<nick[i][j];

fl<<"

";

} for(i = 0; i<n; i )

{ fl<< winer[i];

fl<<"

";

}

} wins_old_nick=0;win_new_nick=0;

for (i = 0; i < 10; i ) for (j = 0; j < 10; j )

{ nick[i][j]=" ";

winer[i]=0;

}

}

/*************************************************************************/ void oformlenie()

{ cleardevice();

setbkcolor(7);

setcolor(9);

kletka = 450/ISIZEFL;

setfillstyle(1,15);

bar(FIELDSX,FIELDSY,640-FIELDSX,480-FIELDSY);

for(i=0;i<(ISIZEFL 1)*kletka;i=i kletka)

{ line(FIELDSX i,FIELDSY,FIELDSX i,480-FIELDSY);

line(FIELDSX,FIELDSY i,640-FIELDSX,FIELDSY i);

} setfillstyle(1,14);

for(i=0;i<3;i ) bar(MENUX,MENUY widthmenu*i space*i,MENUX Longmenu-10,MENUY widthmenu*(i 1) space*i);

outtextxy(MENUX 5,MENUY widthmenu/2,"start");

outtextxy(MENUX 5,MENUY widthmenu/2 widthmenu space,"save");

outtextxy(MENUX 5,MENUY widthmenu/2 widthmenu*2 space*2,"Exit main");

w=0;

setfillstyle(1,15);

bar(640-FIELDSX w 3,FIELDSY,640-FIELDSX w 5 80,100);

setfillstyle(1,15);

bar(640-FIELDSX w 3,FIELDSY 100,640-FIELDSX w 5 80,200);

if(type_of_nick==0)

{ for(i=0;i<length_old_nick;i )

{ setcolor(4);

back_buf[0]=old_nick[i];

back_buf[1]="\x0";

outtextxy(640-FIELDSX w 5,30,back_buf);

w =8;

} setcolor(9);

back_buf[0]=char(48 wins_old_nick);

back_buf[1]="\x0";

outtextxy(640-FIELDSX 5,40,back_buf);

} if(type_of_nick==1)

{ setcolor(4);

for(i=0;i<length_new_nick;i )

{ back_buf[0]=new_nick[i];

back_buf[1]="\x0";

outtextxy(640-FIELDSX w 5,30,back_buf);

w =8;

} setcolor(9);

back_buf[0]=char(48 win_new_nick);

back_buf[1]="\x0";

outtextxy(640-FIELDSX 5,40,back_buf);

} setcolor(4);

outtextxy(640-FIELDSX 5,55,"Computer");

setcolor(9);

back_buf[0]=char(48 win_comp);

back_buf[1]="\x0";

outtextxy(640-FIELDSX 5,65,back_buf);

setcolor(4);

outtextxy(640-FIELDSX 5,80,"Tie");

setcolor(9);

back_buf[0]=char(48 tie);

back_buf[1]="\x0";

outtextxy(640-FIELDSX 5,90,back_buf);

}

/****************************************************************************/ void paint(int znak,int g, int h)

{ int t=0;

kletka = 450/ISIZEFL;

setcolor(1);

if(znak==1)

{ if(ISIZEFL!=45)

{ do

{ line(FIELDSX kletka*(g-1) t,FIELDSY kletka*(h-1),FIELDSX kletka*g,FIELDSY kletka*h-t);

line(FIELDSX kletka*(g-1),FIELDSY kletka*h-t,FIELDSX kletka*g-t,FIELDSY kletka*(h-1));

line(FIELDSX kletka*(g-1),FIELDSY kletka*(h-1) t,FIELDSX kletka*g-t,FIELDSY kletka*h);

line(FIELDSX kletka*(g-1) t,FIELDSY kletka*h,FIELDSX kletka*g,FIELDSY kletka*(h-1) t);

t ;

}while(t!=5);

} else do

{ line(FIELDSX kletka*(g-1) t,FIELDSY kletka*(h-1),FIELDSX kletka*g,FIELDSY kletka*h-t);

line(FIELDSX kletka*(g-1),FIELDSY kletka*h-t,FIELDSX kletka*g-t,FIELDSY kletka*(h-1));

line(FIELDSX kletka*(g-1),FIELDSY kletka*(h-1) t,FIELDSX kletka*g-t,FIELDSY kletka*h);

line(FIELDSX kletka*(g-1) t,FIELDSY kletka*h,FIELDSX kletka*g,FIELDSY kletka*(h-1) t);

t ;

}while(t!=2);

} setcolor(13);

if(znak==0)

{ do

{ circle(FIELDSX (kletka)*(g-0.5),FIELDSY (kletka)*(h-0.5),kletka/2-5 t);

circle(FIELDSX (kletka)*(g-0.5),FIELDSY (kletka)*(h-0.5),kletka/2-5-t);

t ;

}while(t!=5);

} setcolor(9);

}

/****************************************************************************/ void game()

{ cleardevice();

int proverka;

vixod2=1;

do

{ cleardevice();

mouse(2);

oformlenie();

mouse(1);

mov_mouse(3);

for(er=1;er<=3;er )

{ if((x>MENUX)&&(XMENUY widthmenu*(er-1) space*(er-1))&&(y<MENUY widthmenu*er space*(er-1)))break;

} if(er==2)

{ mouse(2);

save(wins_old_nick,win_new_nick);

setcolor(4);

outtextxy(640-FIELDSX 8,FIELDSY 40 100,"You save!");;

delay(2000);

setfillstyle(1,15);

bar(640-FIELDSX w 3,FIELDSY 100,640-FIELDSX w 5 80,200);

mouse(1);

} if(er==3) {return;} if(er==1)

{ for(i=0; i<ISIZEFL; i ) for(j=0; j<ISIZEFL; j )

{

CHARRPIE[i][j]="2";

IARRVES0[i][j]=0;

IARRVESX[i][j]=0;

} delay(200);

mouse(1);

int cikl;

cikl=0;

do

{ for(er=1;er<=3;er )

{ if((x>MENUX)&&(XMENUY widthmenu*(er-1) space*(er-1))&&(y<MENUY widthmenu*er space*(er-1)))break;

} if(er==2)

{ mouse(2);

save(wins_old_nick,win_new_nick);

outtextxy(640-FIELDSX 8,FIELDSY 40 100,"You save!");;

delay(1000);

setfillstyle(1,15);

bar(640-FIELDSX w 3,FIELDSY 100,640-FIELDSX w 5 80,200);

cikl=1;

mouse(1);

} else cikl=0;

if(er==3)

{ cleardevice();

return;

} do

{ mov_mouse(3);

for(i=1;i<=ISIZEFL;i ) if((x>(FIELDSX (i-1)*kletka))&&(x<(FIELDSX i*kletka))) break;

for(j=1;j<=ISIZEFL;j ) if((y>(FIELDSY (j-1)*kletka))&&(y<(FIELDSY j*kletka))) break;

} while((IISIZEFL)||(JISIZEFL));

} while(cikl==1);

if((i!=ISIZEFL 1)&&(j!=ISIZEFL 1))

{

CHARRPIE[i-1][j-1]="1";

znak=1;

mouse(2);

if (znak==1)

{ kletka_cross cr(FIELDSX,FIELDSY);

cr.paint(i,j,ISIZEFL);

}else

{ kletka_nolik kr (FIELDSX,FIELDSY);

kr.paint(i,j,ISIZEFL);

} mouse(1);

} randomize();

u=0;

do

{ proverka_2=1;

do

{ i0=random(ISIZEFL-1);

j0=random(ISIZEFL-1);

if((CHARRPIE[i0][j0]!="0")&&(CHARRPIE[i0][j0]!="1"))break;

} while(proverka_2==1);

CHARRPIE[i0][j0]="0";

znak=0;

mouse(2);

if (znak==1)

{ kletka_cross cr(FIELDSX,FIELDSY);

cr.paint(i0 1,j0 1,ISIZEFL);

}else

{ kletka_nolik kr (FIELDSX,FIELDSY);

kr.paint(i0 1,j0 1,ISIZEFL);

}

//paint(znak,i0 1,j0 1);

mouse(1);

u ;

delay(200);

mouse(1);

cikl=0;

do

{ for(er=1;er<=3;er )

{ if((x>MENUX)&&(XMENUY widthmenu*(er-1) space*(er-1))&&(y<MENUY widthmenu*er space*(er-1)))break;

} if(er==2)

{ mouse(2);

save(wins_old_nick,win_new_nick);

outtextxy(640-FIELDSX 8,FIELDSY 40 100,"You save!");;

delay(1000);

setfillstyle(1,15);

bar(640-FIELDSX w 3,FIELDSY 100,640-FIELDSX w 5 80,200);

mouse(1);

cikl=1;

} else(cikl=0);

if(er==3) {cleardevice();return;vixod2=0;}

} while(cikl==1);

do

{ mov_mouse(3);

for(i=1;i<=ISIZEFL;i ) if((x>(FIELDSX (i-1)*kletka))&&(x<(FIELDSX i*kletka))) break;

for(j=1;j<=ISIZEFL;j ) if((y>(FIELDSY (j-1)*kletka))&&(y<(FIELDSY j*kletka))) break;

} while((IISIZEFL)||(JISIZEFL));

if((i!=ISIZEFL 1)&&(j!=ISIZEFL 1))

{

CHARRPIE[i-1][j-1]="1";

znak=1;

mouse(2);

if (znak==1)

{ kletka_cross cr(FIELDSX,FIELDSY);

cr.paint(i,j,ISIZEFL);

}else

{ kletka_nolik kr (FIELDSX,FIELDSY);

kr.paint(i,j,ISIZEFL);

}

//paint(znak,i,j);

mouse(1);

}

} while(u!=2);

proverka=1;

do

{

EXITFOR=0;

do

{

ALLMAX0=0;ALLMAXX=0;

for(i=0; i<ISIZEFL; i ) for(j=0; j<ISIZEFL; j )

{

IARRVES0[i][j]=0;

IARRVESX[i][j]=0;

} for(i=0; i<ISIZEFL; i )

{ for(j=0; j<ISIZEFL; j )

{ max=0;count=0; MAXX=0;COUNTX=0;

if((EXITFOR==0)&&(CHARRPIE[i][j]=="2")&&((CHARRPIE[i][j-1]=="0")||(CHARRPIE[i][j 1]=="0")))

{ if((CHARRPIE[i][j-1]=="0")&&(j!=0))

{ l=j-1;

do

{ count ;

l-;

} while((CHARRPIE[i][l]=="0"));

} else

{ if(j!=ISIZEFL-1)

{ l=j 1;

do

{ count ;

l ;

} while((CHARRPIE[i][l]=="0"));

}

}

} if((EXITFOR==0)&&(CHARRPIE[i][j]=="2")&&((CHARRPIE[i][j-1]=="1")||(CHARRPIE[i][j 1]=="1")))

{ if((CHARRPIE[i][j-1]=="1")&&(j!=0))

{ l=j-1;

do

{

COUNTX ;

l-;

} while((CHARRPIE[i][l]=="1"));

} else

{ if(j!=ISIZEFL-1)

{ l=j 1;

do

{

COUNTX ;

l ;

} while((CHARRPIE[i][l]=="1"));

}

}

} if(count>max) max=count;

if(COUNTX>MAXX) MAXX=COUNTX;

if(count==4) EXITFOR=1;

count=0;COUNTX=0;

if((EXITFOR==0)&&(CHARRPIE[i][j]=="2")&&((CHARRPIE[i-1][j]=="0")||(CHARRPIE[i 1][j]=="0")))

{ if((CHARRPIE[i-1][j]=="0")&&(i!=0))

{ l=i-1;

do

{ count ;

l-;

} while((CHARRPIE[l][j]=="0"));

} else

{ if(i!=ISIZEFL-1)

{ l=i 1;

do

{ count ;

l ;

} while((CHARRPIE[l][j]=="0"));

}

}

} if((EXITFOR==0)&&(CHARRPIE[i][j]=="2")&&((CHARRPIE[i-1][j]=="1")||(CHARRPIE[i 1][j]=="1")))

{ if((CHARRPIE[i-1][j]=="1")&&(i!=0))

{ l=i-1;

do

{

COUNTX ;

l-;

} while((CHARRPIE[l][j]=="1"));

} else

{ if(i!=ISIZEFL-1)

{ l=i 1;

do

{

COUNTX ;

l ;

} while((CHARRPIE[l][j]=="1"));

}

}

} if(count>max) max=count;

if(COUNTX>MAXX) MAXX=COUNTX;

if(count==4) EXITFOR=1;

count=0;COUNTX=0;

if((EXITFOR==0)&&(CHARRPIE[i][j]=="2")&&((CHARRPIE[i-1][j-1]=="0")||(CHARRPIE[i 1][j 1]=="0")))

{ if((CHARRPIE[i-1][j-1]=="0")&&(j!=0))

{ l=j-1;k=i-1;

do

{ count ;

l-;

k-;

} while((CHARRPIE[k][l]=="0"));

} else

{ if(i!=ISIZEFL-1)

{ l=j 1;k=i 1;

do

{ count ;

l ;

k ;

} while((CHARRPIE[k][l]=="0"));

}

}

} if((EXITFOR==0)&&(CHARRPIE[i][j]=="2")&&((CHARRPIE[i-1][j-1]=="1")||(CHARRPIE[i 1][j 1]=="1")))

{ if((CHARRPIE[i-1][j-1]=="1")&&(j!=0))

{ l=j-1;k=i-1;

do

{

COUNTX ;

l-;

k-;

} while((CHARRPIE[k][l]=="1"));

} else

{ if(i!=ISIZEFL-1)

{ l=j 1;k=i 1;

do

{

COUNTX ;

l ;

k ;

} while((CHARRPIE[k][l]=="1"));

}

}

} if(count>max) max=count;

if(COUNTX>MAXX) MAXX=COUNTX;

if(count==4) EXITFOR=1;

count=0;COUNTX=0;

if((EXITFOR==0)&&(CHARRPIE[i][j]=="2")&&((CHARRPIE[i 1][j-1]=="0")||(CHARRPIE[i-1][j 1]=="0")))

{ if((CHARRPIE[i 1][j-1]=="0")&&(j!=0))

{ l=j-1;k=i 1;

do

{ count ;

k ;

l-;

} while((CHARRPIE[k][l]=="0"));

} else

{ if(j!=ISIZEFL-1)

{ l=j 1;k=i-1;

do

{ count ;

l ;

k-;

} while((CHARRPIE[k][l]=="0"));

}

}

} if((EXITFOR==0)&&(CHARRPIE[i][j]=="2")&&((CHARRPIE[i 1][j-1]=="1")||(CHARRPIE[i-1][j 1]=="1")))

{ if((CHARRPIE[i 1][j-1]=="1")&&(j!=0))

{ l=j-1;k=i 1;

do

{

COUNTX ;

k ;

l-;

} while((CHARRPIE[k][l]=="1"));

} else

{ if(j!=ISIZEFL-1)

{ l=j 1;k=i-1;

do

{

COUNTX ;

l ;

k-;

} while((CHARRPIE[k][l]=="1"));

}

}

} if(count>max) max=count;

if(COUNTX>MAXX) MAXX=COUNTX;

if(count==4) EXITFOR=1;

count=0; COUNTX=0;

IARRVES0[i][j]=max;

if(max>ALLMAX0)ALLMAX0=max;

IARRVESX[i][j]=MAXX;

if(MAXX>ALLMAXX)ALLMAXX=MAXX;

if(EXITFOR==1) break;

} if(EXITFOR==1) break;

}

EXITMARK=1; way=0;

for(i=0; i<ISIZEFL; i )

{ for(j=0; j<ISIZEFL; j ) if((IARRVESX[i][j]==ALLMAXX)&&(ALLMAXX==4)&&(EXITMARK==1)&&(CHARRPIE[i][j]=="2"))

{

CHARRPIE[i][j]="0";

EXITMARK=0;

way=1;

znak=0;

mouse(2);

if (znak==1)

{ kletka_cross cr(FIELDSX,FIELDSY);

cr.paint(i 1,j 1,ISIZEFL);

}else

{ kletka_nolik kr (FIELDSX,FIELDSY);

kr.paint(i 1,j 1,ISIZEFL);

}

//paint(znak,i 1,j 1);

mouse(1);

count0=0;for_break=0;gor=0;vert=0;diag=0;pdiag=0;

for(q=0;q<ISIZEFL;q )

{ for(p=0;p<ISIZEFL;p )

{ if(CHARRPIE[q][p]=="0")

{ count0=0;

l=p 1;

do

{ count0 ;

l ;

} while((CHARRPIE[q][l]=="0"));

if(count0==4)

{ for_break=1;

gor=1;

break;

} count0=0;

l=q 1;

do

{ count0 ;

l ;

} while((CHARRPIE[l][p]=="0"));

if(count0==4)

{ for_break=1;

vert=1;

break;

} count0=0;

l=p 1;k=q 1;

do

{ count0 ;

l ;

k ;

} while((CHARRPIE[k][l]=="0"));

if(count0==4)

{ for_break=1;

diag=1;

break;

} count0=0;

l=p 1;k=q-1;

do

{ count0 ;

l ;

k-;

} while((CHARRPIE[k][l]=="0"));

if(count0==4)

{ for_break=1;

pdiag=1;

break;

}

}

} if(for_break==1)break;

} if(count0==4)

{ mouse(2);

setcolor(4);

d=0;

if(vert==1) do

{ line(FIELDSX kletka*q,FIELDSY kletka*p kletka/2,FIELDSX kletka*q kletka*5,FIELDSY kletka*p kletka/2);

d ;

} while(d!=3);

if(gor==1) do

{ line(FIELDSX kletka/2 kletka*q,FIELDSY kletka*p,FIELDSX kletka/2 kletka*q,FIELDSY kletka*p kletka*5);

d ;

} while(d!=3);

if(diag==1) do

{ line(FIELDSX kletka*q,FIELDSY kletka*p,FIELDSX kletka*q kletka*5,FIELDSY kletka*p kletka*5);

d ;

} while(d!=3);

if(pdiag==1) do

{ line(FIELDSX kletka*(q 1),FIELDSY kletka*p,FIELDSX kletka*(q 1)-kletka*5,FIELDSY kletka*p kletka*5);

d ;

} while(d!=3);

setcolor(9);

mouse(1);

EXITFOR=1;

WINZNAK=0;

}

}

//if(EXITMARK==0)break;

} if(way!=1)

{ for(i=0; i<ISIZEFL; i ) for(j=0; j<ISIZEFL; j ) if((IARRVES0[i][j]==ALLMAX0)&&(EXITMARK==1)&&(CHARRPIE[i][j]=="2"))

{

CHARRPIE[i][j]="0";

EXITMARK=0;

znak=0;

mouse(2);

if (znak==1)

{ kletka_cross cr(FIELDSX,FIELDSY);

cr.paint(i 1,j 1,ISIZEFL);

}else

{ kletka_nolik kr (FIELDSX,FIELDSY);

kr.paint(i 1,j 1,ISIZEFL);

}

//paint(znak,i 1,j 1);

mouse(1);

} count0=0;for_break=0;gor=0;vert=0;diag=0;pdiag=0;

for(q=0;q<ISIZEFL;q )

{ for(p=0;p<ISIZEFL;p )

{ if(CHARRPIE[q][p]=="0")

{ count0=0;

l=p 1;

do

{ count0 ;

l ;

} while((CHARRPIE[q][l]=="0"));

if(count0==4)

{ for_break=1;

gor=1;

break;

} count0=0;

l=q 1;

do

{ count0 ;

l ;

} while((CHARRPIE[l][p]=="0"));

if(count0==4)

{ for_break=1;

vert=1;

break;

} count0=0;

l=p 1;k=q 1;

do

{ count0 ;

l ;

k ;

} while((CHARRPIE[k][l]=="0"));

if(count0==4)

{ for_break=1;

diag=1;

break;

} count0=0;

l=p 1;k=q-1;

do

{ count0 ;

l ;

k-;

} while((CHARRPIE[k][l]=="0"));

if(count0==4)

{ for_break=1;

pdiag=1;

break;

}

}

} if(for_break==1)break;

} if(count0==4)

{ mouse(2);

setcolor(4);

d=0;

if(vert==1) do

{ line(FIELDSX kletka*q,FIELDSY kletka*p kletka/2 d,FIELDSX kletka*q kletka*5,FIELDSY kletka*p kletka/2 d);

line(FIELDSX kletka*q,FIELDSY kletka*p kletka/2-d,FIELDSX kletka*q kletka*5,FIELDSY kletka*p kletka/2-d);

d ;

} while(d!=3);

if(gor==1) do

{ line(FIELDSX kletka/2 kletka*q d,FIELDSY kletka*p,FIELDSX kletka/2 kletka*q d,FIELDSY kletka*p kletka*5);

line(FIELDSX kletka/2 kletka*q-d,FIELDSY kletka*p,FIELDSX kletka/2 kletka*q-d,FIELDSY kletka*p kletka*5);

d ;

} while(d!=3);

if(diag==1) do

{ line(FIELDSX kletka*q,FIELDSY kletka*p d,FIELDSX kletka*q kletka*5,FIELDSY kletka*p kletka*5 d);

line(FIELDSX kletka*q,FIELDSY kletka*p-d,FIELDSX kletka*q kletka*5,FIELDSY kletka*p kletka*5-d);

d ;

} while(d!=3);

if(pdiag==1) do

{ line(FIELDSX kletka*(q 1),FIELDSY kletka*p d,FIELDSX kletka*(q 1)-kletka*5,FIELDSY kletka*p kletka*5 d);

line(FIELDSX kletka*(q 1),FIELDSY kletka*p-d,FIELDSX kletka*(q 1)-kletka*5,FIELDSY kletka*p kletka*5-d);

d ;

} while(d!=3);

setcolor(9);

mouse(1);

EXITFOR=1;

WINZNAK=0;

}

} if(EXITFOR==0)

{ delay(200);

mouse(1);

cikl=0;

do

{ for(er=1;er<=3;er )

{ if((x>MENUX)&&(XMENUY widthmenu*(er-1) space*(er-1))&&(y<MENUY widthmenu*er space*(er-1)))break;

} if(er==2)

{ mouse(2);

save(wins_old_nick,win_new_nick);

outtextxy(640-FIELDSX 8,FIELDSY 40 100,"You save!");;

delay(1000);

setfillstyle(1,15);

bar(640-FIELDSX w 3,FIELDSY 100,640-FIELDSX w 5 80,200);

cikl=1;

mouse(1);

}else(cikl=0);

if(er==3) {cleardevice();return;vixod2=0;}

}while(cikl==1);

do

{ mov_mouse(3);

for(i=1;i<=ISIZEFL;i ) if((x>(FIELDSX (i-1)*kletka))&&(x<(FIELDSX i*kletka))) break;

for(j=1;j<=ISIZEFL;j ) if((y>(FIELDSY (j-1)*kletka))&&(y<(FIELDSY j*kletka))) break;

} while((IISIZEFL)||(JISIZEFL));

if((i!=ISIZEFL 1)&&(j!=ISIZEFL 1))

{

CHARRPIE[i-1][j-1]="1";

znak=1;

mouse(2);

if (znak==1)

{ kletka_cross cr(FIELDSX,FIELDSY);

cr.paint(i,j,ISIZEFL);

}else

{ kletka_nolik kr (FIELDSX,FIELDSY);

kr.paint(i,j,ISIZEFL);

}

//paint(znak,i,j);

mouse(1);

}

COUNTX=0;for_break=0;gor=0;vert=0;diag=0;pdiag=0;

for(q=0;q<ISIZEFL;q )

{ for(p=0;p<ISIZEFL;p )

{ if(CHARRPIE[q][p]=="1")

{

COUNTX=0;

l=p 1;

do

{

COUNTX ;

l ;

} while((CHARRPIE[q][l]=="1"));

if(COUNTX==4)

{ for_break=1;

gor=1;

break;

}

COUNTX=0;

l=q 1;

do

{

COUNTX ;

l ;

} while((CHARRPIE[l][p]=="1"));

if(COUNTX==4)

{ for_break=1;

vert=1;

break;

}

COUNTX=0;

l=p 1;k=q 1;

do

{

COUNTX ;

l ;

k ;

} while((CHARRPIE[k][l]=="1"));

if(COUNTX==4)

{ for_break=1;

diag=1;

break;

}

COUNTX=0;

l=p 1;k=q-1;

do

{

COUNTX ;

l ;

k-;

} while((CHARRPIE[k][l]=="1"));

if(COUNTX==4)

{ for_break=1;

pdiag=1;

break;

}

}

} if(for_break==1)break;

} if(COUNTX==4)

{ mouse(2);

setcolor(4);

d=0;

if(vert==1) do

{ line(FIELDSX kletka*q,FIELDSY kletka*p kletka/2 d,FIELDSX kletka*q kletka*5,FIELDSY kletka*p kletka/2 d);

line(FIELDSX kletka*q,FIELDSY kletka*p kletka/2-d,FIELDSX kletka*q kletka*5,FIELDSY kletka*p kletka/2-d);

d ;

} while(d!=3);

if(gor==1) do

{ line(FIELDSX kletka/2 kletka*q d,FIELDSY kletka*p,FIELDSX kletka/2 kletka*q d,FIELDSY kletka*p kletka*5);

line(FIELDSX kletka/2 kletka*q-d,FIELDSY kletka*p,FIELDSX kletka/2 kletka*q-d,FIELDSY kletka*p kletka*5);

d ;

} while(d!=3);

if(diag==1) do

{ line(FIELDSX kletka*q,FIELDSY kletka*p d,FIELDSX kletka*q kletka*5,FIELDSY kletka*p kletka*5 d);

line(FIELDSX kletka*q,FIELDSY kletka*p-d,FIELDSX kletka*q kletka*5,FIELDSY kletka*p kletka*5-d);

d ;

} while(d!=3);

if(pdiag==1) do

{ line(FIELDSX kletka*(q 1),FIELDSY kletka*p d,FIELDSX kletka*(q 1)-kletka*5,FIELDSY kletka*p kletka*5 d);

line(FIELDSX kletka*(q 1),FIELDSY kletka*p-d,FIELDSX kletka*(q 1)-kletka*5,FIELDSY kletka*p kletka*5-d);

d ;

} while(d!=3);

setcolor(9);

mouse(1);

EXITFOR=1;

WINZNAK=1;

}

}

COUNTTIE=0;

for(w=0;w<ISIZEFL;w ) for(e=0;e<ISIZEFL;e ) if(CHARRPIE[w][e]=="2") COUNTTIE ;

if(COUNTTIE<10)

{

EXITFOR=1;

WINZNAK=3;

}

} while(EXITFOR==0);

if(EXITFOR==1)proverka=0;

if(WINZNAK==1)

{ if(type_of_nick==0)wins_old_nick ;

if(type_of_nick==1)win_new_nick ;

setcolor(4);

outtextxy(640-FIELDSX 15,FIELDSY 40 100,"You win!");

delay(2000);

proverka=0;

} if(WINZNAK==0)

{ win_comp ;

setcolor(4);

outtextxy(640-FIELDSX 10,FIELDSY 40 100,"You lose!");

delay(2000);

proverka=0;

} if(WINZNAK==3)

{ tie ;

setcolor(4);

outtextxy(640-FIELDSX 10,FIELDSY 40 100,"Tie!");

delay(2000);

proverka=0;

}

} while(proverka==1);

}

} while(vixod2==1);

}

/****************************************************************************/ void swap(int s,int d)

{ char bufer;

int t,k;

t = s;

s = d;

d = t;

winer[i] = s;

winer[i 1] = d;

for(k=0; k<10; k )

{ bufer = " ";

} for(k=0; k<10; k )

{ bufer=nick[i][k];

nick[i][k]=nick[i 1][k];

nick[i 1][k]=bufer;

} t=length[i 1];

length[i 1] = length[i] ;

length[i]=t;

}

/*--------------------------------------------------------------------------*/ void record()

{ const int MENUXR=5, MENUYR=30;

const int Longmenur=95;

const int widthmenur=30;

const int spacer=10;

char out[50];

int t,w, step,vixod_3=0;

int x1=450, y1=250, x2=550, y2=350;

int dirx = -1, diry = -1;

int k = 10;

int dt = 10;

int maxx = getmaxx(), maxy = getmaxy();

cleardevice();

delay(100);

while( !kbhit() )

{ delay(dt);

if (x1 = maxx) dirx = -dirx;

if (y1 = maxy) diry = -diry;

setcolor(11);

setfillstyle (1, 9);

bar (x1,y1,x2,y2);

x1 = dirx *k;

x2 = dirx *k;

y1 = diry *k;

y2 = diry *k;

setcolor(5);

settextstyle(0,0,5);

outtextxy(100,200,"RECORD");

setfillstyle (7, 5);

bar (x1,y1,x2,y2);

line (0, 0, maxx, 0);

line (0, 0, 0, maxy);

line (maxx, maxy, 0, maxy);

line (maxx, maxy, maxx, 0);

setcolor(1);

setfillstyle (1, 0);

settextstyle(0,0,1);

outtextxy(220,440,"To continue, press any key");

} cleardevice();

setbkcolor(7);

setfillstyle(1,14);

mouse(2);

bar(MENUXR,MENUYR,MENUXR-15 Longmenur,MENUYR widthmenur);

settextstyle(0,0,1);

setcolor(9);

outtextxy(MENUXR 3,MENUYR widthmenur/2-3,"Exit main");

setcolor(1);

settextstyle(0,0,3);

outtextxy(MENUXR Longmenur 10,MENUYR,"The records of game:");

setfillstyle(7,8);

bar(40,70,100 510,100 380);

setfillstyle(7,9);

bar(50,80,100 500,100 370);

setfillstyle(1,1);

bar(57,87,100 493,100 363);

setfillstyle(1,11);

bar(60,90,100 490,100 360);

mouse(1);

for (i = 0; i < 10; i ) for (j = 0; j < 10; j )

{ nick[i][j]=" ";

winer[i]=0;

} ifstream f("data.txt");

f >> n;

for(i = 0; i<n; i )

{ f >> length[i];

for (j = 0; j < length[i]; j ) f>>nick[i][j];

} for(i = 0; i<n; i )

{ f>> winer[i];

} for (j=0; j<n-1; j ) for (i=0; i<n-j-1; i ) if (winer[i] < winer[i 1]) swap(winer[i],winer[i 1]);

t=0;w=0;step=40;

for(i = 0; i<n; i )

{ if((winer[i]==winer[i 1])&&(i!=n-1))

{ for(j=0; j<10; j )

{ if(int(nick[i][j]) > int(nick[i 1][j]))

{ for(k=0; k<10; k )

{ buf[k] = nick[i 1][k];

nick[i 1][k] = nick[i][k];

nick[i][k] = buf[k];

} length_buf = length[i];

length[i] = length[i 1];

length[i 1] = length_buf;

break;

}

}

} w=0;

for(j = 0; j<length[i]; j )

{ back_buf[1]="\x0";

back_buf[0]=nick[i][j];

setcolor(8);

settextstyle(0,0,2);

outtextxy(100 w,100 t,back_buf);

w =20;

} sprintf(out,"%d",winer[i]);

setcolor(1);

settextstyle(0,0,2);

outtextxy(250,100 t,out);

t =20;

} mouse(1);

do

{ mov_mouse(3);

if( (x>MENUXR)&&(XMENUYR)&&(y< MENUYR widthmenur)) return;

sound(80);

delay(100);

nosound();

} while(vixod_3==0);

}

/****************************************************************************/ void spravka()

{ int vixod_3=0;

int midx,midy;

int r=50;

int x1=450, y1=250, x2=550, y2=350;

int dirx = -1, diry = -1;

int k = 10;

int dt = 10;

int maxx = getmaxx(), maxy = getmaxy();

const int MENUXS=5, MENUYS=30;

const int Longmenus=95;

const int widthmenus=30;

const int spaces=10;

int vixod_2=0;

cleardevice();

delay(100);

while( !kbhit() )

{ delay(dt);

if (x1 = maxx) dirx = -dirx;

if (y1 = maxy) diry = -diry;

setcolor(11);

setfillstyle (1, 9);

bar (x1,y1,x2,y2);

x1 = dirx *k;

x2 = dirx *k;

y1 = diry *k;

y2 = diry *k;

setcolor(5);

settextstyle(0,0,5);

outtextxy(20,200,"ABOUT THIS GAME");

setfillstyle (7, 5);

bar (x1,y1,x2,y2);

line (0, 0, maxx, 0);

line (0, 0, 0, maxy);

line (maxx, maxy, 0, maxy);

line (maxx, maxy, maxx, 0);

setcolor(1);

setfillstyle (1, 0);

settextstyle(0,0,1);

outtextxy(220,440,"To continue, press any key");

} cleardevice();

mouse(2);

setbkcolor(7);

setfillstyle(1,14);

bar(MENUXS,MENUYS,MENUXS Longmenus-15,MENUYS widthmenus);

settextstyle(0,0,1);

setcolor(9);

outtextxy(MENUXS 4,MENUYS widthmenus/2-3,"Exit main");

setfillstyle(7,8);

bar(130,5,640,480);

setfillstyle(7,9);

bar(140,15,630,470);

setfillstyle(1,1);

bar(147,22,623,463);

setfillstyle(1,11);

bar(150,25,620,460);

setcolor(1);

settextstyle(0,0,2);

outtextxy(170,70,"About the game and the rule ");

i=0;

FILE *file;

char* file_name="data1.txt" ;

char load_string[256] ;

file = fopen(file_name,"r");

if(file != 0)

{ do

{ fgets(load_string,256,file);

load_string[sizeof(load_string)-1]=" ";

setcolor(8);

settextstyle(0,0,1);

outtextxy(150,60 i,load_string);

i=i 20;

} while(!feof(file));

} mouse(1);

do

{ mouse(1);

mov_mouse(3);

if((x>MENUXS)&&(XMENUYS)&&(y< MENUYS widthmenus)) return;

} while(vixod_2==0);

}

/****************************************************************************/ void find(int length_new_nick)

{ ifstream f("data.txt");

f >> n;

for(i = 0; i<n; i )

{ f >> length[i];

if(length[i]>max) max=length[i];

for (j = 0; j < length[i]; j ) f>>nick[i][j];

} for(i = 0; i<n; i )

{ f>> winer[i];

} for(i = 0; i<n; i )

{ if(length[i]==length_new_nick) for (j = 0; j < length[i]; j ) if(nick[i][j]==new_nick[j]) count ;

} if (count==length_new_nick)

{ cleardevice();

setbkcolor(7);

setcolor(4);

settextstyle(0,0,2);

outtextxy(160,50,"Please choose other nick.");

settextstyle(0,0,1);

outtextxy(180,70,"Please press enter.");

endcikl=1;

getch();

} else endcikl=0;

}

/*--------------------------------------------------------------------------*/ void enter(int authoriz)

{ do

{

//endcikl=0;

mouse(2);

Finish=0;

u=0;

probel=0;

for(i=0; i< 10; i ) new_nick[i]=" ";

cleardevice();

setbkcolor (7);

setfillstyle (1,14);

n1 = WIDTHKNOB * QUANTILYKNOBWI (QUANTILYKNOBWI-1) * SPACEKNOB;

n2 = LENGTHKNOB * QUANTILYKNOBLE (QUANTILYKNOBLE-1) * SPACEKNOB;

for (j = 0; j < n1; j =SPACEKNOB WIDTHKNOB) for (i = 0; i < n2; i =SPACEKNOB LENGTHKNOB) bar (XKNOB i, YKNOB j, XKNOB LENGTHKNOB i, YKNOB WIDTHKNOB j);

bar (XKNOB, YKNOB SPACEKNOB*4 WIDTHKNOB*4, XKNOB LENGTHKNOB, YKNOB SPACEKNOB*4 WIDTHKNOB*5);

bar (XKNOB SPACEKNOB LENGTHKNOB, YKNOB SPACEKNOB*4 WIDTHKNOB*4, XKNOB SPACEKNOB LENGTHKNOB LENGTHKNOB, YKNOB SPACEKNOB*4 WIDTHKNOB*5);

bar (XKNOB, YKNOB SPACEKNOB*5 WIDTHKNOB*5, XKNOB LENGTHKNOB*2 SPACEKNOB, YKNOB SPACEKNOB*5 WIDTHKNOB*6);

bar (XKNOB 2*SPACEKNOB 2*LENGTHKNOB, YKNOB SPACEKNOB*5 WIDTHKNOB*5, XKNOB LENGTHKNOB*3 2*SPACEKNOB, YKNOB SPACEKNOB*5 WIDTHKNOB*6);

setfillstyle (1,15);

bar (XWIN, YWIN,XWIN LENGTHWIN,YWIN WIDTHWIN);

setcolor(9);

settextstyle(0,0,2);

outtextxy(XKNOB LENGTHKNOB/2-7,YKNOB WIDTHKNOB/2-5,"A");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB LENGTHKNOB-7,YKNOB WIDTHKNOB/2-5,"B");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*2 LENGTHKNOB*2-7,YKNOB WIDTHKNOB/2-5,"C");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*3 LENGTHKNOB*3-7,YKNOB WIDTHKNOB/2-5,"D");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*4 LENGTHKNOB*4-7,YKNOB WIDTHKNOB/2-5,"E");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*5 LENGTHKNOB*5-7,YKNOB WIDTHKNOB/2-5,"F");

outtextxy(XKNOB LENGTHKNOB/2-7,YKNOB SPACEKNOB WIDTHKNOB WIDTHKNOB/2-5,"G");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB LENGTHKNOB-7,YKNOB SPACEKNOB WIDTHKNOB WIDTHKNOB/2-5,"H");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*2 LENGTHKNOB*2-7,YKNOB SPACEKNOB WIDTHKNOB WIDTHKNOB/2-5,"I");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*3 LENGTHKNOB*3-7,YKNOB SPACEKNOB WIDTHKNOB WIDTHKNOB/2-5,"J");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*4 LENGTHKNOB*4-7,YKNOB SPACEKNOB WIDTHKNOB WIDTHKNOB/2-5,"K");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*5 LENGTHKNOB*5-7,YKNOB SPACEKNOB WIDTHKNOB WIDTHKNOB/2-5,"L");

outtextxy(XKNOB LENGTHKNOB/2-7,YKNOB SPACEKNOB*2 WIDTHKNOB*2 WIDTHKNOB/2-5,"M");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB LENGTHKNOB-7,YKNOB SPACEKNOB*2 WIDTHKNOB*2 WIDTHKNOB/2-5,"N");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*2 LENGTHKNOB*2-7,YKNOB SPACEKNOB*2 WIDTHKNOB*2 WIDTHKNOB/2-5,"O");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*3 LENGTHKNOB*3-7,YKNOB SPACEKNOB*2 WIDTHKNOB*2 WIDTHKNOB/2-5,"P");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*4 LENGTHKNOB*4-7,YKNOB SPACEKNOB*2 WIDTHKNOB*2 WIDTHKNOB/2-5,"Q");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*5 LENGTHKNOB*5-7,YKNOB SPACEKNOB*2 WIDTHKNOB*2 WIDTHKNOB/2-5,"R");

outtextxy(XKNOB LENGTHKNOB/2-7,YKNOB SPACEKNOB*3 WIDTHKNOB*3 WIDTHKNOB/2-5,"S");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB LENGTHKNOB-7,YKNOB SPACEKNOB*3 WIDTHKNOB*3 WIDTHKNOB/2-5,"T");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*2 LENGTHKNOB*2-7,YKNOB SPACEKNOB*3 WIDTHKNOB*3 WIDTHKNOB/2-5,"U");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*3 LENGTHKNOB*3-7,YKNOB SPACEKNOB*3 WIDTHKNOB*3 WIDTHKNOB/2-5,"V");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*4 LENGTHKNOB*4-7,YKNOB SPACEKNOB*3 WIDTHKNOB*3 WIDTHKNOB/2-5,"W");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB*5 LENGTHKNOB*5-7,YKNOB SPACEKNOB*3 WIDTHKNOB*3 WIDTHKNOB/2-5,"X");

outtextxy(XKNOB LENGTHKNOB/2-7,YKNOB SPACEKNOB*4 WIDTHKNOB*4 WIDTHKNOB/2-5,"Y");

outtextxy(XKNOB LENGTHKNOB/2 SPACEKNOB LENGTHKNOB-7,YKNOB SPACEKNOB*4 WIDTHKNOB*4 WIDTHKNOB/2-5,"Z");

outtextxy(XKNOB 2*SPACEKNOB 2*LENGTHKNOB LENGTHKNOB/2-28,YKNOB SPACEKNOB*5 WIDTHKNOB*5 WIDTHKNOB/2-5,"Back");

outtextxy(XKNOB LENGTHKNOB/2-7,YKNOB SPACEKNOB*5 WIDTHKNOB*5 WIDTHKNOB/2-5,"Finish");

mouse(1);

resize();

u=0;

do

{ place = 0;

delay(250);

mouse(1);

mov_mouse(3);

for (j = 1; j <= QUANTILYKNOBLE ; j ) if((x (XKNOB LENGTHKNOB*(j-1) SPACEKNOB*(j-1)))) break;

for (i = 1; i <= QUANTILYKNOBWI i; i ) if((y > (YKNOB WIDTHKNOB*(i-1) SPACEKNOB*(i-1)))&&(y < (YKNOB WIDTHKNOB*i SPACEKNOB*(i-1)))) break;

if(((x > XKNOB)&&(XYKNOB SPACEKNOB*5 WIDTHKNOB*5)&&(y<YKNOB SPACEKNOB*5 WIDTHKNOB*6)))

{

Finish=1;

} if(((x>XKNOB 2*SPACEKNOB 2*LENGTHKNOB)&&(XYKNOB SPACEKNOB*5 WIDTHKNOB*5)&&(y<YKNOB SPACEKNOB*5 WIDTHKNOB*6))&&(u!=0))

{ setcolor(15);

u-;

if(authoriz==0) ASCII = int(old_nick[u]);

else ASCII = int(new_nick[u]);

back_buf[0] = char(ASCII);

new_nick[u]=" ";

probel-=16;

outtextxy(XWIN 5 probel,YWIN 3,back_buf);

setcolor(9);

} if(u<10)

{ switch(i)

{ case 1: { switch(j)

{ case 1: { outtextxy(XWIN 5 probel,YWIN 3,"A");

if(authoriz==0) old_nick[u]="A";

else new_nick[u]="A";

u ;

place = 1;

};break;

case 2: { outtextxy(XWIN 5 probel,YWIN 3,"B");

if(authoriz==0) old_nick[u]="B";

else new_nick[u]="B";

u ;

place = 1;

};break;

case 3: { outtextxy(XWIN 5 probel,YWIN 3,"C");

if(authoriz==0) old_nick[u]="C";

else new_nick[u]="C";

u ;

place = 1;

};break;

case 4: { outtextxy(XWIN 5 probel,YWIN 3,"D");

if(authoriz==0) old_nick[u]="D";

else new_nick[u]="D";

u ;

place = 1;

};break;

case 5: { outtextxy(XWIN 5 probel,YWIN 3,"E");

if(authoriz==0) old_nick[u]="E";

else new_nick[u]="E";

u ;

place = 1;

};break;

case 6: { outtextxy(XWIN 5 probel,YWIN 3,"F");

if(authoriz==0) old_nick[u]="F";

else new_nick[u]="F";

u ;

place = 1;

};break;

}

};break;

case 2: { switch(j)

{ case 1: { outtextxy(XWIN 5 probel,YWIN 3,"G");

if(authoriz==0) old_nick[u]="G";

else new_nick[u]="G";

u ;

place = 1;

};break;

case 2: { outtextxy(XWIN 5 probel,YWIN 3,"H");

if(authoriz==0) old_nick[u]="H";

else new_nick[u]="H";

u ;

place = 1;

};break;

case 3: { outtextxy(XWIN 5 probel,YWIN 3,"I");

if(authoriz==0) old_nick[u]="I";

else new_nick[u]="I";

u ;

place = 1;

};break;

case 4: { outtextxy(XWIN 5 probel,YWIN 3,"J");

if(authoriz==0) old_nick[u]="J";

else new_nick[u]="J";

u ;

place = 1;

};break;

case 5: { outtextxy(XWIN 5 probel,YWIN 3,"K");

if(authoriz==0) old_nick[u]="K";

else new_nick[u]="K";

u ;

place = 1;

};break;

case 6: { outtextxy(XWIN 5 probel,YWIN 3,"L");

if(authoriz==0) old_nick[u]="L";

else new_nick[u]="L";

u ;

place = 1;

};break;

}

};break;

case 3: { switch(j)

{ case 1: { outtextxy(XWIN 5 probel,YWIN 3,"M");

if(authoriz==0) old_nick[u]="M";

else new_nick[u]="M";

u ;

place = 1;

};break;

case 2: { outtextxy(XWIN 5 probel,YWIN 3,"N");

if(authoriz==0) old_nick[u]="N";

else new_nick[u]="N";

u ;

place = 1;

};break;

case 3: { outtextxy(XWIN 5 probel,YWIN 3,"O");

if(authoriz==0) old_nick[u]="O";

else new_nick[u]="O";

u ;

place = 1;

};break;

case 4: { outtextxy(XWIN 5 probel,YWIN 3,"P");

if(authoriz==0) old_nick[u]="P";

else new_nick[u]="P";

u ;

place = 1;

};break;

case 5: { outtextxy(XWIN 5 probel,YWIN 3,"Q");

if(authoriz==0) old_nick[u]="Q";

else new_nick[u]="Q";

u ;

place = 1;

};break;

case 6: { outtextxy(XWIN 5 probel,YWIN 3,"R");

if(authoriz==0) old_nick[u]="R";

else new_nick[u]="R";

u ;

place = 1;

};break;

}

};break;

case 4: { switch(j)

{ case 1: { outtextxy(XWIN 5 probel,YWIN 3,"S");

if(authoriz==0) old_nick[u]="S";

else new_nick[u]="S";

u ;

place = 1;

};break;

case 2: { outtextxy(XWIN 5 probel,YWIN 3,"T");

if(authoriz==0) old_nick[u]="T";

else new_nick[u]="T";

u ;

place = 1;

};break;

case 3: { outtextxy(XWIN 5 probel,YWIN 3,"U");

if(authoriz==0) old_nick[u]="U";

else new_nick[u]="U";

u ;

place = 1;

};break;

case 4: { outtextxy(XWIN 5 probel,YWIN 3,"V");

if(authoriz==0) old_nick[u]="V";

else new_nick[u]="V";

u ;

place = 1;

};break;

case 5: { outtextxy(XWIN 5 probel,YWIN 3,"W");

if(authoriz==0) old_nick[u]="W";

else new_nick[u]="W";

u ;

place = 1;

};break;

case 6: { outtextxy(XWIN 5 probel,YWIN 3,"X");

if(authoriz==0) old_nick[u]="X";

else new_nick[u]="X";

u ;

place = 1;

};break;

}

};break;

case 5: { switch(j)

{ case 1: { outtextxy(XWIN 5 probel,YWIN 3,"Y");

if(authoriz==0) old_nick[u]="Y";

else new_nick[u]="Y";

u ;

place = 1;

};break;

case 2: { outtextxy(XWIN 5 probel,YWIN 3,"Z");

if(authoriz==0) old_nick[u]="Z";

else new_nick[u]="Z";

u ;

place = 1;

};break;

}

};break;

} if(place == 1) probel =16;

}

} while(Finish==0);

if(authoriz==1)length_new_nick = u;

else length_old_nick=u;

if(authoriz==1) find(u);

cleardevice();

} while(endcikl==1);

}

/*--------------------------------------------------------------------------*/ void registration()

{ cleardevice();

setbkcolor(7);

settextstyle(0,0,3);

setcolor(1);

outtextxy(160,10,"Authoriezation");

setfillstyle(1,14);

n = WIDTHMENUAU * number (number-1) * SPACEMENUAU;

for ( i = 0; i < n; i =SPACEMENUAU WIDTHMENUAU)

{ mouse(2);

bar(MENUXAU,MENUYAU i,MENUXAU LONGMENUAU, MENUYAU WIDTHMENUAU i);

mouse(1);

} settextstyle(0,0,2);

setcolor(9);

outtextxy(MENUXAU 12,MENUYAU WIDTHMENUAU/2-5,"Enter your nick");

outtextxy(MENUXAU 20,MENUYAU WIDTHMENUAU/2-5 WIDTHMENUAU SPACEMENUAU,"Enter new nick");

resize();

mouse(1);

mov_mouse(3);

sound(100);

delay(3);

sound(50);

nosound();

for (i = 1; i <= number i; i ) if((y > (MENUYAU WIDTHMENUAU*(i-1) SPACEMENUAU*(i-1)))&&(y < (MENUYAU WIDTHMENUAU*i SPACEMENUAU*(i-1)))) break;

if((i==1)&&(x>MENUXAU)&&(x<MENUXAU LONGMENUAU)) {enter(0); type_of_nick=0;} if((i==2)&&(x>MENUXAU)&&(x<MENUXAU LONGMENUAU)) {enter(1); type_of_nick=1;}

}

/****************************************************************************/ void menu()

{ cleardevice();

setbkcolor(7);

setfillstyle(1,14);

n = WIDTHMENUM * COUNTMENUM (COUNTMENUM-1) * SPACEMENUM;

for ( i = 0; i < n; i =SPACEMENUM WIDTHMENUM) bar(MENUXM,MENUYM i,MENUXM LONGMENUM, MENUYM WIDTHMENUM i);

setcolor(9);

settextstyle (0,0,2);

outtextxy(256,75,"Begin");

outtextxy(256,75 (WIDTHMENUM SPACEMENUM),"Record");

outtextxy(256,75 (WIDTHMENUM SPACEMENUM)*2,"About");

outtextxy(256,75 (WIDTHMENUM SPACEMENUM)*3,"Exit");

}

/****************************************************************************/ void privet()

{ cleardevice();

setbkcolor(14);

for(int i=0;i<11;i )

{ setbkcolor(i);

sound(i 50);

delay(50);

sound(i*5);

delay(10);

sound(i*30);

delay(20);

settextstyle(i-1,0,6);

setcolor(i 2);

outtextxy(70,240,"Tic-tac-toe");

if (i==10)

{ cleardevice();

setbkcolor(9);

setcolor(13);

settextstyle(0,0,3);

outtextxy(100,180,"Welcome to the game");

settextstyle(0,0,1);

outtextxy(230,450,"Please,press any key");

delay(100);

} cleardevice;

delay(400);

} nosound();

/* settextstyle(0,0,3);

setbkcolor(9);

setcolor(13);

outtextxy(100,180,"Welcome to the game");

settextstyle(0,0,6);

outtextxy(70,240,"Tic-tac-toe");

settextstyle(0,0,1);

outtextxy(230,450,"Please,press any key"); */ for(i=100;i<1500;i*=4)

{ sound(i);

delay(100);

i*=30;

sound(i);

delay(100);

i/=25;

sound(i);

delay(100);

sound(300);

delay(45);

sound(500);

delay(100);

sound(100);

delay(50);

sound(1500);

delay(40);

sound(350);

delay(80);

} sound(800);

delay(100);

for(i=30;i<2000;i*=10)

{ sound(i);

delay(100);

i =30;

sound(i);

delay(100);

i/=13;

sound(i);

delay(10);

i-=13;

sound(i);

delay(10);

i =100;

sound(i);

delay(50);

i*=6;

sound(i);

delay(100);

sound(1000);

delay(50);

sound(500);

delay(10);

} sound(440);

delay(50);

sound(200);

delay(40);

sound(1500);

delay(30);

sound(10);

sound(5);

nosound();

getch();

}

};

/****************************************************************************/ void main()

{ common tic;

pair ob;

tic.inilization_graph();

cleardevice();

setbkcolor(15);

setcolor(8);

settextstyle(0,0,3);

outtextxy(ob.X,ob.Y,"NATIONAL RESEARCH TOMSK");

ob;

settextstyle(0,0,3);

outtextxy(ob.X,ob.Y,"POLYTECHNIC UNIVERSITY");

settextstyle(0,0,2);

ob ;

outtextxy(ob.X 50,ob.Y,"Institute of Cybernetics");

settextstyle(0,0,1);

ob ;

outtextxy(ob.X 58,ob.Y,"Departament of Information Retrieval System");

settextstyle(0,0,6);

ob ;

outtextxy(ob.X-15,ob.Y 60,"TIC-TAC-TOE");

settextstyle(0,0,1);

ob ;

outtextxy(ob.X 220,ob.Y 150,"Made by student of 8V01:Chshukova C.B.");

settextstyle(0,0,1);

ob ;

outtextxy(ob.X 210,ob.Y 140,"Check by assistant:Pogrebnai T.K.");

settextstyle(0,0,2);

ob ;

outtextxy(ob.X 130,ob.Y 230,"Tomsk, 2011");

delay(10000);

int vixod=0;

tic.privet();

tic.registration();

tic.mouse(1);

do

{ tic.mouse(2);

cleardevice();

tic.menu();

tic. resize();

tic.mouse(1);

delay(200);

tic.mov_mouse(3);

for ( int j = 1; j <= tic.COUNTMENUM ; j ) if( ( tic.y > (tic.MENUYM tic.WIDTHMENUM*(j-1) tic.SPACEMENUM*(j-1)))&&(tic.y tic.MENUXM)&&(tic.x < (tic.MENUXM tic.LONGMENUM)) ) break;

if (j<4)

{ if (j< 2)

{ tic.mouse(2);

tic.chose_fl();

if(tic.just==0)tic.game();

} else if(j>2) tic.spravka();

else tic.record();

} else

{ if(j==4) {return;vixod=1;}

}

}while(vixod==0);

closegraph();

}

Размещено на .ru
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?