Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
готовый отчет курсовая 2011.doc
Скачиваний:
6
Добавлен:
05.12.2018
Размер:
1.18 Mб
Скачать

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

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

Заключение

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

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

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

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

Список литературы

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

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

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

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

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

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

#include <iostream.h>

#include <fstream.h>

#include <graphics.h>

#include <conio.h>

#include <stdlib.h>

#include <stdio.h>

#include <dos.h>

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\n", 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 < (Yupravlemie+probel_upravleni*(q-1)+widthKnoBypr*q))&&(x>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<<'\n';

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<<'\n';

}

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

{

fl<< winer[i];

if(i!=n-1)fl<<'\n';

}

}

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<<'\n';

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<<'\n';

}

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

{

fl<< winer[i];

fl<<'\n';

}

}

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)&&(x<menuX+Longmenu)&&(y>menuY+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)&&(x<menuX+Longmenu)&&(y>menuY+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((i<1)||(i>iSizeFl)||(j<1)||(j>iSizeFl));

}

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)&&(x<menuX+Longmenu)&&(y>menuY+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((i<1)||(i>iSizeFl)||(j<1)||(j>iSizeFl));

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)&&(x<menuX+Longmenu)&&(y>menuY+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((i<1)||(i>iSizeFl)||(j<1)||(j>iSizeFl));

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 <= 0 || x2 >= maxx) dirx = -dirx;

if (y1 <= 0 || y2 >= 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)&&(x<menuXr+Longmenur)&&(y>menuYr)&&(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 <= 0 || x2 >= maxx) dirx = -dirx;

if (y1 <= 0 || y2 >= 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)&&(x<menuXs+Longmenus)&&(y>menuYs)&&(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+spaceKnob*(j-1)))&&(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)&&(x<xKnob+lengthKnob*2+spaceKnob))&&((y>yKnob+spaceKnob*5+widthKnob*5)&&(y<yKnob +spaceKnob*5+widthKnob*6)))

{

Finish=1;

}

if(((x>xKnob+2*spaceKnob+2*lengthKnob)&&(x<xKnob+lengthKnob*3+2*spaceKnob))&&((y>yKnob+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.MenuYm+tic.WidthMenum*j+tic.SpaceMenum*(j-1))) &&(tic.x > 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();

}

92