イラストロジックサンプルプログラムの使い方


これは何?

 イラストロジックのファイルを読む関数、 イラストを表示する関数と、 サンプルのデータです。


使い方

 Illust.tar.gzをダウンロードして、解凍してください。 GNU tarとgzipがあれば、

    tar xvzf Illust.tar.gz
で解凍できます。 makeでコンパイルします。

 以下のファイルが含まれています。


利用可能な定数, 変数, 関数

 利用可能な定数, 変数, 関数は、 ヘッダファイルIllust.hに書かれています。

定数

画像の値
名前 説明
CellUnknown 0 未確定
CellBlack 1
CellWhite -128

データ型

 画像の値、縦横の黒が連続している数として、 データ型Cellを定義している。 8bit符号付整数で、-128〜127の値を取る。

変数

 下記の変数が使用できる。 変数の値はLoad()関数で設定される。

変数名 説明
hsize int 画像の横幅
vsize int 画像の高さ
image Cell ** 画像そのもの
hsum Cell ** 水平方向に黒が連続してならんでいる数のリスト
vsum Cell ** 垂直方向に黒が連続してならんでいる数のリスト

 画像imageはポインタへのポインタとして宣言されているが、 使う時には2次元配列と考えれば良い。 座標(x, y)の値は image[y][x]となる。 添字がy, xの順になっているので注意すること。 左上がimage[0][0]となる。 値は定数CellUnknown, CellBlack, CellWhiteのいずれかを用いる。

 水平方向に黒が連続してならんでいる数のリストhsumも 2次元配列と考えれば良い。 第y列目で、 黒が連続してならんでいる第n番目のブロックの長さが hsum[y][n]となる。 yn0から始まるので注意すること。 これ以上黒のブロックが存在しない時は hsum[y][n]0となる。 横一列が真っ白の時には、 hsum[y][0]0となる。 hsum[y][n]が負の値である場合には、 画像表示関数Show()は絶対値に*マークを付加する。 確定したブロックに印を付けたい時に利用できる。

 垂直方向に黒が連続してならんでいる数のリストvsumも 2次元配列と考えれば良い。 第x行目で、 黒が連続してならんでいる第n番目のブロックの長さが vsum[x][n]となる。 xn0から始まるので注意すること。 これ以上黒のブロックが存在しない時は vsum[x][n]0となる。 縦一列が真っ白の時には、 vsum[y][0]0となる。 vsum[y][n]が負の値である場合には、 画像表示関数Show()は絶対値に*マークを付加する。 確定したブロックに印を付けたい時に利用できる。

利用可能な関数

 以下の関数が使用できる。


自分で作成する部分

 Illust1.cに、 ファイルを読み込んで、画像を表示するところまでが書いてある。 イラストロジックを解く部分を作成する。


イラストロジックデータの書き方

サンプル

#
# hsize
5
# vsize
5
#
# 1: ##### : 5
# 2:  # #  : 1 1
# 3: ###   : 3
# 4:  #    : 1
# 5:       :
#    14121
#    1 1
#
# hsum
5
1 1
3
1

# vsum
1 1
4
1 1
2
1
#

ダウンロード

 アーカカイバの種類が違うだけで、どちらも中身は同じです。


(作成: 2003年4月17日, 最終更新: 2003年6月6日)