行けない場所の判定

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

行けない場所の判定

#1

投稿記事 by 無限 » 10年前

いきなりですが、行けない所の判定を教えてください。お願いします
一次元でやっても出来ません。
エラーは、一応出ていませんがビルドに反映されていません。
解決方法を教えてください
このようなやつ→int hantei[20] = { 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1 };・・・

アバター
Hiragi(GKUTH)
記事: 167
登録日時: 14年前
住所: 大阪府
連絡を取る:

Re: 行けない場所の判定

#2

投稿記事 by Hiragi(GKUTH) » 10年前

とりあえずフォーラムルールを見ましょう。
最低限ソースコードを公開しないと回答できません。
そもそも一次元的なマップなど殆ど無いので通常は2次元配列を使うべきだと思うのですが...
だいがくせい!

無限

Re: 行けない場所の判定

#3

投稿記事 by 無限 » 10年前

すいません・・・初めてだったので以後、気をつけます。
ブロック崩しゲームを作ろうとしていたのですが、
その前に色々習得しようと思ったのです。
それで今、行けない所の判定をしていて、プログラムがこれです↓

コード:

#include "DxLib.h"

int Key[256]; // キーが押されているフレーム数を格納する

// キーの入力状態を更新する
int gpUpdateKey(){
        char tmpKey[256]; // 現在のキーの入力状態を格納する
        GetHitKeyStateAll( tmpKey ); // 全てのキーの入力状態を得る
        for( int i=0; i<256; i++ ){ 
                if( tmpKey[i] != 0 ){ // i番のキーコードに対応するキーが押されていたら
                        Key[i]++;     // 加算
                } else {              // 押されていなければ
                        Key[i] = 0;   // 0にする
                }
        }
        return 0;
}
int hantei[20] = { 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1 };

int IsAbleToGo(int x,int y,int muki){
	if(muki==1)
		if(hantei[x/32+1]==1)
			return 1;
	if(muki==3)
		if(hantei[x/32-1]==1)
			return 1;
	return 0;
}
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定

		int a;
		a=0;

		int Col = GetColor( 255, 255, 255 );//白のコード取得

        // while(裏画面を表画面に反映, メッセージ処理, 画面クリア, キー更新)
        while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && gpUpdateKey()==0 ){

			DrawFormatString(a,230,Col,"aiueo");    
			if(Key[KEY_INPUT_RIGHT]){a=a+6;}
			if(Key[KEY_INPUT_LEFT]){a=a-6;}
	}

	DxLib_End(); // DXライブラリ終了処理
	return 0;
} 
文字を代わりに行けない場所の判定をしていました。
エラーは出ていないのですが、なぜビルド開始して起動はするのに、反映されてないのか
解らなくて困ってます。
どうしたら、反映するのか知りたいです。
今は、文字の出し方、画像の出し方、動かし方程度なら覚えました。
何か変な文だと思いますがすいません・・・

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 行けない場所の判定

#4

投稿記事 by みけCAT » 10年前

無限 さんが書きました:エラーは出ていないのですが、なぜビルド開始して起動はするのに、反映されてないのか
解らなくて困ってます。
せっかくIsAbleToGo関数があるのに、どこからも呼び出されていないので反映されてないようですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

無限

Re: 行けない場所の判定

#5

投稿記事 by 無限 » 10年前

みけCAT>申し訳ありません・・・
つまり、何をつけたせば良いのでしょうか?
お手数ですがお願いします・・・

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

Re: 行けない場所の判定

#6

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

無限 さんが書きました:みけCAT>申し訳ありません・・・
つまり、何をつけたせば良いのでしょうか?
お手数ですがお願いします・・・
それを勉強しているのではないですか? 自分で考えるべき部分を飛ばすと意味無いですよ。
ここに至るまでの途中過程を飛ばしたので訳がわかないのでは無いですか。
内容もゲームプログラミングの館の部分引用な気がしますが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 行けない場所の判定

#7

投稿記事 by みけCAT » 10年前

無限 さんが書きました:みけCAT>申し訳ありません・・・
つまり、何をつけたせば良いのでしょうか?
お手数ですがお願いします・・・
41行目と42行目を

コード:

			if((0<=(a+6)/32+1&&(a+6)/32+1<sizeof(hantei)/sizeof(hantei[0])?IsAbleToGo(a+6,0,1):1)
			&& Key[KEY_INPUT_RIGHT]){a=a+6;}
			if((0<=(a-6)/32+1&&(a-6)/32+1<sizeof(hantei)/sizeof(hantei[0])?IsAbleToGo(a-6,0,1):1)
			&& Key[KEY_INPUT_LEFT]){a=a-6;}
とすればいいかもしれません。(テストしていません)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

無限

Re: 行けない場所の判定

#8

投稿記事 by 無限 » 10年前

有難うございました。
勉強になりました

閉鎖

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