Игра "Крестики-нолики"

Разработка игры "Крестики-нолики" с применением объектно-ориентированного программирования. Выполнение стратегии ходов компьютера, работа с файлами. Переопределение стандартных операций для абстрактных типов данных. Проработка программных средств.

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

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

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

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();

}

ПРИЛОЖЕНИЕ 2

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

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

Интеллектуальная логическая игра «Крестики-нолики».

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

Игра «Крестики-нолики» позволяет пользователю выбрать поле 9х9, 15х15, 45х45, играть против компьютера и ходить крестиками во время игры. Данная игра предназначена для тренировки логического мышления пользователя.

ОСНОВАНИЕ ДЛЯ РАЗРАБОТКИ

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

Задание на курсовую работу по дисциплине «Программирование на языке высокого уровня».

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

Национальный Исследовательский Томский политехнический университет.

НАЗНАЧЕНИЕ РАЗРАБОТКИ

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

ТРЕБОВАНИЯ К РАЗРАБОТКЕ

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

Программа должна содержать окно и экранную клавиатуру для регистрации пользователя. Экранная клавиатура должна состоять из кнопок латинского алфавита, а также кнопки «back», которая необходима в случае неверного набора ника или символа ника. Программа должна предоставить возможность пользователю нажать кнопку «Finish» по окончанию ввода ника.

Программа должна содержать главное меню, состоящее из четырех разделов «Begin», «Record», «About», «Exit», и каждый раздел меню должен иметь подменю. Первые три раздела должны содержать кнопку «Exit» для возврата в главное меню.

Программа должна иметь простой графический интерфейс.

Программа должна предоставить возможность осуществление управлением игрой с помощью манипулятора - мышь.

Программа должна предоставить возможность пользователю при его заходе в раздел «Begin», выбрать одно из трех возможных полей: 9 x 9, 15 x 15, 45 x 45.

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

Программа должна предоставить возможность пользователю в ходе игрового процесса в случае выигрыша или проигрыша видеть в левом верхнем углу сообщение о победе или неудаче: «You win!» или «You lose!»

Программа должна содержать в игровом поле три кнопки «Start», «Save», «Exit». Первая кнопка должна позволить пользователю начать игру, вторая - сохранить своё текущее количество побед, а третья - выйти в главное меню.

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

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

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

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

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

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

Программа должна отслеживать существование файлов «data1.txt» и «data.txt» при их открытии, в противном случае выдать ошибку.

Программа при сохранении в файл «data.txt» должна проверить существование файла с таким же именем, при наличии такого файла предложить перезапись уже существующего файла.

Программа должна корректно отображать данные в английской кодировке.

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

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

Для функционирования игры «Крестики-нолики» необходим компьютер IBM PC совместимый и следующие технические средства:

· процессор Intel 80286 или совместимый;

· объем свободной оперативной памяти 700 Кб;

· объем необходимой памяти на жестком диске 600 Кб;

· стандартный VGA-монитор или совместимый;

· стандартная клавиатура;

· манипулятор «мышь»;

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

Для функционирования текстового редактора необходимо наличие операционной системы MS-DOS или совместимой. Язык интерфейса - английский.

ТРЕБОВАНИЯ К ПРОГРАММНОЙ ДОКУМЕНТАЦИИ

Предварительный состав программной документации:

· «Техническое задание», текст программы с комментариями, описание алгоритма и программы.

· «Руководство пользователя».

ТЕХНИКО-ЭКОНОМИЧЕСКИЕ ПОКАЗАТЕЛИ

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

СТАДИИ И ЭТАПЫ РАЗРАБОТКИ

ТЗ - техническое задание, ПЗ - пояснительная записка.

Содержание этапа или стадия

Срок

Форма отчетности

начало

конец

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

09. 09.2011

19. 09.2011

ТЗ

Составление технического задания

20.09. 2011

25.09. 2011

ПЗ

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

01. 10.2011

10. 10.2011

ПЗ

Составление программы

15.10. 2011

23. 11. 2011

ПЗ

Тестирование программы

24.11. 2011

01. 12. 2011

ПЗ

Оформление пояснительной записки

05. 12.2011

12.12.2011

ПЗ

Размещено на Allbest.ur

