на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Игровая программа "15"
p align="left">bar(35,285,605,335);

bar(35,355,605,405);

{Рисование эллипса под надписью ***MENU***}

fillellipse(298,57,210,35);

{Надписи на экране об авторе прграммы}

setcolor(12);

settextstyle(1,0,1);

outtextxy(20,430,'Copyright Software 1998');

outtextxy(20,450,'Written by Volkov

Konstantin');

{Надпись ***MENU*** печатается серым цветом,

тем самым создается эффект тени}

setcolor(8);

settextstyle(1,0,6);

outtextxy(142,33,'*** MENU ***');

{Печать надписи ***MENU*** синим цветом}

setcolor(10);

outtextxy(140,30,'*** MENU ***');

setbkcolor(9); {Цвет фона экрана}

repeat

setfillstyle(1,5); {Орнамент и цвет

заполнения полоски-указателя}

{Полоска,передвигающаяся по пунктам меню}

bar(35,145+70*ym,605,195+70*ym);

{Печать пунктов меню}

outtextxy(50,135,'Game');

outtextxy(50,205,'Best players');

outtextxy(50,275,'About this game');

outtextxy(50,345,'Exit');

om:=readkey;

{При переходе указателя на другой пункт,

возврашение пункту меню прежнего цвета}

setfillstyle(1,1);

bar(35,145+70*ym,605,195+70*ym);

{Изменение координат указателя, в

зависимости от нажатия пользователем

однойиз клавиш управления}

if om=up then ym:=ym-1;

if om=down then ym:=ym+1;

if ym=-1 then ym:=3;

if ym=4 then ym:=0;

setcolor(10); {Цвет пунктов меню}

{Создание звукового эффекта при перемещении

по пунктам меню}

sound(300);

for i:=-maxint to maxint do

j:=j;

nosound;

until om=Enter ;

end;(*menu*)

(* Процедура начала игры *)

procedure game;

begin(*game*)

cleardevice; {Очистка экрана}

steps:=0;{Число шагов 0}

{Рисование области, на фоне которой будет

выводится кол-во шагов}

setfillstyle(1,3);

bar(10,90,130,155);

setfillstyle(1,7);

bar(30,120,80,145);

{Обведение области темными линиями}

setlinestyle(0,0,1);

setcolor(1);

rectangle(10,90,130,155);

rectangle(29,119,81,146);

setlinestyle(0,0,1);

{Печать надписи и кол-ва шагов,

пока число шагов просто 0}

setcolor(4);

settextstyle(0,0,1);

outtextxy(20,100,'Number steps ');

outtextxy(40,130,'0');

setcolor(13);

vict:=false; {Победа не инициализирована}

setfillstyle(1,14); {Параметры заполнения

кубика}

bar3d(152,86,509,445,10,true);{Рисование

коробки}

{Создание в верхней части экрана полоски и

надписи на ней}

bar(0,0,639,50);

settextstyle(7,0,5);

outtextxy(125,2,'* 15 *');

{Создание в нижней части экрана полоски и

надписи на ней}

bar(0,450,639,480);

settextstyle(7,0,3);

outtextxy(80,450,'Press Esc for quit to

main menu');

{Задание прежних параметров}

settextstyle(7,0,5);

setfillstyle(1,11);

{Включение генератора случайных чисел}

randomize;

{Заполнение массива случайными числами

от 1 до 15}

mas[16]:=0;

mas[1]:=random(14)+1;

n:=2;

repeat

u:=true;

while u do

begin{Раскладывание пятнашек}

j:=random(15)+1;

u:=false;

for i:=1 to n-1 do

{Проверка элементов массива на

равенство друг другу}

if mas[i]=j then u:=true;

end;{Раскладывание пятнашек}

mas[n]:=j;

n:=n+1;

until n=16;{Условие выхода заполнение всего

массива}

{Рисование фишек игрового поля (табличек)}

for j:=0 to 3 do

for i:=0 to 3 do

kv(i,j);

{Рисование фона на котором расположена

коробка}

setbkcolor(7);

{Разкраска коробки}

setfillstyle(1,8);

floodfill(157,90,13);

setfillstyle(1,3);

floodfill(168,82,13);

floodfill(513,90,13);

setfillstyle(1,11);

{Нумерация табличек}

n:=1;

for j:=0 to 3 do

for i:=0 to 3 do

if (i<>3) or (j<>3) then

begin

nomer(i,j,n);

n:=n+1;

end;

x1:=3;

y1:=3;

x:=3;

y:=3;

{Рисование таблички в нижнем правом

углу,пока не сделанно ни одного хода}

setcolor(1);

setfillstyle(1,11);

bar3d(418,358,493,433,7,true);

repeat

kl:=readkey;

tabl(x,y,kl,x,y); {Cмены активной

таблички}

{Проверка условия нажатия клавиши пробел}

if kl=Space then

begin(*if1*)

u:=(abs(x1-x)=1) and (abs(y1-y)=0) or

(abs(x-x1)=0) and (abs(y1-y)=1);

{Условие перестановки элементов

массива}

if u then

begin(*if2*)

{Элементы массива, которые меняются

местами}

i:=4*y+x+1;

i1:=4*y1+x1+1;

setcolor(11);

nomer(x,y,i);

setcolor(13);

nomer(x1,y1,i);

n:=mas[i1]; {Перестановка элементов

массива}

mas[i1]:=mas[i];

mas[i]:=n;

x1:=x;

y1:=y;

steps:=steps+1; {Увеличение числа

шагов на единицу}

{Вывод на экран числа шагов}

setfillstyle(1,7);

bar(30,120,80,145);{Рисование табл.}

setcolor(4);

str(steps,st1);

settextstyle(0,0,1);

outtextxy(40,130,st1);

setcolor(13);

settextstyle(7,0,5);

setfillstyle(1,11);

{Проверка следования чисел в массиве}

u:=true;

j:=0;

n:=0;

repeat

j:=j+1;

n:=n+1;

if (n<>mas[j]) and (n<>12)

then u:=false;

if (n=11) and (mas[12]=0)

then j:=j+1;

until mas[j]=15;

if u and ((mas[15]=15) or

(mas[16]=15))

then

begin(*if3*)

pl:=Esc;{Выход из цикла}

vict:=true;{Инициализация победы}

end;(*if3*)

end;(*if2*)

end;(*if1*)

{Игрок нажал клавишу Esc}

if kl=Esc

then

begin (*if*)

{Помещение странички в буфер

посредством разбиения

ее на 4 части}

m:=imagesize(0,0,320,240);

getmem(p,m);

getimage(0,0,320,240,p^);

m1:=imagesize(320,0,639,240);

getmem(p1,m1);

getimage(320,0,639,240,p1^);

m2:=imagesize(0,240,320,480);

getmem(p2,m2);

getimage(0,240,320,480,p2^);

m3:=imagesize(320,240,639,480);

getmem(p3,m3);

getimage(320,240,639,480,p3^);

{Вывод меню, после того как игрок

нажал Esc}

cleardevice;

setbkcolor(0);

b3:=0;

repeat

{Рисование двойной рамочки}

setcolor(1);

setlinestyle(0,0,1);

rectangle(243,183,417,257);

rectangle(248,188,412,252);

setfillstyle(1,14);{Орнамент и

цвет заполнения указателя}

{Указатель-выбор пункта}

bar(250,190+30*b3,410,220+30*b3);

setcolor(13);

settextstyle(8,0,1);

outtextxy(275,195,'Continue . .

.');

outtextxy(275,220,'Exit ');

b2:=readkey;

setfillstyle(1,0);

bar(250,190+30*b3,410,220+30*b3);

{Движение по пунктам меню}

if b2=up then b3:=0;

if b2=down then b3:=1;

if b3=0

then kl:='z'{Выбран пункт

Continue}

else kl:=Esc{Выбран пункт Exit}

until b2=Enter;

end; (*if*)

{Если выбран пункт Continue,то

страничка возвращается из буфера,а

затем буфер очищается}

if kl='z'

then

begin

cleardevice;

setbkcolor(7);

putimage(0,0,p^,normalput);

freemem(p,m);

putimage(320,0,p1^,normalput);

freemem(p1,m1);

putimage(0,240,p2^,normalput);

freemem(p2,m2);

putimage(320,240,p3^,normalput);

freemem(p3,m3);

settextstyle(7,0,5);

setfillstyle(1,11)

end

until (kl=Esc) or (pl=Esc) ;

{Демонстрация победы после завершения игры}

if vict then

begin(*vict*)

cleardevice;{Очистка экрана}

victory;{Процедура победы}

{Вывод на экран числа шагов,сделанных

пользователем, и поздравления}

setcolor(4);

settextstyle(7,0,5);

outtextxy(100,50,'You are win ! ! !');

str(steps,step);

outtextxy(100,100,'You made');

outtextxy(150,150,step);

outtextxy(250,150,'steps.');

repeat

until keypressed;

kl:=readkey;

i:=0;

{Сравнение результатов}

repeat

i:=i+1;

val(stroka[i*2],b,x);

until (b>steps) or (i=6);

{Если результат игрока превосходит один из

результатов в таблице,он заносится в

таблицу}

if i<6 then

begin(*Переформирование таблицы

рекордов*)

for j:=5 downto i do

begin(*Сдвиг рекордов*)

stroka[j*2+1]:=stroka[j*2-1];

stroka[j*2+2]:=stroka[j*2];

end;(*Сдвиг рекордов*)

{Преглашение игрока к вводу имени}

cleardevice;

setbkcolor(0);

outtextxy(10,130,'Please, enter your

name :');

{Создание рамочки}

setcolor(10);

rectangle(100,225,525,290);

rectangle(98,223,527,292);

{Ввод имени игрока}

kl:=readkey;

j:=1;

stroka[i*2-1]:='';

u:=not(kl=enter);

while u do

begin(*Чтение имени игрока*)

u:=(kl>' ') and (kl<'z') and (j<11);

if u

then

begin(*нц*)

stroka[i*2-1]:=stroka[i*2-1]+kl;

outtextxy(80+j*40,230,kl);{Печать

буквы на новой позиции}

j:=j+1;

end;(*кц*)

kl:=readkey;

u:=not(kl=Enter);

end;(*Чтение имени игрока*)

Страницы: 1, 2, 3, 4



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.