Вход

Игра Рэндзю реализованная на языке прграммирования С

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 277464
Дата создания 25 октября 2014
Страниц 31
Мы сможем обработать ваш заказ (!) 28 марта в 13:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
1 050руб.
КУПИТЬ

Описание

Технология программирования.
Курсовая работа.
«Игра Рэндзю».
...

Содержание

1. Цель курсового проекта……….…………………………………………..3

2. Правила игры……………………………………………………………….3

3. Интерфейс………………………………………….……………………….4

4. Текст программы………………….………………………………………..8

5. Инструкция пользователю………………………………………………..31

Введение

1. Цель курсового проекта:

Разработка программы игры Рэндзю, с использованием рекурсивных функций.


2. Правила игры:

1. Процесс игры

Два игрока (Черные и Белые), поочередно помещают камни своего цвета, по одному за ход, на пустые пересечения на игровой доске, которая состоит из 15 вертикальных и 15 горизонтальных линий.

2. Ход

Ходом считают установку камня на одно из пустых пересечений игровой доски.

3. Победа

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

4. Ничья

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

Фрагмент работы для ознакомления

setfillstyle (SOLID_FILL,LIGHTCYAN);
bar (19,101,473,119);
setfillstyle (SOLID_FILL,WHITE);
bar(19,121,473,399);
setcolor (DARKGRAY);
settextstyle (0,HORIZ_DIR,2); //typing writes in the center
outtextxy (249,112,"OPTIONS OF THE GAME");
settextstyle (0,HORIZ_DIR,0);
outtextxy (180,200, "Set level of the computer:");
outtextxy (180,270, "Set color of your stones :");
SMouse
readmouse (x,y,k);
mouseoptions (sel);
do
{
if (kbhit()) //if pressed some button read
{
ch=getch();
if (ch==0)
ch=getch();
switch(ch) //for arrows do action
{
case 72: if (sel==0)
sel=1;
else
sel=0;
break;
case 80: if (sel==1)
sel=0;
else
sel=1;
break;
case 75:
case 77: if (sel==0)
{
if (level==0)
level=1;
else
level=0;
}
else
{
if (color==0)
color=1;
else
color=0;
}
break;
}
mouseoptions (sel); //call mouseoptions to choose action
}
X=x;Y=y;K=k;
readmouse (x,y,k); //choose options with mouse
if ((X!=x)||(Y!=y))
{
if ((x>320)&&(y>190)&&(x<470)&&(y<215))
{
sel=0;
mouseoptions (sel);
}
if ((x>320)&&(y>260)&&(x<470)&&(y<285))
{
sel=1;
mouseoptions (sel);
}
}
if ((K==0)&&(k!=0)) //change level if mouse click
{
if (sel==0)
{
if (level==0)
level=1;
else
level=0;
}
else
{
if (color==0) //change color if mouse click
color=1;
else
color=0;
}
mouseoptions (sel);
}
if ((x>60)&&(x<580)&&(y>60)&&(y<80))
{
keyword=1; //work with main menu if mouseover
}
}
while ((ch!=27) && (ch!=13) && (keyword!=1)); //end of function
} //if pressed Esc Enter or mouse over on menu
void drawboard (int**board) //draw the game board and stones
{ //wrigth color for player and computer
HMouse
int i,j;
for (i=0;i<15;i++)
for (j=0;j<15;j++)
{
switch(board[i][j])
{
case 0: break;
case 1: setcolor(DARKGRAY);
if (color==0)
{
setfillstyle(1,DARKGRAY);
}
else
{
setfillstyle(1,WHITE);
}
fillellipse(119+i*18,130+j*18,4,4);
break;
case -1: setcolor(DARKGRAY);
if (color==1)
{
setfillstyle(1,DARKGRAY);
}
else
{
setfillstyle(1,WHITE);
}
fillellipse(119+i*18,130+j*18,4,4);
break;
}
}
SMouse
}
int**initboard () //initialising board
{ //and give memory for it
int i,j;
int**board;
board=(int**)calloc(15,sizeof(int*));
for (i=0;i<15;i++)
{
board[i]=(int*)calloc(15,sizeof(int));
for (j=0;j<15;j++)
board[15][15]=0;
}
return board;
}
int**copyboard (int**sourse) //function for copyboarding board
{ //especially for oldstep
int**board;
int i,j;
board=initboard ();
for (i=0;i<15;i++)
for (j=0;j<15;j++)
board[i][j]=sourse[i][j];
return board;
}
void freeboard (int**board) //free memory from board blocks
{
int i;
for (i=0;i<15;i++)
free(board[i]);
free(board);
}
int linelen2 (int x1,int x2,int x3,int player) //work with length
{ //of made line
if (x2!=player) //2 stones
return 0;
if ((x1==0)&&(x3==0))
{
return 2;
}
if ((x1==-player)&&(x3==-player))
return 0;
if (((x1==-player) && (x3==0)) || ((x1==0) && (x3==-player)))
return 1;
return 0;
}
int linelen3 (int x1,int x2,int x3,int x4,int player)
{ //work with length
if ((x2!=player) || (x3!=player)) //of made line
return 0; //3 stones
if ((x1==0)&&(x4==0))
{
return 3;
}
if ((x1==-player) && (x4==-player))
return 0;
if (((x1==-player) && (x4==0)) || ((x1==0) && (x4==-player)))
return 2;
return 0;
}
int linelen4 (int x1,int x2,int x3,int x4,int x5,int player)
{ //work with length
if ((x2!=player) || (x3!=player) || (x4!=player)) //of made line
return 0; //4 stones
if ((x1==0)&&(x5==0))
{
return 4;
}
if ((x1==-player)&&(x5==-player))
return 0;
if (((x1==-player) && (x5==0)) || ((x1==0) && (x5==-player)))
return 3;
return 0;
}
int linelen5 (int x1,int x2,int x3,int x4,int x5,int x6,int player)
{
if ((x2!=player) || (x3!=player) || (x4!=player) || (x5!=player))
return 0; //work wit length
if ((x1==player)||(x6==player)) //of made line
return 6; //5 stones
if ((x1==0)&&(x6==0))
{
return 5;
}
if ((x1==-player)&&(x6==-player))
return 0;
if (((x1==-player) && (x6==0)) || ((x1==0)&&(x6==-player)))
return 4;
return 0;
}
int test (int**board,int player) //test board
{ //for maximum length
int i,j; //of line
int lengthx=0,MAX;
int lengthy=0;
int lencross1=0,lencross2=0;
for (i=0;i<13;i++)
for (j=0;j<15;j++)
{
MAX=linelen2(board[i][j],board[i+1][j],board[i+2][j],player);
if (MAX>lengthx) lengthx=MAX; //for 2 stones
} //line gorizontal
for (i=0;i<12;i++)
for (j=0;j<15;j++)
{
MAX=linelen3(board[i][j],board[i+1][j],board[i+2][j],board[i+3][j],player);
if (MAX>lengthx) lengthx=MAX; //for 3 stones
} //line gorizontal
for (i=0;i<11;i++)
for (j=0;j<15;j++)
{
MAX=linelen4(board[i][j],board[i+1][j],board[i+2][j],board[i+3][j],board[i+4][j],player);
if (MAX>lengthx) lengthx=MAX; //for 4 stones
} //line gorizontal
for (i=0;i<10;i++)
for (j=0;j<15;j++)
{
MAX=linelen5(board[i][j],board[i+1][j],board[i+2][j],board[i+3][j],board[i+4][j],board[i+5][j],player);
if (MAX>lengthx) lengthx=MAX; //for 5 stones
} //line gorizontal
for (i=0;i<15;i++)
for (j=0;j<13;j++)
{
MAX=linelen2(board[i][j],board[i][j+1],board[i][j+2],player);
if (MAX>lengthx) lengthx=MAX; //for 2 stones
} //line vertical
for (i=0;i<15;i++)
for (j=0;j<12;j++)
{
MAX=linelen3(board[i][j],board[i][j+1],board[i][j+2],board[i][j+3],player);
if (MAX>lengthy) lengthy=MAX; //for 3 stones
} //line vertical
for (i=0;i<15;i++)
for (j=0;j<11;j++)
{
MAX=linelen4(board[i][j],board[i][j+1],board[i][j+2],board[i][j+3],board[i][j+4],player);
if (MAX>lengthy) lengthy=MAX; //for 4 stones
} //line vertical
for (i=0;i<15;i++)
for (j=0;j<10;j++)
{
MAX=linelen5(board[i][j],board[i][j+1],board[i][j+2],board[i][j+3],board[i][j+4],board[i][j+5],player);
if (MAX>lengthy) lengthy=MAX; //for 5 stones
} //line vertical
for (i=0;i<13;i++)
for (j=0;j<13;j++)
{
MAX=linelen2(board[i][j],board[i+1][j+1],board[i+2][j+2],player);
if (MAX>lencross1) lencross1=MAX; //for 2 stones
} //line aslant
for (i=0;i<12;i++)
for (j=0;j<12;j++)
{
MAX=linelen3(board[i][j],board[i+1][j+1],board[i+2][j+2],board[i+3][j+3],player);
if (MAX>lencross1) lencross1=MAX; //for 3 stones
} //line aslant
for (i=0;i<11;i++)
for (j=0;j<11;j++)
{
MAX=linelen4(board[i][j],board[i+1][j+1],board[i+2][j+2],board[i+3][j+3],board[i+4][j+4],player);
if (MAX>lencross1) lencross1=MAX; //for 4 stones
} //line aslant
for (i=0;i<10;i++)
for (j=0;j<10;j++)
{
MAX=linelen5(board[i][j],board[i+1][j+1],board[i+2][j+2],board[i+3][j+3],board[i+4][j+4],board[i+5][j+5],player);
if (MAX>lencross1) lencross1=MAX; //for 5 stones
} //line aslant
for (i=2;i<15;i++)
for (j=0;j<13;j++)
{
MAX=linelen2(board[i][j],board[i-1][j+1],board[i-2][j+2],player);
if (MAX>lencross1) lencross2=MAX;
}
for (i=3;i<15;i++)
for (j=0;j<12;j++)
{
MAX=linelen3(board[i][j],board[i-1][j+1],board[i-2][j+2],board[i-3][j+3],player);
if (MAX>lencross1) lencross2=MAX;
}
for (i=4;i<15;i++)
for (j=0;j<11;j++)
{
MAX=linelen4(board[i][j],board[i-1][j+1],board[i-2][j+2],board[i-3][j+3],board[i-4][j+4],player);
if (MAX>lencross1) lencross2=MAX;
}
for (i=4;i<15;i++)
for (j=0;j<10;j++)
{
MAX=linelen5(board[i][j],board[i-1][j+1],board[i-2][j+2],board[i-3][j+3],board[i-4][j+4],board[i-5][j+5],player);
if (MAX>lencross1) lencross2=MAX;
}
if ((lengthx>lengthy)&&(lengthx>lencross1)&&(lengthx>lencross2))
{
return lengthx; //returning maximum length
} //of all sides
else
{
if ((lengthy>lencross1)&&(lengthy>lencross2))
{
return lengthy;
}
else
{
if (lencross1>lencross2)
{
return lencross1;
}
else
{
return lencross2;
}
}
}
}
int tstlenCOOL3 (int x1,int x2,int x3,int x4,int x5,int player)
{
if ((x1==-player)&&(x2==player)&&(x3==player)&&(x4==player)&&(x5==-player))
return 1; //test for line 3 stones and
else //2 enemy stones left and right
return 0;
}
int isCOOL3 (int**board,int player)
{
int i,j;
for (i=0;i<11;i++)
for (j=0;j<15;j++)
if (tstlenCOOL3(board[i][j],board[i+1][j],board[i+2][j],board[i+3][j],board[i+4][j],player))
return 1;
for (i=0;i<15;i++)
for (j=0;j<11;j++)
if (tstlenCOOL3(board[i][j],board[i][j+1],board[i][j+2],board[i][j+3],board[i][j+4],player))
return 1;
for (i=0;i<11;i++)
for (j=0;j<11;j++)
if (tstlenCOOL3(board[i][j],board[i+1][j+1],board[i+2][j+2],board[i+3][j+3],board[i+4][j+4],player))
return 1;
for (i=4;i<15;i++)
for (j=0;j<11;j++)
if (tstlenCOOL3(board[i][j],board[i-1][j+1],board[i-2][j+2],board[i-3][j+3],board[i-4][j+4],player))
return 1;
return 0;
}
int tstlenCOOL4 (int x1,int x2,int x3,int x4,int x5,int x6,int player)
{
if ((x1==-player)&&(x2==player)&&(x3==player)&&(x4==player)&&(x5==player)&&x6==-player)
return 1; //test for line 4 stones and
else //2 enemy stones left and right
return 0;
}
int isCOOL4 (int**board,int player)
{
int i,j;
for (i=0;i<11;i++)
for (j=0;j<15;j++)
if (tstlenCOOL4(board[i][j],board[i+1][j],board[i+2][j],board[i+3][j],board[i+4][j],board[i+5][j],player))
return 1;
for (i=0;i<15;i++)
for (j=0;j<11;j++)
if (tstlenCOOL4(board[i][j],board[i][j+1],board[i][j+2],board[i][j+3],board[i][j+4],board[i][j+5],player))
return 1;
for (i=0;i<11;i++)
for (j=0;j<11;j++)
if (tstlenCOOL4(board[i][j],board[i+1][j+1],board[i+2][j+2],board[i+3][j+3],board[i+4][j+4],board[i+5][j+5],player))
return 1;
for (i=4;i<15;i++)
for (j=0;j<11;j++)
if (tstlenCOOL4(board[i][j],board[i-1][j+1],board[i-2][j+2],board[i-3][j+3],board[i-4][j+4],board[i-5][j+5],player))
return 1;
return 0;
}
int tstlenVERYFOOL (int x1,int x2,int x3,int x4,int x5,int player)
{
if ((x1==0)&&(x2==player)&&(x3==player)&&(x4==player)&&(x5==0))
return 1; //test for line 3 stones and
else //no stones left and right
return 0;
}
int isVERYFOOL (int**board,int player)
{
int i,j;
for (i=0;i<11;i++)

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

-
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00471
© Рефератбанк, 2002 - 2024