...

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

  • Разработка программы логической игры в "крестики-нолики" пять в ряд на поле размера 15х15 клеток с применением графики на языке Pascal с использованием объектно-ориентированного программирования. Структура алгоритма программы и описание ее работы.

    курсовая работа [821,5 K], добавлен 13.02.2012

  • Разработка популярной развлекательной игры крестики-нолики. Возможность играть с компьютером, который играет согласно созданному алгоритму. Новые возможности Visual Studio. Легкое усвоение программы. Удобный интерфейс - "визитная карточка" приложения.

    курсовая работа [74,6 K], добавлен 20.12.2009

  • Разработка алгоритма, выполняющего поиск наилучшего решения на каждый ход в игре "крестики-нолики" (используя минимальный алгоритм). Обоснование выбора программных средств для решения задачи. Блок-схема интеллектуального алгоритма реализации программы.

    контрольная работа [380,0 K], добавлен 28.04.2014

  • Проект программы "Крестики-нолики". Блок-схема алгоритма. Описание работы программного продукта. Инструкция по инсталляции. Инструкция программисту, возможность доработки с целью упрощения исполняемых кодов. Инструкция по проверке и тестированию.

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

  • Знакомство с интерфейсом пользователя и сценарием использования программы игры в крестики и нолики. Функциональные и нефункциональные требования для персонального компьютера. Исключительные ситуации и реакция программы. Пример кода игры и комментарии.

    курсовая работа [236,5 K], добавлен 27.01.2014

  • Общая характеристика языков программирования. Краткий обзор C, C++, Java, PHP, Python, Delphi и Visual Basic. Процесс разработки программы игра "Крестики и нолики" с помощью AppWizard. Компиляция и компоновка модулей, определение интерфейса приложения.

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

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

    курсовая работа [34,6 K], добавлен 19.05.2014

  • Разработка аналога игры "Крестики-нолики", где игроки выбирают размер поля. Правила игры. Интерфейс программы. Главная функция main. Класс XO. Метод вывода поля и хода игроков. Методы поиска крестиков, ноликов. Методы проверки выигрышных ситуаций игроков.

    курсовая работа [281,5 K], добавлен 30.01.2018

  • Разработка программы игры в крестики-нолики. Примеры игровой ситуации на игровом поле. Описание входных и выходных данных, переменных и функций программы. Реализация алгоритма работы программы на языке C++. Текст программы и примеры ее выполнения.

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

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

    курсовая работа [371,5 K], добавлен 21.02.2012

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

    методичка [819,6 K], добавлен 12.05.2013

  • Технические и пользовательские характеристики игры, требования к программному обеспечению и среде разработки C#. Составление блок-схемы алгоритма, uml-диаграммы и текста программы, тестирование корректности компьютерного кода и результатов его работы.

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

  • Архитектура и тестирование программного комплекса. Описание реализованного протокола данных. Обработка входящих подключений. Работа пользовательского потока и потока отправки. Выбор языка программирования. Структура серверного и клиентского приложений.

    курсовая работа [999,1 K], добавлен 20.12.2012

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

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

  • Средства выделения и освобождения памяти. Динамические структуры данных. Связные линейные списки и их машинное представление. Структура одно- и двухсвязного списка. Реализация операций над связными линейными списками. Разработка программы на языке С++.

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

  • Составление программы искусственного интеллекта в среде программирования Delphi 7, осуществляющую игру "крестики-нолики" с пользователем. Данная программа имеет возможность запоминания ходов и на основе них ходить так, чтобы не оказаться в проигрыше.

    контрольная работа [787,7 K], добавлен 16.01.2011

  • Проектирование интеллектуальной логической игры "Галочки-нолики". Описание составляющих программы. Объявление переменных, Command1 по Command18. Основные кнопки, проектирование и проверка работы таймеров. Руководство по использованию, тестирование.

    контрольная работа [444,2 K], добавлен 17.04.2015

  • Использование объектно-ориентированного программирования - хорошее решение при разработке крупных программных проектов. Объект и класс как основа объектно-ориентированного языка. Понятие объектно-ориентированных языков. Языки и программное окружение.

    контрольная работа [60,1 K], добавлен 17.01.2011

  • Причины возникновения объектно-ориентированного программирования. Графическое представление классов; их отличия от других абстрактных типов данных. Типы абстракции, используемые при построении объекта. Сущность инкапсуляции, наследования и полиморфизма.

    контрольная работа [222,1 K], добавлен 04.06.2014

  • Разработка объектно-ориентированной модели животного, которая объясняется построением модели игры Terrarium. Модель построена на базе концепций объектно-ориентированного программирования. Разработка компонента, моделирующего поведение животного.

    курсовая работа [23,2 K], добавлен 30.11.2008

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