検索結果 33 件

by littlestream
2週間前
フォーラム: C言語何でも質問掲示板
トピック: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。
返信数: 7
閲覧数: 534

Re: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。

只今、某横スクロールアクションをリスペクトしたゲームのサンプルソースを
作っているのでよければ待っててください。

ただし、一週間こちらから連絡がなければそちらが待たなくても
良いと考えてください。
by littlestream
2週間前
フォーラム: C言語何でも質問掲示板
トピック: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。
返信数: 7
閲覧数: 534

Re: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。

実はきちんと変数が管理されているなら マップデータと位置情報を一致させる必要はどこにも無いのですよ。 だから、まずプレイヤーキャラクターの座標の 変数を定義して代入して移動させるところまで作ってしまいましょう。 敵の位置はマップデータから読み込みたいならそれもありです。 その場合もマップデータと常に同期させる必要はどこにも無いです。 何故ならこの場合のマップデータはマップチップの サイズで管理されているので常に同期すると1マスずつ動いてしまいます。 for(int y=0;y<15;y++) for(int x=0;x<20;x++) if(map01no01[1][y][x]=='A') {...
by littlestream
2週間前
フォーラム: C言語何でも質問掲示板
トピック: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。
返信数: 7
閲覧数: 534

Re: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。

ちょっと衝撃というか複雑な感想を受けましたが 多分、ゲームプログラムに関してノウハウというか、定石を知らないのかもしれないな... と思いました。が、基本さえ知ればどうってこともありません。 まず、マップデータの座標とキャラクターの座標は特に制約がない限り、一緒に扱う必要はないので マップデータは1マスずつ、管理します。 つまりマップチップと呼ばれる大抵16ドットx16ドット、もしくは32x32ドット (最近のコンシューマーゲーム機の2Dゲームの解像度はかなり高いので無視します) で構成されており、スプライトと呼ばれるドット絵のキャラは移動単位が1ドットずつ動きます。 なので、ゲームプログラム...
by littlestream
2週間前
フォーラム: C言語何でも質問掲示板
トピック: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。
返信数: 7
閲覧数: 534

Re: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。

一番わかりやすいのは、画像マップデータと敵のマップデータを分離させる事です。
少なくとも、char map01no01[2][15][20];として3次元配列にして、map01no01[0]に画像のマップデータ、
map01no01[1]に敵データとすることで回避できるはずです。もちろん、map01no01[1]には0を代入しないと
やり方によってはマップを描画するだけ敵が出てくるので0を代入すると良いと思います。
by littlestream
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 配列に関する質問です。
返信数: 7
閲覧数: 367

Re: 配列に関する質問です。

stdio.hと乱数作成の為にstdlib.hをインクルードしておいて

コード:

#define N 100
int RNDTBL[N];として、二重ループで
if(RNDTBL[i]==RNDTBL[j] && i!=j)
{
   //重複している
}
で良いのでは?
by littlestream
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: C++フォントを扱う方法
返信数: 9
閲覧数: 385

Re: C++フォントを扱う方法

自分はRPGはほとんど作った事が無いですが、フォントと画像の組み合わせのためには
やはり文字コードShift-JISコードやASCIIコードを学んだ方を良いのだろうと思いますが、アクアプラスさん
のToHeart(トゥハート)なんかは文字列の画像を確かあいうえおかきくけこ~わをん~亜阿亞みたいに
文字列をあいうえお順で1つのファイルにまとめて利用していたという記事を見た事があります。
by littlestream
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 実行できません
返信数: 8
閲覧数: 314

Re: 実行できません

任意の10進数の桁を取り出す場合一般的かどうかは分からないですが、それぞれの桁が10の累乗
であることを利用します。以下の式でもとまります。
Ketanumは求めたい桁の変数、Nは任意の元の変数として、
桁が1の桁を0として10の桁を1、100の桁を2してKetaという変数にします。

Ketanum=(N/(10のKetaの累乗))%10;

ちなみに、この応用で2進数や16進数に変換することが出来ます。
by littlestream
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 文字列の個数カウント
返信数: 5
閲覧数: 366

Re: 文字列の個数カウント

こんな感じにしてみました。 #include<string.h> #include<stdio.h> int IsBigAlpha(char a) { if(aが'A'以上かつ'Z'以下なら) return 1; else return 0; } int IsSmallAlpha(char a) { if(aが'a'以上かつ'z'以下なら) return 1; else return 0; } int IsNum(char a) { if(aが'0'以上かつ'9'以下なら) return 1; else return 0; } int main() { char str[100]; int N...
by littlestream
1ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: どなたか教えてください。構造体について
返信数: 9
閲覧数: 484

Re: どなたか教えてください。構造体について

27行目の
*(book_list[num])->title = 1;

34行目の
struct list *book_list[20];にしたら一応動きはしましたが、何をしたいのかよく分からないのと
これは構造体を使ったリスト処理に似ているなと思いました。
by littlestream
6ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: ハッシュについて
返信数: 5
閲覧数: 354

Re: ハッシュについて

ハッシュではないですが配列に入れた乱数の重複を調べるなら二重ループで

コード:

if(MakeHash_table[i]==MakeHash_table[j] && i!=j)
という条件で判定するプログラムはどうでしょうか
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: opencvのsobelフィルタについて
返信数: 13
閲覧数: 1074

Re: opencvのsobelフィルタについて

usaoさんへ
 フルカラーの画像をGIMPなどで見てください。
 RGB別のレイヤーで見るとBが一番目立たなくて、RかGが多い場合が多いです。
 何かのネットの記事で見かけたので実装したのですが……どのURLか
 分からなくなってしまいました。
 しかし、多いからといって全ての画像に当てはまる訳ではない事は分かりました。
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: opencvのsobelフィルタについて
返信数: 13
閲覧数: 1074

Re: opencvのsobelフィルタについて

画素値というのは具体的にはRGB値でしょうか?
あと、エッジ検出だけだったら、自分ならこれを使うとっておきの技があるのですが、
あまり知られていないと思います。
まず、フルカラーからRGBのうち、Rだけを取り出しRRR画像とします。
この時点で全ての1つの画素辺りのRとGとB値は同じです。ならば、1つ左のRの画素値と比較して、
しきい値を決め、かなり違うようなら白い点をその座標に打ちます。(この場合、紫ですが)
線画抽出.png
線画抽出.png (58.8 KiB) 閲覧数: 1069 回
Image.png
上は元絵とエッジ検出した画像です。
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 太線の描画アルゴリズム
返信数: 34
閲覧数: 3922

Re: 太線の描画アルゴリズム

<iframe width="560" height="315" src="https://www.youtube.com/embed/5YS6zJsFEAE" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

ソースはムービーに書かれています。
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 太線の描画アルゴリズム
返信数: 34
閲覧数: 3922

Re: 太線の描画アルゴリズム

自分は乱数で48回ほどX,Y座標を求めて、前回のX,Y座標との直線を引く事で
カーブ(?)ではないですが、迷路っぽい感じのマップ生成が出来ました。
ソースは後で書きます。
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: Dxlibで二次元配列のマップチップとの当たり判定について
返信数: 10
閲覧数: 1522

Re: Dxlibで二次元配列のマップチップとの当たり判定について

Bottom2で判定しているところはBottom2==0の条件付きですね。
つまり正しくは
if(ジャンプフラグが0なら && Bottom1==0 && Bottom2==0)です。
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: Dxlibで二次元配列のマップチップとの当たり判定について
返信数: 10
閲覧数: 1522

Re: Dxlibで二次元配列のマップチップとの当たり判定について

とりあえず、残った自分の用意した答えを示します。今後のこの記事が役に立つためです。 上と下は辺り判定が良いとして、 左と右ですね。 if(左が押されたら) {   左に移動   if(GetMapData(pcx,pcy)!=0 || GetMapData(pcx,pcy+pch-1)!=0)   {//左上と左下を調べる     size=マップチップのサイズ;     pcx=(pcx*size+1)*size;//補正   } } if(右が押されたら) {   右に移動   if(GetMapData(pcx+pcw-1,pcy)!=0 || GetMapData(pcx+pcw-1,...
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: Dxlibで二次元配列のマップチップとの当たり判定について
返信数: 10
閲覧数: 1522

Re: Dxlibで二次元配列のマップチップとの当たり判定について

これは少しこちらも勘違いしてましたが、上ボタンが押されたら上、下ボタンが押されたら下に移動する事
を当たり判定のチェック前に行ってください。もちろん、左ボタンが押されたら左に移動し、当たり判定をチェック
し、右ボタンが押されたら右に移動し、当たり判定をチェックしてください。もう十分なほどヒントは
与えたはずです。
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: Dxlibで二次元配列のマップチップとの当たり判定について
返信数: 10
閲覧数: 1522

Re: Dxlibで二次元配列のマップチップとの当たり判定について

まず、ジャンプではない事から考えると良いです。 上に移動するボタンが押されたらプレイヤーキャラクターの座標が(pcx,pcy)という 左上に取られた場合、 pcw=プレイヤーキャラクターの幅; pch=プレイヤーキャラクターの高さ; size=マップチップの大きさ; もしも上ボタンが押されたら {   if( (GetMapData(pcx,pcy)!=0 || GetMapData(pcx+pcw-1,pcy)!=0)   //左上と右上をチェックする   {     pcy=(pcy/size+1)/size;   } } もしも下ボタンが押されたら {   if( (GetMapData...
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 大学の課題です。ヒントだけでもいいのでください 再帰関数です
返信数: 15
閲覧数: 2042

Re: 大学の課題です。ヒントだけでもいいのでください 再帰関数です

かずまさんへ >コンパイラは何を使っていますか? >警告のメッセージが出ませんか? 今使っているPCがWindows環境ですが、かなり重い(UnityとかVisualStudio2015とか重すぎる) ので未だにBorlandC++5.5Compilerを使っています。 警告は特に出なかったです。ローカル配列変数を返す関数がまずかったのは 10年前からなんとなく知っていたのですが、何故かは分からなかったです。 >>なぜ次のように素直に書かないのですか? while (v >= 0) これは、未だにファミコンプログラムのアセンブラの癖が あって、cとアセンブラ、それからVisualBasicの違...
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 大学の課題です。ヒントだけでもいいのでください 再帰関数です
返信数: 15
閲覧数: 2042

Re: 大学の課題です。ヒントだけでもいいのでください 再帰関数です

問題5をやってみましたが、これもあまり出来なかったです。 まずfgetsで一行の文字列を取得しようとして、その文字列の中の空白を,に変えて sscanfで値を得ようとしたのですが、あまりにも多い数字の場合、sscanfのポインタを 受け取る引数の変数が場合によって変わってしまう為、難しかったので、ここはscanfで 誤魔化しました。 どうすれば場合によって引数の数が変わる関数を作るのかが分からなかったのです。 1つの解決策は関数のC++の関数のオーバーロードだと思ったのですが、今回は見送りました。 #include<stdio.h> #define MAX 20 int main() { in...
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: 大学の課題です。ヒントだけでもいいのでください 再帰関数です
返信数: 15
閲覧数: 2042

Re: 大学の課題です。ヒントだけでもいいのでください 再帰関数です

問題4を私も挑戦しましたが、惨敗でした。 不要や無駄のあるプログラミングをしてしまいました。 #include<stdio.h> #include<string.h> #define K 6 char *GetFirstNStr(int N,char str[]) { str[N]='\0'; //メモリを破壊しているのでmain関数のstrからstr2にstrcpyする return str; } char *GetLastNStr(int N,char str[]) { char str2[100]; int LastKPos=strlen(str)-N; //strncpy(str2,s...
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: Dxライブラリの3D図形の回転
返信数: 4
閲覧数: 516

Re: Dxライブラリの3D図形の回転

https://howto.clip-studio.com/library/c ... etasequoia

ここでメタセコイアの考え方やモデリングのやり方を覚えました。
また、メタセコイアが使えれば(大分操作方法が違いますが)Blenderに応用が利きますよ。
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: Dxライブラリの3D図形の回転
返信数: 4
閲覧数: 516

Re: Dxライブラリの3D図形の回転

恐らくモデリングが苦手?だからかもしれないですが、
3Dのゲームを本格的に作るならモデリングできる仲間を探すか、自作するか、ネットで素材を
探すしかないと思いますよ。
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: Dxlibで二次元配列のマップチップとの当たり判定について
返信数: 10
閲覧数: 1522

Re: Dxlibで二次元配列のマップチップとの当たり判定について

下方向に補正する場合、Y座標=(小数切り捨て)(Y座標/マップチップのサイズ)*マップチップのサイズ
にしてください。入力した文章が間違えてました。すみません。
by littlestream
8ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: Dxlibで二次元配列のマップチップとの当たり判定について
返信数: 10
閲覧数: 1522

Re: Dxlibで二次元配列のマップチップとの当たり判定について

まずは、tuto_mapdata[TUTO_MAX_HEIGHT][TUTO_MAX_WIDTH] 内のマップデータを指定の座標から 取得する関数を何を参考にしてもいいので作ってみてください。そして取得した元の座標を小さなポリゴンでも画像 でもいいので(自分だったら円を描画命令で描く)描画してください。 そうすることにより、どこが判定中なのか丸わかりだと思うのです。 ちなみにマップデータの取得方法を日本語で書きます。 int マップデータを取得する関数func(int 調べたいX座標,調べたいY座標) { サイズ=マップチップのサイズ; return tuto_mapdata[(小数部切り捨て...
by littlestream
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: DirectXでC++を用いた3Dゲームのジャンプ処理について
返信数: 2
閲覧数: 360

Re: DirectXでC++を用いた3Dゲームのジャンプ処理について

プチコンでデバッグしてたら全く動きませんでした。なのでヒントをいくつか紹介します。 (手軽に使えるし、いちいちc++でビルドするのも面倒なので) まず、重力のGravityが0だと無重力になるので(ジャンプできるなら) 上に上がり続ける事でしょう。こちらではジャンプパワーを20.0、重力を0.5で良い感じになりました。 それから、正の数をジャンプのパワーとしてる以上、加算だと 下に下がってしまうと思いますが、これはプチコンと(DirectX)のY軸の座標系の違いでしょうね。 あと、ジャンプパワーを減算加算しているブロックのif文はジャンプフラグが立っていないと 正しく動きませんよ。地面より下に...
by littlestream
9ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: c言語での三角形の面積の求め方
返信数: 7
閲覧数: 1330

Re: c言語での三角形の面積の求め方

値が引き算によって絶対値を求めるやり方なら例えばa-bの場合、変数bの方が大きい場合、
負数になります。これではいくら引き算で絶対値を求めてもうまくいきません。
なので、if文で負数になりそうな場合を調べて以下のような感じでどうでしょうか?
if(aがbより大きければ)TheAbs=a-●; else if(aよりbが大きければ) TheAbs=●-●;
by littlestream
1年前
フォーラム: C言語何でも質問掲示板
トピック: 整数商, 余り
返信数: 7
閲覧数: 2957

Re: 整数商, 余り

割り算ルーチンは現代のCPUでは命令として使えますが、この割り算ルーチン を作るメリットは、割り算の仕組みをアルゴリズムで考えさせるという意味のほかには 遅いCPUのクロスアセンブラで割り算命令がサポートされてなく、 割り算ルーチンを自作する事が有効手段のように思えますが、 それが全てでかつ正しいかどうかは分かりません。 では、まず15÷3は手計算じゃなくて暗算で5と分かりますが、 15-3=12-3=9-3=6-3=3-3=0 と割る数である3を何回引けば、3より下になるかを考える事ができます。 この場合15÷3=5です。 余りが無い割り算の例を出してしまったので、↓の割り算はどうでしょうか...
by littlestream
1年前
フォーラム: C言語何でも質問掲示板
トピック: fwrite_セーブデータ
返信数: 16
閲覧数: 1237

Re: fwrite_セーブデータ

http://free.pjc.co.jp/Zlib/indexold.html

DLLバージョンのzlibの解凍・圧縮のソースを探していたのですが、
なかなか見つからず結局上のページに辿り着きました。
コマンドライン上で動くようですが、デバッグしやすいように工夫されているとの事なので
使ってみてはどうでしょうか?
by littlestream
1年前
フォーラム: C言語何でも質問掲示板
トピック: 構造体<2次元直交座標系における2点間の距離>
返信数: 5
閲覧数: 1030

Re: 構造体<2次元直交座標系における2点間の距離>

//座標の入力 printf("座標1 (x,y)>"); scanf("%d", &p1); printf("座標2 (x,y)>"); scanf("%d", &p2); printf("2点間の距離: %f\n", distance()); 」 これでは、2次元直交座標はX座標とY座標で構成されているのに対し、 scanf関数で謎の構造体のアドレスを引数として渡しています。 なので、typedefの使い方と構造体(struct)の宣言の仕方をネットで検索し調べた上で、 ここでは素直に、X座標とY座標を printf("座標1(X,Y)>"); scanf("%d",&p1.x); sc...

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