Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kursovoy / пояснительная записка.docx
Скачиваний:
17
Добавлен:
03.03.2016
Размер:
405.5 Кб
Скачать

3.3. Код программы

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

#include<graphics.h>

#include<conio.h>

#include<dos.h>

void main()

{

int gdriver = DETECT, gmode, errorcode,i;

initgraph(&gdriver, &gmode, "c:\\borlandc\\bgi");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s\n", grapherrormsg(errorcode));

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

getch();

exit(1);

}

{

int i,bv,q;

bv=0;

float y,xn=470,xk=170,x,prov,pr;

int cc,ce,buffer;

x=xn;

e:

setbkcolor(bv);

do

{

buffer = kbhit();

if (buffer)

goto w;

prov=x/10;

pr=int(prov);

if(prov==pr){cc=rand()%16;

while(cc==4) cc=rand()%16;

ce=rand()%16;

while(ce==cc) ce=rand()%16;}

cleardevice();

y=240+sqrt(22500-(x-320)*(x-320));

setcolor(ce);

rectangle(x-45,y-50,x+45,y+50);

setfillstyle(1,ce);

floodfill(x,y,ce);

setcolor(cc);

circle(x,y,40);

setfillstyle(1,cc);

floodfill(x,y,cc);

delay(25);

x-=2;

}while(x>xk);

x=xk;

do

{

buffer = kbhit();

if (buffer)

goto w;

prov=x/10;

pr=int(prov);

if(prov==pr){cc=rand()%16;

while(cc==4) cc=rand()%16;

ce=rand()%16;

while(ce==cc) ce=rand()%16;}

cleardevice();

y=240-sqrt(22500-(x-320)*(x-320));

setcolor(ce);

rectangle(x-45,y-50,x+45,y+50);

setfillstyle(1,ce);

floodfill(x,y,ce);

setcolor(cc);

circle(x,y,40);

setfillstyle(1,cc);

floodfill(x,y,cc);

delay(25);

x+=2;

}

while(x<xn);

w:

q=getch();

switch(q)

{

case 49: if (bv > 0) bv-=1; goto e;

case 50: if (bv < 15) bv+=1; goto e;

case 27: goto t;

default: goto w;

}

t:

setbkcolor(0);

getch();

}

3.4. Запуск программы

Рисунок 3.2 –Начало движения фигур.

Рисунок 3.3 – Движение фигур, изменения цвета заднего фона.

4.Создание игры

Условие: Создать игру «Подбери ключ». Перед играющим 4 закрытые двери и 4 ключа. Каждый из которых может открыть несколько дверей. Открыть все двери 8 попытками.

4.1 АЛГОРИТМ РЕШЕНИЯ ЗАДАЧИ

Решение организовано следующим образом: выполняется начальная заливка фона, далее в цикле прорисовываются двери и ключи(в виде прямоугольников).Задается возможности ключей открывать двери(матрица исходов где строки ключи а столбцы двери).Задается выбор ключей и дверей путем смены цвета; и непосредственно открывание дверей. В конце выводится результат игры.

Упрощенная блок схема выглядит так:

Рис.4.1-Блок-схема

Начало

Заливка фона

Рисование дверей и ключ.

Задание матриц. исходов.

Выбор ключ.,дверей

Открытие дверей

Результат игры

Конец

4.2 Код програмы

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

#include<graphics.h>

#include<conio.h>

#include<dos.h>

void game()

{

int gdriver = DETECT, gmode, errorcode,i;

initgraph(&gdriver, &gmode, "c:\\borlandc\\bgi");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s\n", grapherrormsg(errorcode));

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

getch();

exit(1);

}

{

clrscr();

cleardevice();

int t,i,j,x1=10,y1=10,x2=140,y2=300,fk=-1,fd=-1,key[4][4],x[4],y[4],h=8,win=0;

setfillstyle ( 1, 4 );

setcolor(15);

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

{

setfillstyle (1,4);

bar(x1+i*160,y1,x2+i*160,y2);

setfillstyle (1,2);

bar(110+i*160,160,130+i*160,170);

rectangle (110+i*160,160,130+i*160,170);

rectangle (x1+i*160,y1,x2+i*160,y2);

bar(10+i*30,450,30+i*30,470);

}

//////////////////////////////////////////////////////////////

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

{

for(j=0;j<4;j++)

key[i][j]=0;

}

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

{

x[i]=rand()%4;

y[i]=rand()%4;

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

if(y[j]==y[i])i--;

}

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

key[x[i]][y[i]]=1;

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

{

printf("\n");

for(j=0;j<4;j++)

printf("%d ",key[i][j]);

}

//////////////////////////////////////////////////////////////

while (h>0)

{

j=0;

while(j!=13)

{

j=getch();

switch(j)

{

case 51: goto e;

case 50:fk++;if(fk>3)fk=0;break;

case 49:fk--;if(fk<0)fk=3;break;

}

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

{

if(i==fk)setfillstyle (1,1);

else setfillstyle (1,2);

bar(10+i*30,450,30+i*30,470);

}

}

j=0;

while(j!=13)

{

j=getch();

switch(j)

{

case 27: goto e;

case 50:fd++;if(fd>3)fd=0;break;

case 49:fd--;if(fd<0)fd=3;break;

}

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

{

if(i==fd)setcolor (1);

else setcolor (15);

rectangle (x1+i*160,y1,x2+i*160,y2);

}

}

if(key[fk][fd]==1){setfillstyle(1,0);bar(x1+fd*160,y1,x2+fd*160,y2);win++;}

if(win==4)

{

clrscr();

cleardevice();

printf("you win");

getch();

game();

}

h--;

}

clrscr();

cleardevice();

printf("you lost");

game();

e:

getch();}

void main()

{

game();

getch();

}

Соседние файлы в папке kursovoy