検索結果 64 件
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: ステージの初期化についてなのですが・・・
- 返信数: 26
- 閲覧数: 8210
Re: ステージの初期化についてなのですが・・・
まぁ、その手はあることはあるんですが他にも初期化するものがあるような・・・。 ここのルールですので、最終コードの貼り付けをお願いします。 初期化が必要なものがでてきたら、自分で考えてみます。 とりあえず表示はされましたので解決にさせていただきます。 ありがとうございました 載せるのはGameInitだけでいいんですか? //初期化関数 void GameInit(){ ZeroMemory( &stage, sizeof(stage) ); stage.playerX = retain.playerX; stage.playerY = retain.playerY; stage.mapsiz...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: ステージの初期化についてなのですが・・・
- 返信数: 26
- 閲覧数: 8210
Re: ステージの初期化についてなのですが・・・
自己解決しました。softya(ソフト屋) さんが書きました:ZeroMemory(&stage, sizeof(stage)); //StageInfo構造体の変数をすべて0にする
で全部0にしているのからでは?
ステージ最初の状態に戻すなら他にも設定すべきものがあるのではないでしょうか。
上にも書きましたがstruct StageInfoだけで十分でstruct Retainは不要です。
GameInitの中でLoadGameMapを呼び出すとうまく表示されました。
ありがとうございました。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: ステージの初期化についてなのですが・・・
- 返信数: 26
- 閲覧数: 8210
Re: ステージの初期化についてなのですが・・・
//初期化関数 void GameInit(){ ZeroMemory(&stage, sizeof(stage)); //StageInfo構造体の変数をすべて0にする stage.playerX = retain.playerX; stage.playerY = retain.playerY; stage.mapsize_w = retain.mapsize_w; stage.mapsize_h = retain.mapsize_h; for(int i = 0; i <= retain.num_mapchara; i++){ stage.Wall[i] = retain.Wall[i]...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: ステージの初期化についてなのですが・・・
- 返信数: 26
- 閲覧数: 8210
Re: ステージの初期化についてなのですが・・・
配列を用意するなら、同じ構造のものを用意したほうが混乱がなく素直に処理できます。 なので、stageと同じ型を用意したほうがシンプルで分かりやすくなります。 playerも構造体にまとめたほうが良いでしょう。 おはようございます。 早速試してみましたが、壁が表示されなくなってしまいました。 struct StageInfo{ int timerstart; //待機タイマーの開始時刻 int gamestarttime; //ゲームの開始時間 int gametime; //ゲーム開始からの経過ミリ秒 float playerX; float playerY; float mapsize_w...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: ステージの初期化についてなのですが・・・
- 返信数: 26
- 閲覧数: 8210
Re: ステージの初期化についてなのですが・・・
[quote」wallXなど単なるスカラ変数は複数の要素を記憶することはできません。 たぶん、何度も同じ指摘をしていると思いますが一つの変数には一つの値しか入れることはできません。これはC言語を始めプログラミング言語の基本原則です。 その為に配列がありますし、stage.Wallはその役目のために配列になっています。 wallXなどに次の値が入った時前の値は何処にも残っていませんので消滅します。 変数というのは単なる入れ物です。この入れ物は一つの値しか入れることができません。時間を巻き戻して前の値に戻すことも出来ません。 それを理解されていないので、そういう質問に成るんだと思いますがよく考えて...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: ステージの初期化についてなのですが・・・
- 返信数: 26
- 閲覧数: 8210
Re: ステージの初期化についてなのですが・・・
すみませんが、GameMapLoad関数を見ていただけませんか?softya(ソフト屋) さんが書きました:上書きたり書き換えれたら元の状態に戻せませんので、まるまる複製した元の状態をとっておくしかありません。
必要なのは、元の型に合わせたそっくり同じ型の別の名前の変数です。
sscanf_sで変数に値を読み込み、これを構造体変数に代入しているのですが、(プレイヤーも同じようにやるつもりです)sscanf_sで使っている変数をそのまま保存用の変数としてはつかえないのですか?
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: ステージの初期化についてなのですが・・・
- 返信数: 26
- 閲覧数: 8210
Re: ステージの初期化についてなのですが・・・
遅くなって申し訳ありません。保存用の変数を用意すればよいのでしょうか?softya(ソフト屋) さんが書きました:そこが分からないということでしょうか。C.C さんが書きました:すみません。InitGameでは画面の状態をリセットし、その後GameMapLoadで初期化した位置に表示したいと考えています。
GameMapLoad()の時の情報を何処かに保存しておいて、InitGameで毎回保存しておいた値から復元するのが一般的です。
現状のコードは、GameMapLoad()で保存していない & InitGameでどこからともなく不定な値を持ってきている という状態です。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: ステージの初期化についてなのですが・・・
- 返信数: 26
- 閲覧数: 8210
Re: ステージの初期化についてなのですが・・・
すみません。InitGameでは画面の状態をリセットし、その後GameMapLoadで初期化した位置に表示したいと考えています。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: ステージの初期化についてなのですが・・・
- 返信数: 26
- 閲覧数: 8210
Re: ステージの初期化についてなのですが・・・
GameMapLoad関数 → txtファイルから
マップサイズx, マップサイズy, プレイヤー座標x, プレイヤー座標y,
壁座標x, 壁座標y, 壁の幅, 壁の高さをそれぞれ初期化します。
↓
GoGameMain関数 → ゲームの本編の前にInitGame関数を呼び出します。
マップサイズx, マップサイズy, プレイヤー座標x, プレイヤー座標y,
壁座標x, 壁座標y, 壁の幅, 壁の高さをそれぞれ初期化します。
↓
GoGameMain関数 → ゲームの本編の前にInitGame関数を呼び出します。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: ステージの初期化についてなのですが・・・
- 返信数: 26
- 閲覧数: 8210
Re: ステージの初期化についてなのですが・・・
不用意にファイルがデカくなるのでRENSYU.sdfやipchフォルダとDebugフォルダは圧縮ファイルには不要ですので取り除いてから圧縮して下さい。 GameInit関数の問題点を指摘しますと 1.memsetは必要ありません。 普通に代入できるのにmemsetを使う意味はまったくなくバグの危険性が増えるだけです。 2.値が不定のものを代入しても初期化にはなりませんので、デバッガで確認して下さいね。 コレは何度も説明したはずですが、動作がおかしかったらまずデバッガで確認が基本です。 どういう問題があったか報告をしてください。 3.初期化の仕方がすごく間違っています。 プログラムの流れを意識...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: ステージの初期化についてなのですが・・・
- 返信数: 26
- 閲覧数: 8210
Re: ステージの初期化についてなのですが・・・
返信ありがとうございます。ISLe さんが書きました:デバッグ情報は容量がデカいだけじゃなく、個人情報が漏れる可能性もありますよ。
学校のPC使ってるっぽいので学校の関係者くらいにしか役に立たない情報かもしれませんが。
ファイルは消しました。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: ステージの初期化についてなのですが・・・
- 返信数: 26
- 閲覧数: 8210
Re: ステージの初期化についてなのですが・・・
すみません。GameInit関数はGoGameMain()関数の中で呼び出してください
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: ステージの初期化についてなのですが・・・
- 返信数: 26
- 閲覧数: 8210
Re: ステージの初期化についてなのですが・・・
すみません。h2so5 さんが書きました:ビルドの通るコードを貼りましょう。
画像は無いですが、よろしくお願いします
すみません。ファイルは消させていただきました
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: ステージの初期化についてなのですが・・・
- 返信数: 26
- 閲覧数: 8210
ステージの初期化についてなのですが・・・
http://dixq.net/forum/viewtopic.php?f=3&t=10986 ←こちらの続きです。ソースのzipファイルもあります。 何度も質問してしまい申し訳ありません。 今回はステージの初期化についてなのですが、ステージの初期化関数を作り、プレイヤー座標を初期化したのですが、指定した座標に表示されず、うまくいきません。教えていただけないでしょうか。 float playerX, playerY; //プレイヤー座標x, y。txtファイルから読み込んでいるので、値は入れてあります。 void GameInit(); //ステージの初期化関数のプロトタイプ宣言 voi...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
解決したソースコードを投稿していただくようにお願いします。ここのルールとなっております。 すみません。 //スクロール用の変数 float screenX = playerX - ( stage.mapsize_w / 2 ); float screenY = playerY - ( stage.mapsize_h / 2 ); void DrawGameMain(){ //プレイヤーの落下 AccY += PDown; playerY += AccY; HeroState hstate = HERO_STANDING; int key = GetJoypadInputState( DX_I...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
マップを動かす必要はありません。 主人公を画面の中心として表示していれば良いので、DrawRotaGraph時だけ主人公やWallなどの表示位置座標をローカル変数上で補正してやれば良いのです。 (0) 変数を用意する。 float screen_x,screen_y; (1) 主人公が画面中心になるように画面端の座標を計算する。 screen_x = playerX - (DEFAULT_SCREEN_SIZE_X/2); screen_y = playerY - (DEFAULT_SCREEN_SIZE_Y/2); (2) 主人公やWallなどを画面端からの相対座標で表示する。 DrawR...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
ソースを見ましたが、デバッガで見れば一目瞭然の問題があります。 (1)Wallの数だけループしてますので衝突があるとWallの数の倍数で移動します。 現状の移動速度は PLAYER_SPEED x Wallの数 です。 Wallの数だけ移動処理する必要ないはず。 (2)Wallがプレーヤーと逆方向に移動しています。 動く床に載っているようなものなのですが、これが更にスピードアップして見える原因ではないでしょうか? 同様の問題でジャンプするたびにWallが上にだけ移動します。 これは、マップスクロールの管理方法としても間違っています。 スクロールは調べましたがプレイヤーに合わせてマップを動かす...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
返信ありがとうございます。softya(ソフト屋) さんが書きました:とりあえず整理するために最新版の問題を箇条書きでお願いします。
ジャンプで落ちてこないだけでしょうか?
ジャンプで落ちてこないのはCollision関数をbool型にすると解決しました。
今の問題はスクロール処理を加えるとプレイヤー移動のPLAYER_SPEEDで設定した値よりも速いということです。for文を加えるとその問題が発生しました。問題が多くてすみません。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
返信遅くなり申し訳ありません。
zipファイル貼っておきます。
zipファイル貼っておきます。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
//当り判定関数 void Collision(){ for(int i = 0; i < stage.num_mapchara; i++){ c_rect.x = (int)( playerX - PLAYER_W / 2 ); c_rect.y = (int)( playerY - PLAYER_H / 2 ); c_rect.width = (int)( c_rect.x + PLAYER_W ); c_rect.height = (int)( c_rect.y + PLAYER_H ); w_rect.x = (int)( stage.Wall[i].ID_X - stage.Wal...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
ISLeさん、softyaさん、返信が遅くなり申し訳ありません。 お陰で当り判定ができました。すみません。2つに分けます。 #define G (0.3F) // キャラに掛かる重力加速度 #define JUMP_POWER (9.0F) // キャラのジャンプ力 #define PLAYER_W (46) //プレイヤーの幅 #define PLAYER_H (96) //プレイヤーの高さ float PDown = G; //下方向のベクトル float AccY = 0.0f; //上下のベクトル void DrawGameMain(){ stage.isonthegrou...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
ありがとうございます。当たり判定には何か問題はありますか? 最初の当たり判定は良いですが、2つ目の当たり判定の意図がわかりません。 これです。 ↓ if(プレイヤー座標x <= 床座標x && プレイヤー座標x <= (床座標x + 床の幅) &&(プレイヤー座標x + プレイヤーの幅) <= (床座標x + 床の幅) && 床座標x <= (プレイヤー座標x + プレイヤーの幅) && プレイヤー座標y <= 床座標y && プレイヤー座標y <= (床座標y + 床の高さ) && 床座標y <= (プレイヤー座標y + プレイヤーの高さ) &&(床座標y + 床の高さ) <= (プレイヤ...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
>物理は習ったことはないです。 習っている必要はないですが、次のことは理解して下さい。 重力加速度は常に下方向のベクトルが発生します。 ゲーム的にはベクトルの下方向に一定値が毎フレーム加算されます。 コレが唯一の解では無いですが、次のように処理しないと問題があるので次のように処理して下さい。 (1) 下方向の重力ベクトルを加算。 (2) 上下方向のベクトルを座標に加算する。 (3) 当たり判定する(すべての床とループ)。ベクトルが下方向で当たったら着地とみなす。当たったら上下方向のベクトルをキャンセル。上下の座標を補正。 (4) 左右方向のベクトルを座標に加算する。 (5) 当たり判定をする...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
物理は習ったことはないです。 そして当たり判定を見て指摘していただけないでしょうか if(床座標x <= (プレイヤー座標x + プレイヤーの幅)&&プレイヤー座標x <= (床座標x + 床の幅) &&床座標y <= (プレイヤー座標y + プレイヤーの高さ)&&プレイヤー座標y <= (床座標y + 床の高さ)){ 重力を0にする 床に乗っているフラグをtrueにする } if(プレイヤーの移動キーが押されている&&床に乗っているフラグがtrue){ if(プレイヤー座標x <= 床座標x && プレイヤー座標x <= (床座標x + 床の幅) &&(プレイヤー座標x + プレイヤーの幅)...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
なんでも 問題点を列挙します。 1.同じ構造の構造体を複数作る意味はありませんので避けて下さいね。バグや仕様混乱のもとです。 宣言と実体定義の区別が付いていないのではないでしょうか? 2.インデントが狂っていますね。正確にインデントしないとバグの原因となります。 3.WALLの情報はデータファイルから読みこむ仕様だったはずですか? 4.同じような処理を繰り返し書くのはバグの元なので、関数化して更に配列化でループ処理をして下さいね。 WALL情報は配列だったはずですが? 5.落下の当たり判定と横移動の当たり判定は別に行って下さい。 6.障害物に当たったあと座標補正がありませんよ。これだと刺さった...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
続きです。
WALL_RECT構造体で床の画像を囲んで1つずつ当り判定を行っているのですが、なぜか床に乗っていない状態でも当り判定が行われています。
移動中に床の画像が無いときにプレイヤーの落下が行われてないです。
そして当り判定の条件を満たしているときにジャンプを行うときも落下しません。上がりっぱなしです。よろしくお願いします
WALL_RECT構造体で床の画像を囲んで1つずつ当り判定を行っているのですが、なぜか床に乗っていない状態でも当り判定が行われています。
移動中に床の画像が無いときにプレイヤーの落下が行われてないです。
そして当り判定の条件を満たしているときにジャンプを行うときも落下しません。上がりっぱなしです。よろしくお願いします
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
ヘッダファイル struct WALL_RECT{ int left; int top; int right; int bottom; }; struct WALL_RECT_1{ int left; int top; int right; int bottom; }; struct WALL_RECT_2{ int left; int top; int right; int bottom; }; cppファイル WALL_RECT w_rect = {96, 432, 568, 48}; //床の画像1を矩形で囲む WALL_RECT_1 w_rect_1 = {552, 432, 568...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
1,SetCharRectに変えました。 2,SetCharRectはBOOL型で定義しているのですが return で true か false を返す必要はないのですか? 返さないとダメです。と言うか今までのコードで関数の定義が出て来なかったので確認不能でした。 今までは関数のプロトタイプ宣言だけなので実体定義ではありません。 すみません。また新しいエラーがでました。 error LNK2019: 未解決の外部シンボル "int_cdecl SetCharRect(struct CHAR_RECT *,int,int,int,int)" (?SetCharRect@@YAHPAUCHAR...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
1,SetCharRectに変えました。 2,SetCharRectはBOOL型で定義しているのですが return で true か false を返す必要はないのですか? すみません。また新しいエラーがでました。 error LNK2019: 未解決の外部シンボル "int_cdecl SetCharRect(struct CHAR_RECT *,int,int,int,int)" (?SetCharRect@@YAHPAUCHARA_RECT@@HHHH@Z)が関数"void_cdecl DrawGameMain(void)" (? DrawGameMain@@YAXXZ)で参照されまし...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
1
c:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinUser.hのなかにありました。
2
はい。
c:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinUser.hのなかにありました。
2
はい。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
1,
BOOL SetRect(
LPRECT lprc, // RECT構造体へのポインタ
int xLeft, // 左端の座標
int yTop, // 上端の座標
int xRight, // 右端の座標
int yBottom); // 下端の座標
の
int yBottomで出ています。
2,3
SetRect(c_rect, (int)playerX, (int)playerY, (int)(playerX + PLAYER_W), (int)(playerY + PLAYER_H));
で出ています。
BOOL SetRect(
LPRECT lprc, // RECT構造体へのポインタ
int xLeft, // 左端の座標
int yTop, // 上端の座標
int xRight, // 右端の座標
int yBottom); // 下端の座標
の
int yBottomで出ています。
2,3
SetRect(c_rect, (int)playerX, (int)playerY, (int)(playerX + PLAYER_W), (int)(playerY + PLAYER_H));
で出ています。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
返信ありがとうございます。 struct CHARRECT{ int left; int top; int right; int bottom; }; BOOL SetRect( LPRECT lprc, // RECT構造体へのポインタ int xLeft, // 左端の座標 int yTop, // 上端の座標 int xRight, // 右端の座標 int yBottom); // 下端の座標 はヘッダファイルです。 #define PLAYER_W (49) #define PLAYER_H (96) CHARRECT c_rect; はmain.cppです。 SetRect(&c_...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
RECT構造体で当たり判定を行いたいのですがエラーが出てしまいます。どうしたらよいのでしょうか。 [code=cpp] #define PLAYER_W (49) #define PLAYER_H (96) //キャラクターの矩形の構造体 struct CHARRECT{ int left; int top; int right; int bottom; }; BOOL SetRect( LPRECT lprc, // RECT構造体へのポインタ int xLeft, // 左端の座標 int yTop, // 上端の座標 int xRight, // 右端の座標 int yBottom); ...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
すみません。playerX,playerYは貼り付けたtxtファイルの主人公座標x,yです。softya(ソフト屋) さんが書きました:angleが0固定なら仕様上存在する意味がありません。C.C さんが書きました:(1,2,3)先ほど貼り付けたtxtファイルのラジアンをangleで読み込んでいるので値は決められていて更新されることはありません。ですので回転はしません。
バグを増やす原因になるので将来的にも不要なら削除しましょう。
DrawRota系の関数を使う意味もありません。
それは座標です。ベクトルは何処へ行ったのですか?C.C さんが書きました: (4)プレイヤーの移動のためのplayerX, playerYです
DrawGraphに書き替えておきます
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
(1,2,3)先ほど貼り付けたtxtファイルのラジアンをangleで読み込んでいるので値は決められていて更新されることはありません。ですので回転はしません。softya(ソフト屋) さんが書きました:(1)から(4)までお願いします。
(1)床は独立して回転する可能性があるんですね?
(2)床はどういう条件で回転しますか?
(3)あと主人公は回転しないのでしょうか?
(4)それともうひとつ、動的に変化するベクトルなどのパラメータも書いて下さい。
(4)プレイヤーの移動のためのplayerX, playerYです
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
例えばですが、こういうのはどうですか? 0000000000000000000000000000000000 0000000000000022222222220000000000 0000000000000011111111110000000000 0000000000000000000000000000000000 0000000000000000000000000222222222 2222222222000002222222222222222222 このように、テキストファイルか何かにマップ情報を書いておいて(0:何もない、1:床(乗れない)、2:床(乗れる)) キャラが0にいる、1に...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
>ベクトルに関しては少し調べてみます。angleがあるとどのような問題があるのでしょうか 回転していない四角形同士の当たり判定は容易ですが回転している四角形同士の当たり判定は数学的に面倒だからです。 参考例。 http://www.c3.club.kyutech.ac.jp/gamewiki/index.php?%C5%F6%A4%BF%A4%EA%C8%BD%C4%EA 【さらに補足】 登場するパラメータを整理して下さい。 床(ブロック?)のパラメータ 主人公のパラメータ こちらも回答をお願いします。 txtファイルでいいですか? 640, 480, 576, 360 //左からマップサイ...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
ベクトルに関しては少し調べてみます。angleがあるとどのような問題があるのでしょうかsoftya(ソフト屋) さんが書きました:アイテムでもブロックでもやることは同じですので良いのですが確かangleもありますよね。ソッチのほうが問題ですね。
ちなみにベクトルは高1で習うと思いますが、まだ習っていない状態でしょうか? 【補足】や、高2だったかな?
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
わかりにくい説明で申し訳ありません。アイテムブロックではなく、床でお願いします史上最悪のデスペナ さんが書きました: 要するにマリオですね?上が例えばアイテムブロックとの当たり判定・・・・・・・かな?
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
Re: 当たり判定
前スレッドが「マップが表示できません」とのことだったので見るのを止めたのですが・・・・・そこに書いてあったらごめんなさい 壁の上下左右・・・・というのがよく分かりませんが、上下というのは天井と地面という解釈でいいのでしょうか? その場合、最初の状態で地面とキャラは本当に当たっている状態なのでしょうか? ちなみに、私は常に重力は掛けておくほうがいいのではないかと思います すみません。壁というのは床(画像)です。そして 上下左右は 上→キャラクターの頭が床に当たっている状態 下→床に着地している状態 左→床の左の側面に当たっている状態 右→床の右の側面に当たっている状態 これの条件式です。 キャ...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: 当たり判定
- 返信数: 51
- 閲覧数: 17197
当たり判定
http://dixq.net/forum/viewtopic.php?f=3&t=10944 ↑ 上の続きなのですが、キャラクターとマップとの当たり判定でつまずいています。 壁の上下左右の座標とキャラクターが当たっているときにflag = trueとして そしてflag == falseのときに重力を加えるとしたいのですが、 まず壁の上下左右の座標とキャラクターが当たっているときという条件式がわかりません。調べましたが理解はできませんでした。 そして [codeccp]//ジャンプ if((key & PAD_INPUT_UP) && stage.isontheground == true)...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
アドバイスいただいたことを無視したことになり申し訳ないのですが、DrawGameMain関数の中で呼び出しました。softya(ソフト屋) さんが書きました:常にマップが前面に表示されていてますが、それぞれのstate(タイトルなど)表示を阻害していませんか?C.C さんが書きました:どうマズイのですか?softya(ソフト屋) さんが書きました:stateが
case GAME_TITLE:
case GAME_CLEAR:
case GAME_OVER:
の時に GameMapDraw();するのはマズイとおもいます。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
どうマズイのですか?softya(ソフト屋) さんが書きました:stateが
case GAME_TITLE:
case GAME_CLEAR:
case GAME_OVER:
の時に GameMapDraw();するのはマズイとおもいます。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
ありがとうございます。 試してみましたが、softyaさんのおっしゃていたとおり最後のデータは指定した座標に表示されていました へにっくすさんの提案や私の質問には答えていただいていませんが、修正する方針は決まりましたでしょうか? 【補足】 今までの内容を読みなおして頂けると分かると分かると思いますが一環して同じ事しか説明していません。 (1)マップの表示処理MapDrawはwhileループ中にないとマズイ。 (2)マップ座標などはMapLoadからMapDrawに引き継ぐ方法を考えないとマズイ。 (3)複数のマップ情報'座標など)を管理するなら構造体・配列などが必要。 これらの踏まえてのNo...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
ステップ実行はうまく行きましたか? ちょっと細かく書きますね。 最後に示されたソースコードで言うと、 DrawRotaGraph((int)wallX, (int)wallY, 1, angle, img.wall[id], TRUE); にブレイクポイントを仕掛けて(赤マルがついた状態で)実行してみてください。 ブレイクしたら(実行が中断して、赤マルに矢印がついたら)、「wallX」や「wallY」をマウスで指してください。 思ったとおりの値になっているでしょうか? まずはここまで試してみてください。 --- ブレイクした状態から、F5で再開できますが、すぐにまた同じところでブレイクすると...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
>(疑問1,2,3)ではソース13行目のfloat x, yにGameMapLoad関数のsscanf_sで直接取得した場合はどうなるのでしょう? >(疑問4,5)144行目のfloat x, yはsscanf_sでtxtファイルを1行ずつ取得して更新しています。 どちらにしても、複数個あるデータを配列でもない変数に保存すると上書きされて最後のデータしか残りません。 あとグローバル変数に保存すれば他の関数からは参照可能にはなりますが上に書いた問題は残ります。 >主人公は指定した座標に表示できました。ですが壁は画像自体が表示されません。どこか間違っているのでしょうか? 前にも書きましたが、 w...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
#include "DxLib.h" #include "practice.h" #include "Others.h" Images img; StageInfo stage; //グローバル変数 GameState gamestate = GAME_TITLE; int ghandle[6]; //時間計測用関数 int g_lasttime = 0; //直前の計測時刻 float g_frametime = 0; //1フレームにかかった時間 float playerX, playerY, wallX, wallY; float w, h, angle; int WINAPI Win...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
ありがとうございます。試してみますookami さんが書きました:横からすいません。こういうときはステップ実行かなと。
http://marupeke296.com/DBG_No1_Step.html
最初の投稿から時間がたっているのでソースコードがわかりませんが、
今問題になっている行にブレークポイントをしかけて、1行1行実行してみてはいかがでしょうか。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
>(疑問1) return を行うと保存されるのですか? 残念ながら何処にも保存されません。 >(疑問2) すみません。記述ミスでしたね。正しくは return (float)x; です float→int→floatと型変換される事になるのでintを経由した時点で情報は失われます。 >(疑問3)sx, syは最初に貼り付けたソースのGameMapLoad関数で定義しています。 前にも書いた通りローカル変数を参照する別関数を作ることはできません。 >(疑問4,5)まだ製作途中のソースを貼り付けてますので。sx,syはプレイヤーの座標です。そしてwallの座標は144行目に定義しています。 あ...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
(疑問1) return を行うと保存されるのですか?
(疑問2) すみません。記述ミスでしたね。正しくは return (float)x; です
(疑問3)sx, syは最初に貼り付けたソースのGameMapLoad関数で定義しています。
(疑問4,5)まだ製作途中のソースを貼り付けてますので。sx,syはプレイヤーの座標です。そしてwallの座標は144行目に定義しています。
(疑問2) すみません。記述ミスでしたね。正しくは return (float)x; です
(疑問3)sx, syは最初に貼り付けたソースのGameMapLoad関数で定義しています。
(疑問4,5)まだ製作途中のソースを貼り付けてますので。sx,syはプレイヤーの座標です。そしてwallの座標は144行目に定義しています。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
おはようございます。 float x, yにsscanf_s(buf, "%f, %f, %f, %f", &w, &h, &sx, &sy);で取得したsx, syをGetPosX, GetPosY関数に送ります。 GetPosX(sx), GetPosY(sy) そしてGetPosX, GetPosYの戻り値をfloat x, yにします。 GetPosX(int x) return sx; GetPosY(int y) return sy; ですのでfloat x, yにsx, syの値が代入され、どの関数でも使えるようになるといいなと考えています モジュールファイルとはcppファイルや...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
(1)マップ処理の関数を集めたマップ関数モジュールファイルを作って、その中にGameMapLoad()関数やGameMapDraw()関数を入れてそのGet関数も入れるなら良いと思います。 名前から何の関数かわかりませんので、GetMapPosX(int x), GetMapPosY(int y)が良いでしょうが引数がxだと何の値が戻るんでしょうか? これだと引数の設計が変だと思いますよ。関数の入出力をもう一度ちゃんと考えて設計してみてください。 マップのデータは、もっと複雑じゃないですか? (2)もう一つの関数を設計するポイントとしてGameMapLoad()で取得したデータはどの様に保存...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
表示用の関数GameMapDraw()を作ったのですがGameMapLoad関数で取得した座標を使って表示したくて考えたのですが、
GetPosX(int x), GetPosY(int y)関数を作り、GameMapLoadから座標を取得してどの関数でも使えるようにしたいです。正しいでしょうか?
GetPosX(int x), GetPosY(int y)関数を作り、GameMapLoadから座標を取得してどの関数でも使えるようにしたいです。正しいでしょうか?
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
ありがとうございます。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
それは、関数名からすると機能違いですね。そういう事は避けましょう。 あと主人公キャラクターとご自分でコメント書いてますが、そのとおり主人公キャラクターの表示です。どこかのコピペでしょうか? つまり、マップ表示が見当たりません。 表示はWinMainにあるProcessMessageのwhileループ内に呼び出される関数でないと表示されませんのでプログラムの流れをちゃんと理解して下さいね。 ちなみに、GameMapLoad関数をwhileループ内に移動していけませんよ。 前回のトピックでもコピーして解決したみたいですがコピペばかりでは理解が進みませんので、どこかでニッチもサッチも行かなくなりま...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
GameMapLoad関数で読み込みと表示をやろうと思い、そこで使っています。softya(ソフト屋) さんが書きました:ソースコードの何処で表示しているつもりでしょうか?C.C さんが書きました:DrawRotaGraphで表示ができると思っていたのですが違うのですか
C.Cさんの考えるマップ表示しているDrawRotaGraph()は何処にあるか正確に書いて下さい。
あと何のためのRotaなのでしょうか? DrawGraphではなくDrawRotaGraphを使っている理由を教えて下さい。
そしてDrawRotaGraph()である理由は角度をつけて表示ができると考えたためです
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
DrawRotaGraphで表示ができると思っていたのですが違うのですか
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: (タイトル修正)横スクロールゲームで床の画像の位置がずれる。
- 返信数: 15
- 閲覧数: 5396
Re: (タイトル修正)横スクロールゲームで床の画像の位置がずれる。
すみません。時間がなくて正解のソースコードを丸々コピーしました。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
Re: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
毎回ご迷惑おかけして申し訳ありません。softya(ソフト屋) さんが書きました:タイトル修正しました。あとcodeタグで種類が違ったので変更しておきました。 c#→cpp
これからソースを見てみますが、今のままだと分からないのでマップデータのサンプルを掲示して下さい。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
- 返信数: 36
- 閲覧数: 12460
マップを読み込んで表示したいのですが、うまく表示がされません(タイトル修正)
こんにちは。 マップを読み込んで表示したいのですが、表示がされません。見ていただけないでしょうか よろしくお願いします #include "DxLib.h" #include "practice.h" #include "Others.h" Images img; StageInfo stage; //グローバル変数 GameState gamestate = GAME_TITLE; int ghandle[6]; //時間計測用関数 int g_lasttime = 0; //直前の計測時刻 float g_frametime = 0; //1フレームにかかった時間 float x = 0,...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: (タイトル修正)横スクロールゲームで床の画像の位置がずれる。
- 返信数: 15
- 閲覧数: 5396
Re: (タイトル修正)横スクロールゲームで床の画像の位置がずれる。
返事が遅れて申し訳ありません。
解決できました。
解決できました。
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: (タイトル修正)横スクロールゲームで床の画像の位置がずれる。
- 返信数: 15
- 閲覧数: 5396
Re: (タイトル修正)横スクロールゲームで床の画像の位置がずれる。
すみません。ソースはまったく同じです。本と同じようにならなかったので質問をさせていただきました。 (3)はウィンドウのサイズを超えるとスクロールはするのですが、それと同時に床の画像も上下に動いてしまいます。 説明が下手ですみません わくわくのソースコードはダウンロード出来るので比較してみてください(WinMeageなど)。 もし、実力を付けるために自力で直したいのならHeroの座標がスクロールに反映される仕組みを説明してみてください。 本の内容をどのぐらい理解しているかが鍵となります。 【補足】 私としてはWLDSCやSCROLL_LIMITを値を疑っています。 ありがとうございます。一晩考...
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: (タイトル修正)横スクロールゲームで床の画像の位置がずれる。
- 返信数: 15
- 閲覧数: 5396
Re: (タイトル修正)横スクロールゲームで床の画像の位置がずれる。
すみません。ソースはまったく同じです。本と同じようにならなかったので質問をさせていただきました。
(3)はウィンドウのサイズを超えるとスクロールはするのですが、それと同時に床の画像も上下に動いてしまいます。
説明が下手ですみません
(3)はウィンドウのサイズを超えるとスクロールはするのですが、それと同時に床の画像も上下に動いてしまいます。
説明が下手ですみません
- 13年前
- フォーラム: C言語何でも質問掲示板
- トピック: (タイトル修正)横スクロールゲームで床の画像の位置がずれる。
- 返信数: 15
- 閲覧数: 5396
Re: 横スクロールゲームで床の画像の位置がずれる。
登録できました。よろしくお願いします
[削除]添付ファイルはライセンス的に問題がありそうなので削除しました。 by softya(ソフト屋)
[削除]添付ファイルはライセンス的に問題がありそうなので削除しました。 by softya(ソフト屋)