- •Содержание
- •1.1. Наименование продукта
- •1.2. Краткая характеристика области применения
- •2.1. Документ, на основании которого ведётся разработка
- •2.2. Организация, утвердившая документ
- •Требования к разработке
- •4.1. Требования к функциональным характеристикам
- •4.2. Требования к надёжности
- •4.3. Требования к составу и параметрам технических средств
- •4.4. Требования к информационной и программной совместимости
- •Требования к программной документации
- •Технико-экономические показатели
- •7. Стадии и этапы разработки
- •Введение
- •Постановка задачи
- •Выбор и проработка программных средств
- •Проектирование программы
- •1. Общая схема программы
- •2. Наследование класса kletka_pust
- •3. Переопределение стандартной операции
- •4. Структура класса common
- •5. Подробное описание метода game
- •6. Описание метода privet()
- •7. Описание методов registration() и enter()
- •8. Описание метода menu()
- •9. Описание метода record()
- •10. Описание метода spravka()
- •11. Описание подменю Begin
- •12. Руководство по использованию
- •Анализ результатов разработки программы
- •Заключение
- •Список литературы
- •Листинг программы
Анализ результатов разработки программы
Для тестирования работы программы были использованы различные варианты расположения фишек на различных полях. Программа работает правильно без явных сбоев. В таблице рекордов программа корректно выполняет считывание данных из файла и производит запись или перезапись данных в файл.
Заключение
В ходе написания программы были использованы элементы объектно-ориентированного программирования. Основу программы составили классы. Было использовано переопределение стандартных операций для переменных абстрактных типов, а так же работа с графикой, строками и т.д.
Были применены знания, полученные в процессе изучения курса «Программирование на ЯВУ». При выполнении курсовой была проработана литература по языкам С/С++, объектно-ориентированному программированию. Работать с объектами класса при помощи функций членов намного удобнее, нежели не использовать классы, а применять только стандартный набор типов данных.
Пользователю не придется тратить много времени на освоение правил игры «Крестики-нолики». Простота и наглядность интерфейса делают игру удобной в использовании.
Выполнение курсовой работы помогло закрепить материал и навыки, полученный на лекциях и лабораторных работах, помогло систематизировать знание языка и научится применять их к конкретным задачам.
Список литературы
-
Мирошниченко Е.А. и др. Программирование на языке С++. Часть II. Учебное пособие/ Н.В. Триханова, Е.А. Мирошниченко. – Томск: Изд. ТПУ, 2001. – 118с.
-
Костюк Ю.Л. Основы алгоритмизации: Учебное пособие. / Ю.Л.Костюк. – Томск: Изд. ТГУ, 1996. – 124с.
-
Бондарев В.М. и др. Основы программирования. / В.М.Бондарев, В.И.Рублинецкий, Е.Г.Качко. / Худож.-оформитель С.А.Пяткова. – Харьков: Фолио; Ростов н/Д: Феникс, 1997. – 368с.
-
Вирт Н. Алгоритмы и структуры данных. / Н.Вирт. – М.: Мир, 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();
}