検索結果 48 件

by littlestream
2年前
フォーラム: C言語何でも質問掲示板
トピック: 球と円柱の当たり判定
返信数: 10
閲覧数: 7686

Re: 球と円柱の当たり判定

DXLIB依存なら球とモデルの当たり判定という関数があります。
https://dxlib.xsrv.jp/function/dxfunc_3 ... .html#R9N5
by littlestream
2年前
フォーラム: C言語何でも質問掲示板
トピック: 球と円柱の当たり判定
返信数: 10
閲覧数: 7686

Re: 球と円柱の当たり判定

球と球の当たり判定を応用して座標毎に行うのはどうでしょうか?
円柱は下底が円なのでそれに高さで伸ばしてみるのと
球はそのまま球の当たり判定へ組み込めるので

球と円柱のあらゆる座標との当たり判定でどうでしょうか?
自分はそれを応用してレイトレーシングでソフトウェアレンダリングしたことがあります。

確か球と球の当たり判定は球Aと球Bと半径RA,RBとすると
(AX-BX)^2+(AY-BY)^2+(AZ-BZ)^2<(RA+RB)^2
だと思います。
by littlestream
2年前
フォーラム: C言語何でも質問掲示板
トピック: int型からchar*にする方法を教えて下さい、、、
返信数: 6
閲覧数: 5913

Re: int型からchar*にする方法を教えて下さい、、、

https://dxlib.xsrv.jp/function/dxfunc_g ... tml#R17N22

DrawFormatStringToHandleもありますが、こちらのほうがループ内だと動作は軽いはずです。
by littlestream
2年前
フォーラム: C言語何でも質問掲示板
トピック: int型からchar*にする方法を教えて下さい、、、
返信数: 6
閲覧数: 5913

Re: int型からchar*にする方法を教えて下さい、、、

みけCATさんの言った通り
printfのように使えるDrawFormatStringを使った方がオススメです。

tekikazuをint型の変数と仮定して表示するなら
DrawFormatString(x座標,y座標,GetColor,"tekikazu=%d",tekikazu);
だけです。
by littlestream
2年前
フォーラム: C言語何でも質問掲示板
トピック: 敵を倒しきったらEND画面へ・・・
返信数: 12
閲覧数: 7191

Re: 敵を倒しきったらEND画面へ・・・

コード:

if (Teki1Y[j] > WORLD_HEIGHT && Teki1Y[j] < -65 && Teki1X[j] > WORLD_WIDTH && Teki1X[j] < 0)
{
	Tekikazu += 1;
	Teki1Flag[j]=0;
}
上のif文内のANDを全てORにするとENDに行くかもしれません。
by littlestream
2年前
フォーラム: C言語何でも質問掲示板
トピック: 敵を倒しきったらEND画面へ・・・
返信数: 12
閲覧数: 7191

Re: 敵を倒しきったらEND画面へ・・・

コード:

if (Teki1Y[j] > WORLD_HEIGHT && Teki1Y[j] < -65 && Teki1X[j] > WORLD_WIDTH && Teki1X[j] < 0)
{
	Tekikazu += 1;
}
上の敵数をカウントしている条件式は上のように<が>に>が<になっているのと、敵を作った時に-64と
していたので瞬時にゲームが終わっているようだと思います。なのでy座標の判定式を-64から-1した-65に修正
したほうが良いと思います。
by littlestream
2年前
フォーラム: C言語何でも質問掲示板
トピック: 敵を倒しきったらEND画面へ・・・
返信数: 12
閲覧数: 7191

Re: 敵を倒しきったらEND画面へ・・・

cupaさんへ

描画された時点のカウント変数がどう変化しているか確かめるのと
ちょっとcupaさんの言っている事が卓上デバッグだと難しいので一番上のソースコードを
使ってデバッグしてみます。
by littlestream
2年前
フォーラム: C言語何でも質問掲示板
トピック: 敵を倒しきったらEND画面へ・・・
返信数: 12
閲覧数: 7191

Re: 敵を倒しきったらEND画面へ・・・

やりたいことは次の通りではなく何故取り逃がしてしまうものを描画毎にtekikazu++;してしまうのか 分かりません。そんな事をしたら、tekikazu>TEKI_MAXまで簡単に推移してしまう気がしますが もしかして、tekikazu++;したとしても敵を倒した直後に別の変数でも使うつもりなのでしょうか? //自分が勘違いした場合の処理 if(敵と弾が当たったら) { tekikazu++; } if(tekikazu>TEKI_MAX) { DrawFormatString(X,Y,GetColor(255,rand()%255,0),"CLEAR!!"); status=END; }//...
by littlestream
2年前
フォーラム: C言語何でも質問掲示板
トピック: 爆発アニメーションに関して、、、
返信数: 4
閲覧数: 4600

Re: 爆発アニメーションに関して、、、

いえ、特に工夫して作ったコードではなくて配列だけを使った場合は
どのように書くかだけ考慮したソースです。

本来ならば自分はとある方のソースを参考にして
c言語だけでファミコンのSTGを作った時でも構造体の配列を
使っていました。

そのせいでノロノロでしたが。
by littlestream
2年前
フォーラム: C言語何でも質問掲示板
トピック: 爆発アニメーションに関して、、、
返信数: 4
閲覧数: 4600

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"); ...... .... ... .. . と以下同じように配列に代入し...
by littlestream
2年前
フォーラム: C言語何でも質問掲示板
トピック: 敵がうまく表示できません、、、
返信数: 7
閲覧数: 6101

Re: 敵がうまく表示できません、、、

