検索結果 18 件

by ろん
7年前
フォーラム: C言語何でも質問掲示板
トピック: 複雑な形の 範囲指定 と 表示
返信数: 7
閲覧数: 2280

Re: 複雑な形の 範囲指定 と 表示

#include "DxLib.h" const int ScreenW = 640; const int ScreenH = 480; int color; int rect[4][4]{ {100, 200, 400, 300}, {200, 100, 300, 400}, { 50, 420, 100, 470}, {450, 420 ,500, 470} }; unsigned char MaskData[480][640]; int MaskHandle; int WINAPI WinMain(HINSTANCE h1, HINSTANCE hP, LPSTR lpC, int n...
by ろん
9年前
フォーラム: C言語何でも質問掲示板
トピック: マップデータの読み込み
返信数: 5
閲覧数: 2803

Re: マップデータの読み込み

すみません、えらい間違いしてました。 int cを別の所で宣言してると勘違いしてました。頭にintついてるのに恥ずかしい限りです。 void DrawMap(){ for (int y = 0; y < MAP_HEIGHT; y++){ for (int x = 0; x < SHOW_WIDTH; x++){ int c = 0; if (48 <= g_mapdata[y][g_stagedata.scroll_x + x] && g_mapdata[y][g_stagedata.scroll_x + x] <= 57){ c = g_mapdata[y][g_stagedata.scr...
by ろん
9年前
フォーラム: C言語何でも質問掲示板
トピック: マップデータの読み込み
返信数: 5
閲覧数: 2803

Re: マップデータの読み込み

0~9、アルファベット大文字・小文字の62種類の文字データで構成されたマップデータを連続した添え字で管理したいという事ですよね? g_imghandles.mapitems[c]に添え字0~61に対応した画像があれば下記のようにDrawMapの中身を変更して動くはずです。 void DrawMap(){ for (int y = 0; y < MAP_HEIGHT; y++){ for (int x = 0; x < SHOW_WIDTH; x++){ if (48 <= g_mapdata[y][g_stagedata.scroll_x + x] && g_mapdata[y][g_stag...
by ろん
9年前
フォーラム: C言語何でも質問掲示板
トピック: プレイヤー移動について
返信数: 19
閲覧数: 6823

Re: プレイヤー移動について

 自分のいじってるソースに組み込む形で編集していた為、相違点がいくつかありましたので独立したソースにて手直し致しました。大変、失礼しました。 ソース全文載せましたのでこれで、動くはずです。 分割読み込みした画像の添え字を初期化する為、LoadDivGraphの位置をそれより前に行移動しましたのでお気を付けください。 #include "DxLib.h" typedef struct { int x, y, img, muki, walking_flag; } ch_t; int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { int ima...
by ろん
9年前
フォーラム: C言語何でも質問掲示板
トピック: プレイヤー移動について
返信数: 19
閲覧数: 6823

Re: プレイヤー移動について

自分でもソースいじってみたら前回指摘した所だけ修正しても動きませんでした。 同時押しした際の挙動が怪しかったのと、操作開始してからしばらく経つとキャラが表示されなくなる挙動をこちらでも確認出来たので色々と書き換えました。 とりあえずコレを理解して、それでも分からない所があったらトピック立て直して質問し直した方が良いと思われます。 後はint wから左右の傾きを求めず左右独立した変数(ch.left,ch.right)を追加して それぞれ8~15、16~23の範囲で増減を操作出来るようソースを追加するだけなんですが 一度に全部やっちゃうとわけわからなくなるので少しずつ理解していってください。 余...
by ろん
9年前
フォーラム: C言語何でも質問掲示板
トピック: プレイヤー移動について
返信数: 19
閲覧数: 6823

Re: プレイヤー移動について

 何で前回ソース見た時に気づかなかったんだろう 全ての元凶はint wだと思う、w++でインクリメントしっぱなしになってますが仕様ですか? int wには手を入れずに左右の処理を下記のように修正してデバッグしてみて下さい。 左右キーを押し始めた最初の8フレームだけは意図した感じに表示されるはずです。 左処理: ch.img = image[w % 8 + 8]; //8~16 昇順でループ 右処理: ch.img = image[w % 8 + 16]; //17~23 昇順でループ そこからは意図した通りのグラフィックが描画されるようint wの中身(もしくはimageの添え字)を操作出来る...
by ろん
9年前
フォーラム: C言語何でも質問掲示板
トピック: DXライブラリ マップの判定のデータが実際と合いません。原因を教えてください。
返信数: 2
閲覧数: 1591

Re: DXライブラリ マップの判定のデータが実際と合いません。原因を教えてください。

DrawFormatStringの引数、MapData[PlayerX][PlayerY]が逆です。MapData[PlayerY][PlayerX]としてみてください。
by ろん
9年前
フォーラム: C言語何でも質問掲示板
トピック: プレイヤー移動について
返信数: 19
閲覧数: 6823

Re: プレイヤー移動について

57~59行目がおかしいように見受けられます。
wに11を入れて、次のif文で16と同じかを判断してますね。
59行も他の3方向では %8 の8パターンで回しているのに21で剰余してます。
(コピペミスでしょうか?)
傾きに関しては24分割して読み込んでいるpngファイルに傾いているように見えるチップが無いと出来ないとしか言い様がありません。

w = 11;
if( w == 16 ) {
ch.img = image[w % 21];
by ろん
9年前
フォーラム: C言語何でも質問掲示板
トピック: 床?の当たり判定
返信数: 33
閲覧数: 14158

Re: 床?の当たり判定

下の4行を手計算してMapDrawPoint_XとMapDrawPoint_Yに入る数値を見て、次に来るif分に当てはめた場合に自分の望む結果が出るか考えれば何がおかしいか分かるはず。
DrawMapChipNum_X =640/map_size+2;
DrawMapChipNum_Y=480/map_size+2;

MapDrawPoint_X=px-(DrawMapChipNum_X/2-1);
MapDrawPoint_Y=py-(DrawMapChipNum_Y/2-1);
by ろん
9年前
フォーラム: C言語何でも質問掲示板
トピック: 床?の当たり判定
返信数: 33
閲覧数: 14158

Re: 床?の当たり判定

>py軸が480を超えてゲームオーバーになってしまいます。 との事で、Y軸処理のあたりを流し読みした限りなので、指摘がする部分を他の箇所で適正に処理していたらすみません。 33行 int hantei[map_height][map_width] 191行 if(hantei[px][py]==1){ 33行で宣言した16*20の配列に対して、191行でクライアント領域の実座標0~640、0~480が入っていて、添字のオーバーフローを起こしているような気がします。 それと、これはよくある間違いなのですが、33行は20個の要素がある1次配列が16あるという宣言です。 横20・縦16で使いたければ...
by ろん
9年前
フォーラム: C言語何でも質問掲示板
トピック: 床?の当たり判定
返信数: 33
閲覧数: 14158

Re: 床?の当たり判定

http://www.dotup.org/uploda/www.dotup.org5252446.png この掲示板で画像挿入するのは初めてなので大きすぎて見づらかったらごめんなさい。 マリオ的なアクションゲームと言われて思い浮かべるのはこのような画像なんですが(背景を描画して当たり判定のあるブロックを配置する) int map{0,0,0,1,0,0,0}の意味は、仮データとして床1列を配置してジャンプと落下処理の実装をめざしてる状況という理解でいいでしょうか? 床が無いところでも落なくなったののは、X軸でどの床に立ってるか(キャラの足元に床があるか)の処理をしていないからではないでしょう...
by ろん
9年前
フォーラム: C言語何でも質問掲示板
トピック: 床?の当たり判定
返信数: 33
閲覧数: 14158

Re: 床?の当たり判定

衝突判定における、めり込むならめり込む手前ギリギリまで戻すという処理になりますが 24*24のマップチップ使ってると仮定、キノコ取ってないチビキャラも24*24の画像で表現してる場合に 床(ブロック)の上辺のY座標が240だとして、落下中の処理で次のY座標が216より大きくなるなら216をキャラのY座標を管理してる変数に代入するだけです。 (左上座標で描画する際の説明になりますのでキャラを中心座標で描画してる場合は216が228になります。) ジャンプした時にブロックにぶつかった時の処理も上下が逆になるだけで処理内容はあまり変わりません。 ちなみにジャンプ上昇中・落下中を区別出来るようにステー...
by ろん
12年前
フォーラム: C言語何でも質問掲示板
トピック: レーダ-チャートの作成と描画について
返信数: 6
閲覧数: 5596

Re: レーダ-チャートの作成と描画について

すみません、頭がボケてたようで15は間違いです。360を要素数8で割ったら45°ですね(汗・・・
そこでjをradの式に入れ込んでj=j+3の一文を削除した所、下のように纏まりました。

度数法の360°を弧度法の2πへ変換し8で割っています。これが要素間の角度、すなわち45°になります。
その45°(PI * 2 / 8.0)で8回繰り返せば360°を全て使ったレーダチャートになるわけですね。お騒がせしました。

コード:

double rad =  i * PI * 2 / 8.0;
by ろん
12年前
フォーラム: C言語何でも質問掲示板
トピック: 関数宣言(再帰有り時)の書式について
返信数: 7
閲覧数: 2903

Re: 関数宣言(再帰有り時)の書式について

掲示板の書き込み方が間違えていたようで昨日、解決とお礼書いたつもりでいました、返事遅れてすみません。
98~100という数字は再帰のステップ数が軽く100を超える場合があった為と判明し、そのへんを書き換えた所全て無事解決しました。
今は、目標地点から求めた最大歩数を元に降順で歩かせるアルゴリズム考えてます。
また分からない所があったら質問しに来ますので宜しくお願いします。
by ろん
12年前
フォーラム: C言語何でも質問掲示板
トピック: レーダ-チャートの作成と描画について
返信数: 6
閲覧数: 5596

Re: レーダ-チャートの作成と描画について

とりあえず最大値100ピクセルと考えた場合のチャート作成してみました。 作った本人が【double rad = 15 * j* PI / 180.0;】の1文を理解していない為、j= j +3;の所で何故+3するとうまく動くのか分かってないです。 それと開始位置を上方向からにしたかったのですが、右方向からの時計周りになってます。 また、360°を8つの要素で均等角で使うんだからと360/8で15って数字直接使ってます。 #include "DxLib.h" #include <math.h> //プロトタイプ宣言 void background(); //パラメータ要素[8]攻撃・防御・スタミ...
by ろん
12年前
フォーラム: C言語何でも質問掲示板
トピック: 関数宣言(再帰有り時)の書式について
返信数: 7
閲覧数: 2903

Re: 関数宣言(再帰有り時)の書式について

レスありがとうございます。 下のように修正をかけた所、意図した通りに動きました。 ですが12×12すべてのデータを0にして処理したところ、いきなり99~102という数字が出てきます。 これは、再帰に寄る処理が重なりすぎての事なのでしょうか? int map_walk( int a, int b, int c){ color = GetColor( 255 , 0 , 0 ); if( 0 != b ){ if( mw[b-1][a] !=99){ if( mw[b-1][a] == 0 || mw[b-1][a] >= c){ mw[b][a] = c; map_walk( a, b-1, c...
by ろん
12年前
フォーラム: C言語何でも質問掲示板
トピック: 関数宣言(再帰有り時)の書式について
返信数: 7
閲覧数: 2903

Re: 関数宣言(再帰有り時)の書式について

投稿直後に戻り値でぐぐったら一部、書式については自己解決しました。 プログラムは走るものの右上方向にしか探査してないようで、これからさらに改善する予定です。 int map_walk( int x, int y, int hosuu){ color = GetColor( 255 , 0 , 0 ); DrawFormatString( x*32+16, y*32, color, "%d", hosuu); if( 0 < y && mw[y-1][x] !=99){ if( mw[y-1][x] == 0 || mw[y-1][x] > hosuu){ mw[y-1][x] = hosuu;...
by ろん
12年前
フォーラム: C言語何でも質問掲示板
トピック: 関数宣言(再帰有り時)の書式について
返信数: 7
閲覧数: 2903

関数宣言(再帰有り時)の書式について

初めて質問させて頂きます。 OS:win7(64bit),Vc++2008 Dxライブラリ環境にて作成した物ですが、map_walk()にて再帰処理されずにそのまま抜けてしまう状態です。 戻り値の宣言(voidでの宣言)がおかしいのかな?と推察したのですがmap_walk( x,y, hosuu);と宣言するとビジー状態になったり int map_walk(int,int,int);等いくつか試したのですがコンパイルが通らなかったりと意図した通りに動きません。 9/6からC++の勉強を始め、まだ日も浅く書式や文法が分からないので、引数と戻り値がある時の宣言の仕方をお教えては頂けないでしょうか?...

詳細検索ページへ移動する