DXLIB依存なら球とモデルの当たり判定という関数があります。
https://dxlib.xsrv.jp/function/dxfunc_3 ... .html#R9N5
検索結果 48 件
- 2年前
- フォーラム: C言語何でも質問掲示板
- トピック: 球と円柱の当たり判定
- 返信数: 10
- 閲覧数: 7681
Re: 球と円柱の当たり判定
球と球の当たり判定を応用して座標毎に行うのはどうでしょうか?
円柱は下底が円なのでそれに高さで伸ばしてみるのと
球はそのまま球の当たり判定へ組み込めるので
球と円柱のあらゆる座標との当たり判定でどうでしょうか?
自分はそれを応用してレイトレーシングでソフトウェアレンダリングしたことがあります。
確か球と球の当たり判定は球Aと球Bと半径RA,RBとすると
(AX-BX)^2+(AY-BY)^2+(AZ-BZ)^2<(RA+RB)^2
だと思います。
円柱は下底が円なのでそれに高さで伸ばしてみるのと
球はそのまま球の当たり判定へ組み込めるので
球と円柱のあらゆる座標との当たり判定でどうでしょうか?
自分はそれを応用してレイトレーシングでソフトウェアレンダリングしたことがあります。
確か球と球の当たり判定は球Aと球Bと半径RA,RBとすると
(AX-BX)^2+(AY-BY)^2+(AZ-BZ)^2<(RA+RB)^2
だと思います。
- 2年前
- フォーラム: C言語何でも質問掲示板
- トピック: int型からchar*にする方法を教えて下さい、、、
- 返信数: 6
- 閲覧数: 5908
Re: int型からchar*にする方法を教えて下さい、、、
https://dxlib.xsrv.jp/function/dxfunc_g ... tml#R17N22
DrawFormatStringToHandleもありますが、こちらのほうがループ内だと動作は軽いはずです。
DrawFormatStringToHandleもありますが、こちらのほうがループ内だと動作は軽いはずです。
- 2年前
- フォーラム: C言語何でも質問掲示板
- トピック: int型からchar*にする方法を教えて下さい、、、
- 返信数: 6
- 閲覧数: 5908
Re: int型からchar*にする方法を教えて下さい、、、
みけCATさんの言った通り
printfのように使えるDrawFormatStringを使った方がオススメです。
tekikazuをint型の変数と仮定して表示するなら
DrawFormatString(x座標,y座標,GetColor,"tekikazu=%d",tekikazu);
だけです。
printfのように使えるDrawFormatStringを使った方がオススメです。
tekikazuをint型の変数と仮定して表示するなら
DrawFormatString(x座標,y座標,GetColor,"tekikazu=%d",tekikazu);
だけです。
- 2年前
- フォーラム: C言語何でも質問掲示板
- トピック: 敵を倒しきったらEND画面へ・・・
- 返信数: 12
- 閲覧数: 7186
- 2年前
- フォーラム: C言語何でも質問掲示板
- トピック: 敵を倒しきったらEND画面へ・・・
- 返信数: 12
- 閲覧数: 7186
- 2年前
- フォーラム: C言語何でも質問掲示板
- トピック: 敵を倒しきったらEND画面へ・・・
- 返信数: 12
- 閲覧数: 7186
Re: 敵を倒しきったらEND画面へ・・・
cupaさんへ
描画された時点のカウント変数がどう変化しているか確かめるのと
ちょっとcupaさんの言っている事が卓上デバッグだと難しいので一番上のソースコードを
使ってデバッグしてみます。
描画された時点のカウント変数がどう変化しているか確かめるのと
ちょっとcupaさんの言っている事が卓上デバッグだと難しいので一番上のソースコードを
使ってデバッグしてみます。
- 2年前
- フォーラム: C言語何でも質問掲示板
- トピック: 敵を倒しきったらEND画面へ・・・
- 返信数: 12
- 閲覧数: 7186
Re: 敵を倒しきったらEND画面へ・・・
やりたいことは次の通りではなく何故取り逃がしてしまうものを描画毎にtekikazu++;してしまうのか 分かりません。そんな事をしたら、tekikazu>TEKI_MAXまで簡単に推移してしまう気がしますが もしかして、tekikazu++;したとしても敵を倒した直後に別の変数でも使うつもりなのでしょうか? //自分が勘違いした場合の処理 if(敵と弾が当たったら) { tekikazu++; } if(tekikazu>TEKI_MAX) { DrawFormatString(X,Y,GetColor(255,rand()%255,0),"CLEAR!!"); status=END; }//...
- 2年前
- フォーラム: C言語何でも質問掲示板
- トピック: 爆発アニメーションに関して、、、
- 返信数: 4
- 閲覧数: 4596
Re: 爆発アニメーションに関して、、、
いえ、特に工夫して作ったコードではなくて配列だけを使った場合は
どのように書くかだけ考慮したソースです。
本来ならば自分はとある方のソースを参考にして
c言語だけでファミコンのSTGを作った時でも構造体の配列を
使っていました。
そのせいでノロノロでしたが。
どのように書くかだけ考慮したソースです。
本来ならば自分はとある方のソースを参考にして
c言語だけでファミコンのSTGを作った時でも構造体の配列を
使っていました。
そのせいでノロノロでしたが。
- 2年前
- フォーラム: C言語何でも質問掲示板
- トピック: 爆発アニメーションに関して、、、
- 返信数: 4
- 閲覧数: 4596
Re: 爆発アニメーションに関して、、、
爆発アニメは、というか そもそもアニメがどうやって動いているかというと一枚ずつの2次元画像が 1コマずつ書き換えられて動いているようにみせています。 #define MAX_BAKUHATSU_ANIME_FLAME 10 なので一枚ずつ静止画像を動くように見せれば良いのでint型の配列ImageTbl[10];があったら ImageTbl[0]=LoadGraph("A01.png"); ImageTbl[1]=LoadGraph("A02.png"); ImageTbl[2]=LoadGraph("A03.png"); ...... .... ... .. . と以下同じように配列に代入し...
- 2年前
- フォーラム: C言語何でも質問掲示板
- トピック: 敵がうまく表示できません、、、
- 返信数: 7
- 閲覧数: 6095
Re: 敵がうまく表示できません、、、
はじめまして!littlestramというものです。 変数の使いかたが若干不自然なのと これだと敵の種類が増えたらもっとグローバル変数 を作らなくてはいけなくなるかもしれません。 なので、構造体(C++だとクラス扱い)で 変数をまとめてみます。 構造体という言葉に難しさを覚えたとしたら この先に行うゲーム作りが冗長になってしまいます。 まず、敵の構造体からです。 typedef struct Enemy_{ double x,y; double hp; bool useflag; int ImageHandle; int kind; //こんな感じの情報が }Enemy_; #define M...
- 3年前
- フォーラム: C言語何でも質問掲示板
- トピック: 規則がわからりません
- 返信数: 4
- 閲覧数: 4077
Re: 規則がわからりません
//こんな感じでしょうか? #include<stdio.h> #include<stdlib.h> int table[4]={1,2,3,4}; //1234 int main() { int num=0; for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { for(int k=0;k<4;k++) { for(int l=0;l<4;l++) { if(i!=j && i!=k && i!=l && j!=k && j!=l && k!=l && l!=j) { printf("%d%d%d%d\n",table[i],table[j],tabl...
- 3年前
- フォーラム: C言語何でも質問掲示板
- トピック: 学校の課題について
- 返信数: 8
- 閲覧数: 5314
Re: 学校の課題について
//自分なりに書いてみました。 #include<stdio.h> #include<math.h> int GetNDigit(int N,int D) { //指定の桁を取り出す関数(変数Dが0で1の位 return N/((int)pow(10.0,(double)D))%10; } int MyMadePow(int a,int b) { //DOMAIN ERRORが出るので自作の累乗関数を書きました。 if(a==0 && b==0) return 0; if(a!=0 && b==0) return 1; int c=1; for(int i=1;i<=b;i++) { c*=...
- 3年前
- フォーラム: C言語何でも質問掲示板
- トピック: 左クリックの入力が一度しかできない
- 返信数: 3
- 閲覧数: 3472
Re: 左クリックの入力が一度しかできない
これはプログラミング中にマウスでもキーボードでも起こるうる現象ですが、
チャタリングを防止する処理を行えばOKです。
具体的には、前のフレームのマウス入力やキーボード入力を受け取った変数を今の
受け取った変数と比較すればOKです。これでチャタリングを防止できます。
擬似言語っぽく書くなら
static int マウスの変数;
if(!マウスの変数 && マウスの入力を判定する関数()==1)
{
//ここで判定完了!!
}
マウスの変数=マウスの入力を判定する関数();
チャタリングを防止する処理を行えばOKです。
具体的には、前のフレームのマウス入力やキーボード入力を受け取った変数を今の
受け取った変数と比較すればOKです。これでチャタリングを防止できます。
擬似言語っぽく書くなら
static int マウスの変数;
if(!マウスの変数 && マウスの入力を判定する関数()==1)
{
//ここで判定完了!!
}
マウスの変数=マウスの入力を判定する関数();
- 4年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップチップスクロールについて
- 返信数: 2
- 閲覧数: 9310
- 4年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。
- 返信数: 7
- 閲覧数: 6723
Re: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。
只今、某横スクロールアクションをリスペクトしたゲームのサンプルソースを
作っているのでよければ待っててください。
ただし、一週間こちらから連絡がなければそちらが待たなくても
良いと考えてください。
作っているのでよければ待っててください。
ただし、一週間こちらから連絡がなければそちらが待たなくても
良いと考えてください。
- 4年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。
- 返信数: 7
- 閲覧数: 6723
Re: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。
実はきちんと変数が管理されているなら マップデータと位置情報を一致させる必要はどこにも無いのですよ。 だから、まずプレイヤーキャラクターの座標の 変数を定義して代入して移動させるところまで作ってしまいましょう。 敵の位置はマップデータから読み込みたいならそれもありです。 その場合もマップデータと常に同期させる必要はどこにも無いです。 何故ならこの場合のマップデータはマップチップの サイズで管理されているので常に同期すると1マスずつ動いてしまいます。 for(int y=0;y<15;y++) for(int x=0;x<20;x++) if(map01no01[1][y][x]=='A') {...
- 4年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。
- 返信数: 7
- 閲覧数: 6723
Re: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。
ちょっと衝撃というか複雑な感想を受けましたが 多分、ゲームプログラムに関してノウハウというか、定石を知らないのかもしれないな... と思いました。が、基本さえ知ればどうってこともありません。 まず、マップデータの座標とキャラクターの座標は特に制約がない限り、一緒に扱う必要はないので マップデータは1マスずつ、管理します。 つまりマップチップと呼ばれる大抵16ドットx16ドット、もしくは32x32ドット (最近のコンシューマーゲーム機の2Dゲームの解像度はかなり高いので無視します) で構成されており、スプライトと呼ばれるドット絵のキャラは移動単位が1ドットずつ動きます。 なので、ゲームプログラム...
- 4年前
- フォーラム: C言語何でも質問掲示板
- トピック: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。
- 返信数: 7
- 閲覧数: 6723
Re: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。
一番わかりやすいのは、画像マップデータと敵のマップデータを分離させる事です。
少なくとも、char map01no01[2][15][20];として3次元配列にして、map01no01[0]に画像のマップデータ、
map01no01[1]に敵データとすることで回避できるはずです。もちろん、map01no01[1]には0を代入しないと
やり方によってはマップを描画するだけ敵が出てくるので0を代入すると良いと思います。
少なくとも、char map01no01[2][15][20];として3次元配列にして、map01no01[0]に画像のマップデータ、
map01no01[1]に敵データとすることで回避できるはずです。もちろん、map01no01[1]には0を代入しないと
やり方によってはマップを描画するだけ敵が出てくるので0を代入すると良いと思います。
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: 配列に関する質問です。
- 返信数: 7
- 閲覧数: 3304
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: C++フォントを扱う方法
- 返信数: 9
- 閲覧数: 9988
Re: C++フォントを扱う方法
自分はRPGはほとんど作った事が無いですが、フォントと画像の組み合わせのためには
やはり文字コードShift-JISコードやASCIIコードを学んだ方を良いのだろうと思いますが、アクアプラスさん
のToHeart(トゥハート)なんかは文字列の画像を確かあいうえおかきくけこ~わをん~亜阿亞みたいに
文字列をあいうえお順で1つのファイルにまとめて利用していたという記事を見た事があります。
やはり文字コードShift-JISコードやASCIIコードを学んだ方を良いのだろうと思いますが、アクアプラスさん
のToHeart(トゥハート)なんかは文字列の画像を確かあいうえおかきくけこ~わをん~亜阿亞みたいに
文字列をあいうえお順で1つのファイルにまとめて利用していたという記事を見た事があります。
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: 実行できません
- 返信数: 8
- 閲覧数: 6814
Re: 実行できません
任意の10進数の桁を取り出す場合一般的かどうかは分からないですが、それぞれの桁が10の累乗
であることを利用します。以下の式でもとまります。
Ketanumは求めたい桁の変数、Nは任意の元の変数として、
桁が1の桁を0として10の桁を1、100の桁を2してKetaという変数にします。
Ketanum=(N/(10のKetaの累乗))%10;
ちなみに、この応用で2進数や16進数に変換することが出来ます。
であることを利用します。以下の式でもとまります。
Ketanumは求めたい桁の変数、Nは任意の元の変数として、
桁が1の桁を0として10の桁を1、100の桁を2してKetaという変数にします。
Ketanum=(N/(10のKetaの累乗))%10;
ちなみに、この応用で2進数や16進数に変換することが出来ます。
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: 文字列の個数カウント
- 返信数: 5
- 閲覧数: 4532
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...
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: どなたか教えてください。構造体について
- 返信数: 9
- 閲覧数: 5995
Re: どなたか教えてください。構造体について
27行目の
*(book_list[num])->title = 1;
と
34行目の
struct list *book_list[20];にしたら一応動きはしましたが、何をしたいのかよく分からないのと
これは構造体を使ったリスト処理に似ているなと思いました。
*(book_list[num])->title = 1;
と
34行目の
struct list *book_list[20];にしたら一応動きはしましたが、何をしたいのかよく分からないのと
これは構造体を使ったリスト処理に似ているなと思いました。
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: ハッシュについて
- 返信数: 5
- 閲覧数: 2554
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: opencvのsobelフィルタについて
- 返信数: 13
- 閲覧数: 7195
Re: opencvのsobelフィルタについて
usaoさんへ
フルカラーの画像をGIMPなどで見てください。
RGB別のレイヤーで見るとBが一番目立たなくて、RかGが多い場合が多いです。
何かのネットの記事で見かけたので実装したのですが……どのURLか
分からなくなってしまいました。
しかし、多いからといって全ての画像に当てはまる訳ではない事は分かりました。
フルカラーの画像をGIMPなどで見てください。
RGB別のレイヤーで見るとBが一番目立たなくて、RかGが多い場合が多いです。
何かのネットの記事で見かけたので実装したのですが……どのURLか
分からなくなってしまいました。
しかし、多いからといって全ての画像に当てはまる訳ではない事は分かりました。
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: opencvのsobelフィルタについて
- 返信数: 13
- 閲覧数: 7195
Re: opencvのsobelフィルタについて
画素値というのは具体的にはRGB値でしょうか?
あと、エッジ検出だけだったら、自分ならこれを使うとっておきの技があるのですが、
あまり知られていないと思います。
まず、フルカラーからRGBのうち、Rだけを取り出しRRR画像とします。
この時点で全ての1つの画素辺りのRとGとB値は同じです。ならば、1つ左のRの画素値と比較して、
しきい値を決め、かなり違うようなら白い点をその座標に打ちます。(この場合、紫ですが) 上は元絵とエッジ検出した画像です。
あと、エッジ検出だけだったら、自分ならこれを使うとっておきの技があるのですが、
あまり知られていないと思います。
まず、フルカラーからRGBのうち、Rだけを取り出しRRR画像とします。
この時点で全ての1つの画素辺りのRとGとB値は同じです。ならば、1つ左のRの画素値と比較して、
しきい値を決め、かなり違うようなら白い点をその座標に打ちます。(この場合、紫ですが) 上は元絵とエッジ検出した画像です。
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: 太線の描画アルゴリズム
- 返信数: 34
- 閲覧数: 17844
Re: 太線の描画アルゴリズム
<iframe width="560" height="315" src="https://www.youtube.com/embed/5YS6zJsFEAE" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
ソースはムービーに書かれています。
ソースはムービーに書かれています。
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: 太線の描画アルゴリズム
- 返信数: 34
- 閲覧数: 17844
Re: 太線の描画アルゴリズム
自分は乱数で48回ほどX,Y座標を求めて、前回のX,Y座標との直線を引く事で
カーブ(?)ではないですが、迷路っぽい感じのマップ生成が出来ました。
ソースは後で書きます。
カーブ(?)ではないですが、迷路っぽい感じのマップ生成が出来ました。
ソースは後で書きます。
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: Dxlibで二次元配列のマップチップとの当たり判定について
- 返信数: 10
- 閲覧数: 6997
Re: Dxlibで二次元配列のマップチップとの当たり判定について
Bottom2で判定しているところはBottom2==0の条件付きですね。
つまり正しくは
if(ジャンプフラグが0なら && Bottom1==0 && Bottom2==0)です。
つまり正しくは
if(ジャンプフラグが0なら && Bottom1==0 && Bottom2==0)です。
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: Dxlibで二次元配列のマップチップとの当たり判定について
- 返信数: 10
- 閲覧数: 6997
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,...
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: Dxlibで二次元配列のマップチップとの当たり判定について
- 返信数: 10
- 閲覧数: 6997
Re: Dxlibで二次元配列のマップチップとの当たり判定について
これは少しこちらも勘違いしてましたが、上ボタンが押されたら上、下ボタンが押されたら下に移動する事
を当たり判定のチェック前に行ってください。もちろん、左ボタンが押されたら左に移動し、当たり判定をチェック
し、右ボタンが押されたら右に移動し、当たり判定をチェックしてください。もう十分なほどヒントは
与えたはずです。
を当たり判定のチェック前に行ってください。もちろん、左ボタンが押されたら左に移動し、当たり判定をチェック
し、右ボタンが押されたら右に移動し、当たり判定をチェックしてください。もう十分なほどヒントは
与えたはずです。
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: Dxlibで二次元配列のマップチップとの当たり判定について
- 返信数: 10
- 閲覧数: 6997
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...
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: 大学の課題です。ヒントだけでもいいのでください 再帰関数です
- 返信数: 15
- 閲覧数: 8545
Re: 大学の課題です。ヒントだけでもいいのでください 再帰関数です
かずまさんへ >コンパイラは何を使っていますか? >警告のメッセージが出ませんか? 今使っているPCがWindows環境ですが、かなり重い(UnityとかVisualStudio2015とか重すぎる) ので未だにBorlandC++5.5Compilerを使っています。 警告は特に出なかったです。ローカル配列変数を返す関数がまずかったのは 10年前からなんとなく知っていたのですが、何故かは分からなかったです。 >>なぜ次のように素直に書かないのですか? while (v >= 0) これは、未だにファミコンプログラムのアセンブラの癖が あって、cとアセンブラ、それからVisualBasicの違...
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: 大学の課題です。ヒントだけでもいいのでください 再帰関数です
- 返信数: 15
- 閲覧数: 8545
Re: 大学の課題です。ヒントだけでもいいのでください 再帰関数です
問題5をやってみましたが、これもあまり出来なかったです。 まずfgetsで一行の文字列を取得しようとして、その文字列の中の空白を,に変えて sscanfで値を得ようとしたのですが、あまりにも多い数字の場合、sscanfのポインタを 受け取る引数の変数が場合によって変わってしまう為、難しかったので、ここはscanfで 誤魔化しました。 どうすれば場合によって引数の数が変わる関数を作るのかが分からなかったのです。 1つの解決策は関数のC++の関数のオーバーロードだと思ったのですが、今回は見送りました。 #include<stdio.h> #define MAX 20 int main() { in...
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: 大学の課題です。ヒントだけでもいいのでください 再帰関数です
- 返信数: 15
- 閲覧数: 8545
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...
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: Dxライブラリの3D図形の回転
- 返信数: 4
- 閲覧数: 3356
Re: Dxライブラリの3D図形の回転
https://howto.clip-studio.com/library/c ... etasequoia
ここでメタセコイアの考え方やモデリングのやり方を覚えました。
また、メタセコイアが使えれば(大分操作方法が違いますが)Blenderに応用が利きますよ。
ここでメタセコイアの考え方やモデリングのやり方を覚えました。
また、メタセコイアが使えれば(大分操作方法が違いますが)Blenderに応用が利きますよ。
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: Dxライブラリの3D図形の回転
- 返信数: 4
- 閲覧数: 3356
Re: Dxライブラリの3D図形の回転
恐らくモデリングが苦手?だからかもしれないですが、
3Dのゲームを本格的に作るならモデリングできる仲間を探すか、自作するか、ネットで素材を
探すしかないと思いますよ。
3Dのゲームを本格的に作るならモデリングできる仲間を探すか、自作するか、ネットで素材を
探すしかないと思いますよ。
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: Dxlibで二次元配列のマップチップとの当たり判定について
- 返信数: 10
- 閲覧数: 6997
Re: Dxlibで二次元配列のマップチップとの当たり判定について
下方向に補正する場合、Y座標=(小数切り捨て)(Y座標/マップチップのサイズ)*マップチップのサイズ
にしてください。入力した文章が間違えてました。すみません。
にしてください。入力した文章が間違えてました。すみません。
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: Dxlibで二次元配列のマップチップとの当たり判定について
- 返信数: 10
- 閲覧数: 6997
Re: Dxlibで二次元配列のマップチップとの当たり判定について
まずは、tuto_mapdata[TUTO_MAX_HEIGHT][TUTO_MAX_WIDTH] 内のマップデータを指定の座標から 取得する関数を何を参考にしてもいいので作ってみてください。そして取得した元の座標を小さなポリゴンでも画像 でもいいので(自分だったら円を描画命令で描く)描画してください。 そうすることにより、どこが判定中なのか丸わかりだと思うのです。 ちなみにマップデータの取得方法を日本語で書きます。 int マップデータを取得する関数func(int 調べたいX座標,調べたいY座標) { サイズ=マップチップのサイズ; return tuto_mapdata[(小数部切り捨て...
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: DirectXでC++を用いた3Dゲームのジャンプ処理について
- 返信数: 2
- 閲覧数: 2634
Re: DirectXでC++を用いた3Dゲームのジャンプ処理について
プチコンでデバッグしてたら全く動きませんでした。なのでヒントをいくつか紹介します。 (手軽に使えるし、いちいちc++でビルドするのも面倒なので) まず、重力のGravityが0だと無重力になるので(ジャンプできるなら) 上に上がり続ける事でしょう。こちらではジャンプパワーを20.0、重力を0.5で良い感じになりました。 それから、正の数をジャンプのパワーとしてる以上、加算だと 下に下がってしまうと思いますが、これはプチコンと(DirectX)のY軸の座標系の違いでしょうね。 あと、ジャンプパワーを減算加算しているブロックのif文はジャンプフラグが立っていないと 正しく動きませんよ。地面より下に...
- 5年前
- フォーラム: C言語何でも質問掲示板
- トピック: c言語での三角形の面積の求め方
- 返信数: 7
- 閲覧数: 7934
Re: c言語での三角形の面積の求め方
値が引き算によって絶対値を求めるやり方なら例えばa-bの場合、変数bの方が大きい場合、
負数になります。これではいくら引き算で絶対値を求めてもうまくいきません。
なので、if文で負数になりそうな場合を調べて以下のような感じでどうでしょうか?
if(aがbより大きければ)TheAbs=a-●; else if(aよりbが大きければ) TheAbs=●-●;
負数になります。これではいくら引き算で絶対値を求めてもうまくいきません。
なので、if文で負数になりそうな場合を調べて以下のような感じでどうでしょうか?
if(aがbより大きければ)TheAbs=a-●; else if(aよりbが大きければ) TheAbs=●-●;
- 6年前
- フォーラム: C言語何でも質問掲示板
- トピック: 整数商, 余り
- 返信数: 7
- 閲覧数: 14339
Re: 整数商, 余り
割り算ルーチンは現代のCPUでは命令として使えますが、この割り算ルーチン を作るメリットは、割り算の仕組みをアルゴリズムで考えさせるという意味のほかには 遅いCPUのクロスアセンブラで割り算命令がサポートされてなく、 割り算ルーチンを自作する事が有効手段のように思えますが、 それが全てでかつ正しいかどうかは分かりません。 では、まず15÷3は手計算じゃなくて暗算で5と分かりますが、 15-3=12-3=9-3=6-3=3-3=0 と割る数である3を何回引けば、3より下になるかを考える事ができます。 この場合15÷3=5です。 余りが無い割り算の例を出してしまったので、↓の割り算はどうでしょうか...
- 6年前
- フォーラム: C言語何でも質問掲示板
- トピック: fwrite_セーブデータ
- 返信数: 16
- 閲覧数: 8347
Re: fwrite_セーブデータ
http://free.pjc.co.jp/Zlib/indexold.html
DLLバージョンのzlibの解凍・圧縮のソースを探していたのですが、
なかなか見つからず結局上のページに辿り着きました。
コマンドライン上で動くようですが、デバッグしやすいように工夫されているとの事なので
使ってみてはどうでしょうか?
DLLバージョンのzlibの解凍・圧縮のソースを探していたのですが、
なかなか見つからず結局上のページに辿り着きました。
コマンドライン上で動くようですが、デバッグしやすいように工夫されているとの事なので
使ってみてはどうでしょうか?
- 6年前
- フォーラム: C言語何でも質問掲示板
- トピック: 構造体<2次元直交座標系における2点間の距離>
- 返信数: 5
- 閲覧数: 5211
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...
- 6年前
- フォーラム: C言語何でも質問掲示板
- トピック: 構造体<2次元直交座標系における2点間の距離>
- 返信数: 5
- 閲覧数: 5211
Re: 構造体<2次元直交座標系における2点間の距離>
ルートを求めるにはc言語では、sqrt()という関数を使います。
あとは、三平方の定理で求まります。
√(X*X+Y*Y)です。
とここで、Xとは2点間のX座標の差分、Yとは2点間のY座標の差分を指します。
あとは、三平方の定理で求まります。
√(X*X+Y*Y)です。
とここで、Xとは2点間のX座標の差分、Yとは2点間のY座標の差分を指します。
- 6年前
- フォーラム: C言語何でも質問掲示板
- トピック: 3Dゲームのフィールドのテクスチャについて
- 返信数: 6
- 閲覧数: 8578
Re: 3Dゲームのフィールドのテクスチャについて
マップチップを3Dデータで使うつもりならマップチップを2Dゲームで使ったように 3D版マップエディタを作ってみてはどうかと思いました。 自分だったら、csv形式で出力か、もしくはバイナリファイルで 出力させて、ZX平面にテクスチャーマッピングさせると思います。 もちろん、フィールドは坂道があるので、そう簡単にはいかないですが、 考え方としては、まずモデルにテクスチャーを張っていき高低差のあるモデルデータを10~255種類作ります。 そしたら、マップエディタを使って、Y軸の上から見たテクスチャーをマップエディタに読み込ませます。 そしたら、あとはマップをマップエディタで作り、ファイルを出力させて...
- 6年前
- フォーラム: C言語何でも質問掲示板
- トピック: fwrite_セーブデータ
- 返信数: 16
- 閲覧数: 8347
Re: fwrite_セーブデータ
暗号化としては、xorが一番シンプルでかつ簡単だと思います。 圧縮としては、ランレングス圧縮が一番シンプルでかつ簡単だと思います。 詳しく圧縮について知りたいのであれば、アマゾンのギフトカードをコンビニ等で購入したうえで Windows版のキンドルというソフトウェアをインストールしたら Cマガジンの1998年10月の記事を108円で購入すると、 特集記事の第3章に圧縮処理の技法が載っているので 圧縮処理のヒントになると思いますが、大分古いので、ネット上の圧縮アルゴリズムも調べてみる事も おすすめします。 サンプルコードを載せておきます。 #include<stdio.h>//暗号化プログラム ...