はじめまして!littlestramというものです。 変数の使いかたが若干不自然なのと これだと敵の種類が増えたらもっとグローバル変数 を作らなくてはいけなくなるかもしれません。 なので、構造体(C++だとクラス扱い)で 変数をまとめてみます。 構造体という言葉に難しさを覚えたとしたら この先に行うゲーム作りが冗長になってしまいます。 まず、敵の構造体からです。 typedef struct Enemy_{ double x,y; double hp; bool useflag; int ImageHandle; int kind; //こんな感じの情報が }Enemy_; #define M...
by littlestream
3年前
フォーラム: C言語何でも質問掲示板
トピック: 規則がわからりません
返信数: 4
閲覧数: 4079

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...
by littlestream
3年前
フォーラム: C言語何でも質問掲示板
トピック: 学校の課題について
返信数: 8
閲覧数: 5316

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*=...
by littlestream
3年前
フォーラム: C言語何でも質問掲示板
トピック: 左クリックの入力が一度しかできない
返信数: 3
閲覧数: 3472

Re: 左クリックの入力が一度しかできない

これはプログラミング中にマウスでもキーボードでも起こるうる現象ですが、
チャタリングを防止する処理を行えばOKです。

具体的には、前のフレームのマウス入力やキーボード入力を受け取った変数を今の
受け取った変数と比較すればOKです。これでチャタリングを防止できます。

擬似言語っぽく書くなら
static int マウスの変数;

if(!マウスの変数 && マウスの入力を判定する関数()==1)
{
//ここで判定完了!!
}
マウスの変数=マウスの入力を判定する関数();
by littlestream
4年前
フォーラム: C言語何でも質問掲示板
トピック: マップチップスクロールについて
返信数: 2
閲覧数: 9311

Re: マップチップスクロールについて

search.php?keywords=%E3%83%9E%E3%83%83% ... 3%E3%83%97

この掲示板の過去ログは見ましたか?
検索するだけでもヒントになりますよ。
by littlestream
4年前
フォーラム: C言語何でも質問掲示板
トピック: マップデータの初期値を読み込んで画像を描画した後、敵などの画像を動かしたい。
返信数: 7
閲覧数: 6724

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

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

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

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

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

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

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

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

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

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

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

コード:

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

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

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

Re: 実行できません

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

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

ちなみに、この応用で2進数や16進数に変換することが出来ます。
by littlestream
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...
by littlestream
5年前
フォーラム: C言語何でも質問掲示板
トピック: どなたか教えてください。構造体について
返信数: 9
閲覧数: 5998

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

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

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

Re: ハッシュについて

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

コード:

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

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

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

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

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

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

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

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

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

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

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

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

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

これは少しこちらも勘違いしてましたが、上ボタンが押されたら上、下ボタンが押されたら下に移動する事
を当たり判定のチェック前に行ってください。もちろん、左ボタンが押されたら左に移動し、当たり判定をチェック
し、右ボタンが押されたら右に移動し、当たり判定をチェックしてください。もう十分なほどヒントは
与えたはずです。
by littlestream
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...
by littlestream
5年前
フォーラム: C言語何でも質問掲示板
トピック: 大学の課題です。ヒントだけでもいいのでください 再帰関数です
返信数: 15
閲覧数: 8546

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

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

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

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

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
5年前
フォーラム: C言語何でも質問掲示板
トピック: Dxライブラリの3D図形の回転
返信数: 4
閲覧数: 3356

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

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

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

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

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

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

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

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

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

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

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

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

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

Re: 整数商, 余り

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

Re: fwrite_セーブデータ

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

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

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

ルートを求めるにはc言語では、sqrt()という関数を使います。
あとは、三平方の定理で求まります。

√(X*X+Y*Y)です。

とここで、Xとは2点間のX座標の差分、Yとは2点間のY座標の差分を指します。
by littlestream
6年前
フォーラム: C言語何でも質問掲示板
トピック: 3Dゲームのフィールドのテクスチャについて
返信数: 6
閲覧数: 8583

Re: 3Dゲームのフィールドのテクスチャについて

マップチップを3Dデータで使うつもりならマップチップを2Dゲームで使ったように 3D版マップエディタを作ってみてはどうかと思いました。 自分だったら、csv形式で出力か、もしくはバイナリファイルで 出力させて、ZX平面にテクスチャーマッピングさせると思います。 もちろん、フィールドは坂道があるので、そう簡単にはいかないですが、 考え方としては、まずモデルにテクスチャーを張っていき高低差のあるモデルデータを10~255種類作ります。 そしたら、マップエディタを使って、Y軸の上から見たテクスチャーをマップエディタに読み込ませます。 そしたら、あとはマップをマップエディタで作り、ファイルを出力させて...
by littlestream
6年前
フォーラム: C言語何でも質問掲示板
トピック: fwrite_セーブデータ
返信数: 16
閲覧数: 8349

Re: fwrite_セーブデータ

暗号化としては、xorが一番シンプルでかつ簡単だと思います。 圧縮としては、ランレングス圧縮が一番シンプルでかつ簡単だと思います。 詳しく圧縮について知りたいのであれば、アマゾンのギフトカードをコンビニ等で購入したうえで Windows版のキンドルというソフトウェアをインストールしたら Cマガジンの1998年10月の記事を108円で購入すると、 特集記事の第3章に圧縮処理の技法が載っているので 圧縮処理のヒントになると思いますが、大分古いので、ネット上の圧縮アルゴリズムも調べてみる事も おすすめします。 サンプルコードを載せておきます。 #include<stdio.h>//暗号化プログラム ...

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