ページ 11

配列について

Posted: 2012年10月21日(日) 14:10
by aic
ブロック崩しを作っていて、プレイヤーの行けない場所を作ろうと思ったのですがうまく出来ません・・・


龍神録の初歩向け?の方でみた↓の所を参考に考えようと思ったのですがどうしてもわかりません。。

コード:

#include "DxLib.h"
 
typedef struct{
        int x,y,img,muki,walking_flag;
}ch_t;
 
int hantei[15][20] = {
        { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
        { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
        { 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
        { 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
        { 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
        { 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
        { 1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1 },
        { 1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1 },
        { 1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1 },
        { 1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,0,0,0,1,1 },
        { 1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1 },
        { 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
        { 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 },
        { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
        { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 },
};
 
int IsAbleToGo(int x,int y,int muki){//進めるかを判定する
        if(muki==0)//上向きなら
                if(hantei[y/32-1][x/32]==1)//進めるか判定
                        return 1;//エラー
        if(muki==1)//左向きなら
                if(hantei[y/32][x/32-1]==1)
                        return 1;
        if(muki==2)//下向きなら
                if(hantei[y/32+1][x/32]==1)
                        return 1;
        if(muki==3)//右向きなら
                if(hantei[y/32][x/32+1]==1)
                        return 1;
        return 0;//正常
}
 
なぜ32で割るのでしょうか?
自分の場合はint[24][33]なのですがどういう考えでこういう結論が出たのでしょうか?

自分的にはif(○○.x>=(値)) flag = ○とは書かず、

上記のような配列の値によって行けない場所を作りたいのです。

ご回答よろしくお願いします。
 

Re: 配列について

Posted: 2012年10月21日(日) 14:19
by softya(ソフト屋)
1つ値=1つのブロックが32x32ドットだからです。
32で割ることでドット単位からブロック単位に変換しているわけです。

【補足】
その代わり32ドット単位でしか指定ができないことになります。

Re: 配列について

Posted: 2012年10月21日(日) 14:40
by aic
なるほど!!

ではint[24][33]であろうとなかろうと

15x15の画像を使えば○/15になるってことですよね?

Re: 配列について

Posted: 2012年10月21日(日) 14:48
by softya(ソフト屋)
aic さんが書きました:なるほど!!

ではint[24][33]であろうとなかろうと

15x15の画像を使えば○/15になるってことですよね?
そういう事になります。
この方法の問題は、ブロック単位でしか位置を調整できないことですのでドット単位で位置の微調整をしたいゲームには向きません。
それを理解した上で使ってください。

Re: 配列について

Posted: 2012年10月21日(日) 15:23
by aic
ありがとうございました!!