Игровая программа "Нарды"

Автор работы: Пользователь скрыл имя, 28 Января 2011 в 12:02, курсовая работа

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

Задачей курсового проектирования ставится разработка игровой программы «Нарды», которая является виртуальным аналогом настольной игры. Перенос реальной игры на виртуальную основу имеет ряд преимуществ:
– позволяет немедленно приступить к игре без каких либо действий по ее подготовке;
– исключает возможность жульничества во время игры;
– исключает возможность случайных нарушений правил игры в связи с их незнанием;
– позволяет сохранять текущие результаты игры и продолжать партию в другое время.

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

Введение 2
1 Общая часть 4
1.1 Постановка задачи 4
1.2 Технико-математическое описание 6
1.3 Программное обеспечение 9
1.4 Состав и параметры технических и программных средств 12
2 Специальная часть 14
2.1 Описание алгоритмов 14
2.2 Описание работы программы 16
2.3 Инструкция по выполнению программы 18
2.4 Тестирование и отладка 22
2.5 Контрольный пример 24
Заключение 28
Список литературы 30
Приложение А. Текст программы 31

Файлы: 1 файл

Пояснительная записка.doc

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

          if (mas[i,1]=player) and (p=false) then  begin

            x:=i+main.bones[j];

            if (mas[x,1]=player) or (mas[x,1]=0) then begin

              p:=true;

              z[j]:=true;

              end;

              end;

      p:=false;

    end;

  case z[1] of

  true: begin

    if z[1]=z[2] then exit else

        for i:= 13 to 24 do

          if (mas[i,1]=player) and  (z[2]=false) then begin

            x:=i+bones[1]+bones[2];

            if x>24 then x:=x-24;

            if (mas[x,1]=player) or (mas[x,1]=0) then z[2]:=true;

            end;

        for i:=1 to 12-bones[1]-bones[2] do

          if (mas[i,1]=player) and  (z[2]=false) then

            if (mas[i+bones[1]+bones[2],1]=player) or (

              mas[i+bones[1]+bones[2],1]=0) then z[2]:=true;

        if z[2]=false then bones[2]:=0;

    end;

  false: begin

    if z[1]=z[2] then begin

      bones[1]:=0;

      bones[2]:=0;

      end else

        for i:= 13 to 24 do

          if (mas[i,1]=player) and  (z[1]=false) then begin

            x:=i+bones[1]+bones[2];

            if x>24 then x:=x-24;

            if (mas[x,1]=player) or (mas[x,1]=0) then z[1]:=true;

            end;

        for i:=1 to 12-bones[1]-bones[2] do

          if (mas[i,1]=player) and  (z[1]=false) then

            if (mas[i+bones[1]+bones[2],1]=player) or (

              mas[i+bones[1]+bones[2],1]=0) then z[1]:=true;

        if z[1]=false then bones[1]:=0;

   end;

  end; 

  if s2=15 then begin

    if mas[z1+6,2]>=1 then bones[1]:=z1;

    if mas[z2+6,2]>=1 then bones[2]:=z2;

     end; end else doublebones(sender);

  end; end;

end; 

procedure bonesclick(Sender: TObject);

var i,j:integer;

begin

  if (player=1) and (mas[25,2]=15) then begin

    messagedlg('Игра закончена! Белые победили!',mtinformation,[mbok],0);

    exit;

    end ;

   if (player=2) and (mas[26,2]=15) then begin

        messagedlg('Игра закончена! Черные победили!',mtinformation,[mbok],0);

        exit;

        end;

  if (main.bones[1]=0) and (main.bones[2]=0) and (main.bones[3]=0) and

    (main.bones[4]=0) then begin

      status:=2;

      if player=1 then begin

        player:=2;

        messagedlg('Ходят черные',mtinformation,[mbok],0);

        end else begin

          player:=1;

          messagedlg('Ходят белые',mtinformation,[mbok],0);

          end; 
 

  with form1 do begin

  randomize;

  z1:=random(6)+1;

  case z1 of

  1: leftbone.Picture:=b1.Picture;

  …

  6: leftbone.Picture:=b6.Picture;

  end;

  z2:=random(6)+1;

  case z2 of

  1: rightbone.Picture:=b1.Picture;

  …

  6: rightbone.Picture:=b6.Picture;

  end; 

  golova:=0;

  status:=1;

  if z1<>z2 then begin

  bones[1]:=z1;

  bones[2]:=z2;

  bones[3]:=0;

  bones[4]:=0;

  end else begin

  bones[1]:=z1;

  bones[2]:=z1;

  bones[3]:=z2;

  bones[4]:=z2;

  end;

  if (player=1) and (bones[3]<>0) and (mas[1,2]=15) then wf:=1;

  if (player=2) and (bones[3]<>0) and (mas[13,2]=15) then blf:=1;

  ablemove(sender);

  varbones(sender);

  if (bones[1]=0) and (main.bones[2]=0) and (bones[3]=0) and (bones[4]=0) then  begin

    messagedlg('Вы не можете походиться!',mtinformation,[mbok],0);

    end; 

  end;

  for i:=1 to 26 do

    for j:=1 to 2 do mas2[i,j]:=mas[i,j];

  for i:=1 to 4 do bones2[i]:=bones[i];

  end else messagedlg('Ход не завершен!',mtinformation,[mbok],0) 

