Создание игровой программы "Pacman"

Автор работы: Пользователь скрыл имя, 09 Февраля 2011 в 09:12, курсовая работа

Описание работы

В данной работе изложен материал по разработке программного продукта «Игровая программа “Pacman”», созданного для использования в операционных системах MS DOS, семейства MS Windows 9x, MS Windows XP. Данное приложение является игровым и предназначено для развлечения.

Содержание работы

Введение………………………………………………………3 стр.

1.Анализ предметной области………………………………4-5 стр.
2.Проектирование……………………………………………6-8 стр.
3.Реализация………………………………………………….9-12 стр.
Заключение……………………………………………………13 стр.

Список используемой литературы…………………….......14 стр.

Глоссарий……………………………………………………..15 стр.

Приложение……………………………………………….......16-24 стр.

Файлы: 1 файл

создание игровой программы pacman.doc

— 64.79 Кб (Скачать файл)

                    end else begin

                    ec3^.nxt:=ec2;

                    ec3:=ec2;

                    end;

                end;

            end; 

            for i:=3 downto 2 do begin

            cleardevice;

            pieslice(20,20,5*i,360-5*i,10);

            rectangle(19,14,20,15);

            size:=imagesize(7,7,33,33); 

                if j=1 then begin

                new(p2);

                getmem(p2^.im,size);

                getimage(7,7,33,33,p2^.im);

                p3^.nxt:=p2;

                p3:=p2;

                end else begin

                new(ec2);

                getmem(ec2^.im,size);

                getimage(7,7,33,33,ec2^.im);

                ec3^.nxt:=ec2;

                ec3:=ec2;

                end;

            end;

        p2^.nxt:=p;

        ec2^.nxt:=ec;

        end; 

    cleardevice;

    setcolor(4);

    rectangle(20,20,100,21);

    size:=imagesize(20,20,100,21);

        new(barre);

        getmem(barre,size);

        getimage(20,20,100,21,barre^); 

    cleardevice;

    setcolor(4);

    line(20,10,30,30);

    line(20,10,10,30);

    line(10,30,30,30); 

    line(16,20,20,20);

    line(20,20,18,25);

    line(18,25,16,20); 

    line(20,20,24,20);

    line(24,20,22,25);

    line(22,25,20,20); 

    setfillstyle(1,4);

    floodfill(20,15,4);

    floodfill(20,27,4); 

    setcolor(0);

    line(17,27,23,27); 

    size:=imagesize(7,7,33,33);

    new(fantome);

    getmem(fantome,size);

    getimage(7,7,33,33,fantome^); 

    setfillstyle(1,10);

    floodfill(20,28,0);

    size:=imagesize(7,7,33,33);

    new(vdt);

    getmem(vdt,size);

    getimage(7,7,33,33,vdt^); 

    setfillstyle(1,5);

    floodfill(20,28,0);

    size:=imagesize(7,7,33,33);

    new(repos);

    getmem(repos,size);

    getimage(7,7,33,33,repos^); 

    cleardevice;

    setcolor(14);

    rectangle(9,9,10,10);

    size:=imagesize(9,9,10,10);

    new(fromage);

    getmem(fromage,size);

    getimage(9,9,10,10,fromage^); 
     

    niveau:=0;

    points:=0;

    vies:=3;

    son:=true;

    b:=400;

        repeat

    cleardevice;

        for i:=1 to 19 do

            for j:=1 to 13 do

            putimage(i*28+36,j*28+45,fromage^,normalput); 

    setcolor(1);

    {bordure}

    rectangle(50,60,582,424);

    rectangle(49,59,583,425); 

    {motifs}

    rectangle(78,88,161,144);

    rectangle(471,88,554,144);

    rectangle(78,340,161,396);

    rectangle(471,340,554,396); 

    rectangle(189,60,218,144);

    rectangle(414,60,443,144);

    rectangle(189,340,218,424);

    rectangle(414,340,443,424); 

    rectangle(246,88,386,144);

    rectangle(246,340,386,396); 

    rectangle(50,172,161,228);

    rectangle(471,172,582,228);

    rectangle(50,256,161,312);

    rectangle(471,256,582,312); 

    rectangle(189,172,443,312);

    rectangle(190,173,442,311); 

    {Anti-fromages}

    setfillstyle(1,0);

    floodfill(300,200,1); 

    {passage secret}

    setcolor(0);

    rectangle(582,229,583,255);

    rectangle(49,229,50,255);

    rectangle(304,172,330,173); 

    {Remplissage}

    setfillstyle(1,1);

    floodfill(80,90,1);

    floodfill(80,350,1);

    floodfill(500,350,1);

    floodfill(500,90,1); 

    floodfill(200,90,1);

    floodfill(420,90,1);

    floodfill(200,400,1);

    floodfill(420,400,1); 

    floodfill(250,100,1);

    floodfill(250,350,1); 

    floodfill(100,200,1);

    floodfill(500,200,1);

    floodfill(100,300,1);

    floodfill(500,300,1); 

    {camemberts}

    setfillstyle(1,2);

    setcolor(2);

    circle(65,75,5);

    floodfill(65,75,2);

    circle(65,409,5);

    floodfill(67,409,2);

    circle(566,75,5);

    floodfill(566,75,2);

    circle(566,409,5);

    floodfill(566,409,2); 

    setcolor(3);

    outtextxy(50,40,'lifes:');

    outtextxy(156,40,'points:           Energy:                Level:'); 

    outtextxy(290,435,'Infos:I');

    setcolor(0);

    str(niveau,s);

    outtextxy(540,40,s);

    niveau:=niveau+1;

    setcolor(3);

    str(niveau,s);

    outtextxy(540,40,s);

    str(vies,s);

    outtextxy(105,40,s); 

    f1:=true;

    f2:=true;

    f3:=true;

    f4:=true;

    repas:=0;

        for j:=1 to 16 do

        stock[j]:=0;

    1:

    p2:=p;

    ec2:=ec; 

    temps:=0;

    perdu:=false; 

    new(pf);

    pf^.fa:=304;

    pf^.fo:=174;

    pf^.rf:=4;

    pf^.delais:=0; 

    new(pf2);

    pf2^.fa:=304;

    pf2^.fo:=210;

    pf2^.rf:=8;

    pf2^.delais:=0; 

    pf^.nxt:=pf2; 

    new(pf3);

    pf3^.fa:=304;

    pf3^.fo:=240;

    pf3^.rf:=8;

    pf3^.delais:=0; 

    pf2^.nxt:=pf3;

    pf2:=pf3; 

    new(pf3);

    pf3^.fa:=304;

    pf3^.fo:=275;

    pf3^.rf:=8;

    pf3^.delais:=0;

    pf3^.nxt:=nil; 

    pf2^.nxt:=pf3; 

    x:=303;

    y:=313;

    r:='5';

    i:=1;

    b:=b-20;

    c:=b+30;

    bonus:=false; 

        repeat

        i:=i+1; 

    if keypressed then r:=upcase(readkey); 
     

    if r='S' then son:=(son=false);

    if r='P' then repeat until keypressed;

    if r='I' then infos; 

            if i mod 4000=0 then if temps=0 then p2:=p2^.nxt else ec2:=ec2^.nxt;

            if i mod b=0 then begin

                if r='6' then if (getpixel(x+27,y)<>1)and(getpixel(x+27,y+26)<>1) then val(r,d,err);

                if r='4' then if (getpixel(x-1,y)<>1)and(getpixel(x-1,y+26)<>1) then val(r,d,err);

                if r='2' then if (getpixel(x,y+27)<>1)and(getpixel(x+26,y+27)<>1)and((x<>304)or(y<>145)) then val(r,d,err);

                if r='8' then if (getpixel(x,y-1)<>1)and(getpixel(x+26,y-1)<>1) then val(r,d,err);

                if r='5' then d:=0; 

                if d=6 then if (getpixel(x+27,y)<>1)and(getpixel(x+27,y+26)<>1) then x:=x+1 else d:=0;

                if d=4 then if (getpixel(x-1,y)<>1)and(getpixel(x-1,y+26)<>1) then x:=x-1  else d:=0;

                if d=2 then if (getpixel(x,y+27)<>1)and(getpixel(x+26,y+27)<>1) then y:=y+1 else d:=0;

                if d=8 then if (getpixel(x,y-1)<>1)and(getpixel(x+26,y-1)<>1) then y:=y-1 else d:=0; 

                if ((d=6)and((getpixel(x+27,y+12)=14)or(getpixel(x+27,y+14)=14))

                or((d=4)and((getpixel(x-1,y+12)=14)) or(getpixel(x-1,y+14)=14))

                or((d=2)and((getpixel(x+12,y+27)=14))or(getpixel(x+14,y+27)=14))

                or((d=8)and(getpixel(x+12,y-1)=14)or(getpixel(x+14,y-1)=14))) then begin

                setcolor(0);

                str(points,s);

                outtextxy(220,40,s);

                points:=points+10;

                if points mod 4000=0 then bonus:=true;

                repas:=repas+1;

                setcolor(3);

                str(points,s);

                outtextxy(220,40,s);

                end; 

                if temps>0 then begin

                putimage(x,y,ec2^.im,normalput);

                temps:=temps-1;

                putimage(360+trunc(80*temps/(60*(10-niveau div 2))),20,blank^,normalput);

                end else

                putimage(x,y,p2^.im,normalput); 

                if (x=51)and(y=61)and(f1=true) then begin

                f1:=false;

                temps:=60*(10-niveau div 2);

                putimage(360,43,barre^,normalput);

                end;

                if (x=555)and(y=61)and(f2=true) then begin

                f2:=false;

                temps:=60*(10-niveau div 2);

                putimage(360,43,barre^,normalput);

                end;

                if (x=51)and(y=397)and(f3=true) then begin

                f3:=false;

                temps:=60*(10-niveau div 2);

                putimage(360,43,barre^,normalput);

                end;

                if (x=555)and(y=397)and(f4=true) then begin

                f4:=false;

Информация о работе Создание игровой программы "Pacman"