配列について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
aic

配列について

#1

投稿記事 by aic » 13年前

ブロック崩しを作っていて、プレイヤーの行けない場所を作ろうと思ったのですがうまく出来ません・・・


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

コード:

#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 = ○とは書かず、

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 配列について

#2

投稿記事 by softya(ソフト屋) » 13年前

1つ値=1つのブロックが32x32ドットだからです。
32で割ることでドット単位からブロック単位に変換しているわけです。

【補足】
その代わり32ドット単位でしか指定ができないことになります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

aic

Re: 配列について

#3

投稿記事 by aic » 13年前

なるほど!!

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 配列について

#4

投稿記事 by softya(ソフト屋) » 13年前

aic さんが書きました:なるほど!!

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

15x15の画像を使えば○/15になるってことですよね?
そういう事になります。
この方法の問題は、ブロック単位でしか位置を調整できないことですのでドット単位で位置の微調整をしたいゲームには向きません。
それを理解した上で使ってください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

aic

Re: 配列について

#5

投稿記事 by aic » 13年前

ありがとうございました!!

閉鎖

“C言語何でも質問掲示板” へ戻る