Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [pascal --> delphi] морской бой


Автор: Blondy 19.2.2008, 18:18
 Моя курсовая работа - создание игры "морской бой".Надо сдавать в Делфи. Мы в школе делали это, только на паскале и уже есть код

Код

uses
    crt,graph;
const
     n=10;
     h=14;
     x1=50;
     y1=50;
     x2=50;
     y2=300;
type
    Mass=array[0..n+1,0..n+1]of integer;
var
   M1,M2:mass;
   dr,dv,hod,i,c,d,kol1,kol2,x0,y0:integer;
   ch:char;
   procedure OutDesk(M:Mass;y0,x0,h:integer);
   var
      i,j,color:integer;
   begin
     setcolor(9);
     for i:=1 to n+1 do
     begin
          line (x0, y0+(i-1)*h,x0+n*h,y0+(i-1)*h);
          line (x0+(i-1)*h,y0,x0+(i-1)*h,y0+n*h);
     end;
     for i:=1 to n do
         for j:=1 to n do
         begin
              case m[i,j] of
                   0:color:=0;
                   1:color:=1;
                   5:color:=2;
                   6:color:=4;
              end;
              setfillstyle (1,color);
              floodfill(x0+(h*j-(h div 2)),y0+(h*i-(h div 2)),9);
         end;
     end;
    function Chek(M:mass;x,y:integer):boolean;
      var
         s,i,j:integer;
         begin
              s:=0;
              for i:=x-1 to x+1 do
                  for j:=y-1 to y+1 do
                      s:=s+M[i,j];
              if s>0 then chek:=false else chek:=true;
         end;
      procedure NewGame(var M:Mass;hod:integer);
      var
         x,y,count:integer;
      begin
           for i:=1 to n do
           begin
             M[0,i]:=0;
             M[n+1,i]:=0;
             M[i,0]:=0;
             M[i,i-1]:=0;
           end;
           count:=0;
           while (count<4) do
           begin
                 x:=random(n)+1;
                 y:=random(n)+1;
                 if chek(M,x,y)=true then
                 begin
                      M[x,y]:=5;
                      count:=count+1;
                 end;
           end;
      end;
      procedure Poisk(var M:mass;var c,d,kol:integer);
      begin
           c:=random(n)+1;
           d:=random(n)+1;
           if (M[c,d]=5)or(M[c,d]=6) then
           begin
              if M[c,d]=5 then
                 kol:=kol+1;
              M[c,d]:=6;
           end
           else M[c,d]:=1;
      end;
   begin
        clrscr;
        hod:=1;
        randomize;
        dr:=detect;
        initgraph(dr,dv,'e:\TP71\Bgi');
        NewGame(M1,hod);
        Outdesk(M1,x1,y1,h);
        NewGame(M2,hod);
        OutDesk(M2,x2,y2,h);
        delay(10000);
        kol1:=0;
        kol2:=0;
        ch:=readkey;
        repeat
              poisk (m1,c,d,kol1);
              outdesk (m1,x1,y1,h);
              poisk(m2,c,d,kol2);
              hod:=2;
              setcolor(white);
              outtextxy(90,20,'1 player');
              outtextxy(340,20,'2 player');
              outdesk (m2,x2,y2,h);
        until (kol1>3) or (kol2>3) or keypressed;
        setcolor(4);
        if kol1>3 then outtextxy(50,240,'1 player are win!!!')else
        outtextxy(30,240,'2 player are win!!!');
        readkey;
        closegraph;
        readln;
   end.


Пожалуйста помогите!

Если ктонибудь знает, как написать эту игру лучше, может с интерфейсом, то принимаю предложения, тогда в аське спишемся и договоримся обо всем поподробнее

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)