end; 
 
 

procedure move(Sender: TObject; number1:integer);

var i,k:integer;

begin

  if (nomer=1) and (mas[nomer,1]=1) then golova:=2;

  if (nomer=1) and (mas[nomer,1]=1) and (wf=1) then begin

    golova:=1;

    wf:=0;

  end;

  if (nomer=13) and (mas[nomer,1]=2) then golova:=2;

   if (nomer=13) and (mas[nomer,1]=2) and (blf=1) then begin

    golova:=1;

    blf:=0;

  end;

  mas[nomer,2]:=mas[nomer,2]-1;

  mas[number1,1]:=player;

  mas[number1,2]:=mas[number1,2]+1;

  if mas[nomer,2]=0 then mas[nomer,1]:=0;

  draw.visible(sender);

  draw.redraw(sender);

  k:=number1-nomer;

  if k<1 then k:=k+24;

  i:=0;

  repeat

    i:=i+1;

    if main.bones[i]=k then begin

      main.bones[i]:=0;

      k:=0;

    end;

  until k=0;

  varbones(sender);

end; 
 

procedure movehouse(Sender: TObject; number2,zar:integer);

begin

  main.bones[zar]:=0;

  mas[number2,2]:=mas[number2,2]+1;

  mas[nomer,2]:=mas[nomer,2]-1;

  if mas[nomer,2]=0 then mas[nomer,1]:=0;

  draw.visible(sender);

  draw.redraw(sender);

  varbones(sender);

  if (player=1) and (mas[25,2]=15) then begin

    messagedlg('Игра закончена! Белые победили!',mtinformation,[mbok],0);

    exit;

    end ;

   if (player=2) and (mas[26,2]=15) then begin

        messagedlg('Игра закончена! Черные победили!',mtinformation,[mbok],0);

        exit;

        end;

end; 

end. 

Модуль  DRAW содержит процедуры отображения игрового процесса 

uses main; 

procedure visible(Sender: TObject);

begin

    with form1 do  begin

    m1.Visible:=false;

    …

    m24.Visible:=false;

    wdomclick.Visible:=false;

    bldomclick.Visible:=false;

    end;

end; 

procedure arrow(Sender: TObject; number:integer);

begin

    with form1 do

    case number of

    1: begin

        m1.Visible:=true;

        if mas[1,2]=0 then begin

            m1.Left:=n1.Left;

            m1.Top:=n1.Top;

            end else begin

            m1.Left:=n1.Left;

            m1.Top:=n1.Top-20;

            end;

        end;

    …

    26: begin

        bldomclick.Visible:=true;

        if mas[26,2]=0 then begin

            bldomclick.Left:=bldom.Left;

            bldomclick.Top:=bldom.Top;

            end else begin

            bldomclick.Left:=bldom.Left;

            bldomclick.Top:=bldom.Top-20;

            end;

        end;

    end;

end; 

procedure redraw(sender: TObject);

var i:integer;

pic:tpicture;

begin

    with form1 do

    for i:=1 to 26 do begin

    if mas[i,1]=0 then

    case i of

    1: n1.Visible:=false; 

     …

    26: bldom.Visible:=false;

    end else begin

    case i of

    1: n1.Visible:=true;

    …

    26: bldom.Visible:=true;

    end;

    if mas[i,1]=1 then

    case mas[i,2] of

    0: pic:=picpusto.Picture;

    …

    15: pic:=w15.Picture;

    end;

    if mas[i,1]=2 then

    case mas[i,2] of

    0: pic:=picpusto.Picture;

     …

    15: pic:=bl15.Picture;

    end;

    case i of

    1: n1.Picture:=pic;

    …

    26: bldom.Picture:=pic;

    end;

    end;

    end;

end; 

procedure varbones(sender: Tobject);

var pic:tpicture;

i:integer;

begin

    with form1 do

    for i:=1 to 4 do begin

    case bones[i] of

Информация о работе Игровая программа "Нарды"