1

表に文字を入れた表 (62 x 35) を作成しました。10 x 10 のテーブルの文字を途中から他の文字に置き換えようとしています。

たとえば、次のようなテーブルがある場合: (62 x 35)

##############################################################
##############################################################
##############################################################
##############################################################
##############################################################
##############################################################
##############################################################
##############################################################
##############################################################
##############################################################
############################################################## 
##############################################################
##############################################################
##############################################################
##############################################################
##############################################################
##############################################################
##############################################################

(10x10) を含むファイルを読み込めるようにしたい:

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

このファイルの文字が以前に作成されたテーブルの文字を置き換えるように

つまり、次のようなテーブルがあります

##############################################################
##############################################################
##############################################################
##############################################################
##############################################################
##############################################################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##############################################################
##############################################################
##############################################################
##############################################################
##############################################################

私がやろうとしていることはあまり明確ではないと思うので、詳細が必要な場合は質問してください。

procedure Grid_Pilliers(A: out Grid) is  -- creates grid with pilliers --
begin
   for I in 0..31 loop
      for J in 0..75 loop
         if (I mod 4 = 1 or I mod 4 = 0) and (J mod 4 = 1 or J mod 4 = 0) then
            A(I,J) := true ;
         else
            A(I,J) := false ;
         end if ;
      end loop ;
   end loop ;
end Grid_Pilliers ;


procedure New_Grid_Random_Fill(A : in out New_Grid) is

   type Numero is range 0 .. 1;
   package Grid_Random is new Ada.Numerics.Discrete_Random (Numero);
   use Grid_Random;
   Random_Number : Numero;
   G : Generator;

begin
   Reset (G);
   for I in A'Range(1) loop
      for J in A'Range(2) loop
         Random_Number := Random (G);
         A(I,J) := (Random_Number = 1);
      end loop;
   end loop;
end New_Grid_Random_Fill;
4

1 に答える 1

1

おそらくスライスを使用する必要があります...しかし、この例では、forループのペアを使用します。テーブルタイプ()が...Gridとして定義されていると仮定します。Array (Positive Range <>, Positive Range <>) of Character

procedure copy_into( Working : in out Grid; subimage : in Grid;
                     Offset_X, Offset_Y : Natural ) is
begin
 -- insert checks for subimage lengths [plus offsets]
 -- to be less than Working's lengths.

 for index_x in subimage'Range(1) loop
   for index_y in subimage'Range(2) loop
     Working(index_x+offset_x, index_y+offset_y):= subimage(index_x, index_y);
   end loop;
 end loop;
end copy_into;

オフセットを取得するのは簡単です。

offset_x = big_grid_width + small_grid_width/2。

offset_y =上記ですが、heightを使用します。

于 2012-12-04T18:01:38.183 に答える