C言語何でも質問掲示板


アンケートにご協力下さい → >> アンケートフォーム <<

規約と使い方

 
   ポインタについて   
     ・[18724] たかぎ 
     ・[18725] box 
     ・[18726] toyo 
     ・[18727] Diaoler 
   基本的なところで・・ ....   
     ・[18567] piyopiyo 
     ・[18580] たか 
     ・[18583] piyopiyo 
     ・[18584] バグ 
     ・[18623] 管理人 
     ・[18696] イC 
   マウスでクリックした ....   
     ・[18569] メリッサ 
     ・[18571] メリッサ 
     ・[18574] メリッサ 
     ・[18576] 雷 
     ・[18577] バグ 
     ・[18582] ibis 
     ・[18588] メリッサ 
     ・[18589] 経歴2ヶ月 
     ・[18591] 経歴2ヶ月 
     ・[18598] バグ 
     ・[18641] しりうす〜 
     ・[18642] やそ 
     ・[18648] ibis 
     ・[18655] 雷 
     ・[18692] メリッサ 
   無題   
     ・[18386] lbfuvab 
     ・[18387] すく 
     ・[18400] nemui 
     ・[18401] やそ 
     ・[18419] lbfuvab 
     ・[18490] nemui 
     ・[18503] lbfuvab 
     ・[18687] nemui 
   サイコロコロコロ   
     ・[18673] 管理人 
   全角文字列の検索   
     ・[18640] たかぎ 
     ・[18671] overdo 
   隣接リストを作成した ....   
     ・[18639] box 
     ・[18643] そい。 
     ・[18646] box 
     ・[18652] そい。 
     ・[18661] box 
     ・[18667] そい。 
   龍神録プログラミング ....   
     ・[18622] 管理人 
     ・[18662] <kor 
   charからintへ   
     ・[18590] たいちう 
     ・[18609] wid 
     ・[18612] Hermit 
     ・[18614] たか 
     ・[18615] たか 
     ・[18617] wid 
     ・[18619] box 
     ・[18624] 管理人 
     ・[18654] wid 
     ・[18659] 通り 
   ゲームの著作権につい ....   
     ・[18570] Mist 
     ・[18573] たいちう 
     ・[18575] naru 
     ・[18625] 管理人 
     ・[18638] たかぎ 
     ・[18645] たいちう 
     ・[18647] たかぎ 
     ・[18651] たいちう 
   加算するプログラム   
     ・[18480] tkmakwins15 
     ・[18481] β 
     ・[18482] tkmakwins15 
     ・[18486] バグ 
     ・[18488] 雷 
     ・[18493] non 
     ・[18636] やそ 
   売り上げを求めるプロ ....   
     ・[18593] 誠氏 
     ・[18594] 通り 
     ・[18595] 誠氏 
     ・[18596] 通り 
     ・[18597] 誠氏 
     ・[18599] 通り 
     ・[18600] 誠氏 
     ・[18601] たいちう 
     ・[18602] 誠氏 
     ・[18603] 通り 
     ・[18604] 誠氏 
     ・[18605] 誠氏 
     ・[18606] box 
     ・[18611] 誠氏 
     ・[18626] フリオ 
   マップのスクロール   
     ・[18553] 管理人 
     ・[18555] Justy 
     ・[18620] F 
   デバッグ中にフリーズ ....   
     ・[18529] 雷 
     ・[18532] SSSJ 
     ・[18535] たか 
     ・[18536] たか 
     ・[18563] Mist 
     ・[18564] 雷 
     ・[18607] SSSJ 
   VORBISFILE_STATIC.LI ....   
     ・[18559] toyo 
     ・[18586] J 
   RPGが作りたい!   
     ・[18562] たかぎ 
     ・[18585] ランド 
   HTML形式のメール送信 ....   
     ・[18511] バグ 
     ・[18523] バグ 
     ・[18527] 雷 
     ・[18530] バグ 
     ・[18531] バグ 
     ・[18547] 雷 
     ・[18565] バグ 
     ・[18572] バグ 
     ・[18578] 雷 
     ・[18579] バグ 
     ・[18581] 雷 
   constについての質問で ....   
     ・[18446] tor 
     ・[18449] T.K. 
     ・[18450] 組木紙織 
     ・[18451] フリオ 
     ・[18452] T.K. 
     ・[18454] Justy 
     ・[18455] T.K. 
     ・[18458] T.K. 
     ・[18491] 雷 
     ・[18494] T.K. 
     ・[18496] たいちう 
     ・[18544] T.K. 
     ・[18561] たいちう 
     ・[184451216784082] T.K. 
   挿入ソート   
     ・[18518] たかぎ 
     ・[18557] とーる 
   無題   
     ・[18268] lbfuvab 
     ・[18269] kokoro 
     ・[18270] box 
     ・[18271] たかぎ 
     ・[18272] kokoro 
     ・[18273] kokoro 
     ・[18281] すく 
     ・[18284] kokoro 
     ・[18285] box 
     ・[18286] なんとかな〜れ〜 
     ・[18287] なんとかな〜れ〜 
     ・[18288] kokoro 
     ・[18289] kokoro 
     ・[18293] kokoro 
     ・[18294] やそ 
     ・[18296] kokoro 
     ・[18298] Mist 
     ・[18299] やそ 
     ・[18330] フリオ 
     ・[18332] kokoro 
     ・[18335] やそ 
     ・[18356] kokoro 
     ・[18358] Mist 
     ・[18359] フリオ 
     ・[18360] kokoro 
     ・[18361] Mist 
     ・[18373] 管理人 
     ・[18429] kkokoro 
     ・[18517] kokoro 
     ・[18520] Mist 
     ・[18522] 通り 
     ・[18526] kokoro 
     ・[18533] なんとかな〜れ〜 
     ・[18534] box 
     ・[18539] なんとかな〜れ〜 
     ・[18556] フリオ 
   全角文字の制限   
     ・[18459] たかぎ 
     ・[18462] lbfuvab 
     ・[18467] たかぎ 
     ・[18468] lbfuvab 
     ・[18489] 雷 
     ・[18497] バグ 
     ・[18499] lbfuvab 
     ・[18515] たかぎ 
     ・[18516] バグ 
     ・[18519] たかぎ 
     ・[18521] バグ 
   lsコマンド     ....   
     ・[18507] Mist 
     ・[18510] Haru 
     ・[18512] Mist 
     ・[18513] Haru 
   selectの使い方(pope ....   
   ゲームの絵について   
     ・[18465] はね 
     ・[18472] 翡翠 
   派生・・・?   
     ・[18470] たいちう 
   構造体について   
     ・[18466] バグ 
   他マシンと通信してプ ....   
     ・[18461] Justy 
   メモリ確保   
     ・[18424] とーる 
     ・[18425] box 
     ・[18441] とーる 
     ・[18443]  
   無題   
     ・[18408] やそ 
     ・[18412] なんとかな〜れ〜 
     ・[18413] フリオ 
     ・[18430] おぬ 
     ・[18433] やそ 
     ・[18436] おぬ 
     ・[18440] ぴむ 
   Win版CodeWarriorで初 ....   
     ・[18402] Justy 
     ・[18403] ふー 
     ・[18405] Justy 
     ・[18428] ふー 
   アニメーション   
     ・[18353] 木霊 
     ・[18426] クロウ 
   2D見下ろし型アクショ ....   
     ・[18409] やそ 
     ・[18410] てつ 
     ・[18411] やそ 
     ・[18414] Justy 
     ・[18415] 管理人 
     ・[18416] てつ 
     ・[18417] てつ 
     ・[18420] 管理人 
     ・[18422] てつ 
   floatとdoubleの違い   
     ・[18366] Haru 
     ・[18367] Mist 
     ・[18368] 管理人 
     ・[18369] グラウナー 
     ・[18370] Mist 
     ・[18376] たかぎ 
     ・[18389] Justy 
     ・[18396] たかぎ 
     ・[18406] グラウナー 
   ブロック崩し   
     ・[18392] ランド 
     ・[18393] なんとかな〜れ〜 
     ・[18399] compile 
   DxLib.slnが開けません ....   
     ・[18382] 管理人 
     ・[18395] じゃが 
     ・[18397] toyo 
     ・[18398] じゃが 
   無題   
     ・[18309] 誠氏 
     ・[18310] バグ 
     ・[18318] 管理人 
     ・[18346] yasya 
     ・[18348] たかぎ 
     ・[18350] yasya 
     ・[18375] 管理人 
     ・[18378] 管理人 
     ・[18379] 管理人 
     ・[18383] yasya 
     ・[18385] KEV 
     ・[18388] yasaya 
     ・[18391] 管理人 
   3Dゲームを作りたいの ....   
     ・[18295] やそ 
     ・[18297] バグ 
     ・[18300] やそ 
     ・[18302] Mist 
     ・[18319] 管理人 
     ・[18354] notosu 
     ・[18357] たかぎ 
     ・[18380] notosu 
   警告がでてしまいます ....   
     ・[18326] box 
     ・[18328] tkmakwins15 
     ・[18329] Mist 
     ・[18331] tkmakwins15 
     ・[18334] Mist 
     ・[18337] Mist 
     ・[18343] たかぎ 
     ・[18352] tkmakwins15 
     ・[18355] バグ 
     ・[18362] lbfuvab 
     ・[18363] バグ 
     ・[18364] あや 
     ・[18372] toyo 
     ・[18377] あや 
   質問   
     ・[18374] 管理人 
   シェルの作成について   
     ・[18333] たかぎ 
     ・[18344] ペニンシュラ 
     ・[18349] たかぎ 
   文字列処理について   
     ・[18168] box 
     ・[18182] へろり 
     ・[18186] GPGA 
     ・[18187] やそ 
     ・[18188] たかぎ 
     ・[18196] へろり 
     ・[18199] GPGA 
     ・[18202] やそ 
     ・[18203] box 
     ・[18206] たかぎ 
     ・[18267] へろり 
     ・[18345] Sleepy 
     ・[18347] たかぎ 
   配列を逆順にする   
     ・[18339] たいちう 
     ・[18340] 誠氏 
     ・[18341] box 
     ・[18342] グラウナー 
   インストールできませ ....   
     ・[18153] たかぎ 
     ・[18278] じゃが 
     ・[18279] Justy 
     ・[18283] <kor 
     ・[18336] じゃが 
   シューティング-自機消 ....   
     ・[18166] 管理人 
     ・[18327] kou 
   New Loading の表示方 ....   
     ・[18311] Mist 
     ・[18312] バグ 
     ・[18313] バグ 
     ・[18314] 誠氏 
     ・[18315] 管理人 
     ・[18316] 誠氏 
     ・[18317] 管理人 
     ・[18325] 誠氏 
   間違ってる箇所がわか ....   
     ・[18322] GPGA 
     ・[18324] グラウナー 
   テキストファイルから ....   
     ・[18261] Mist 
     ・[18262] toyo 
     ・[18263] 西村 
     ・[18264] Mist 
     ・[18290] 西村 
     ・[18321] 西村 
   無題   
     ・[18303] Mist 
     ・[18304] box 
     ・[18307] やぶt 

Name: Diaoler  ..ぴよぴよ(593ポイント)   Date: 2008/07/18(金) 08:29   No:18722       
Title: ポインタについて    
くだらない質問ですが、以前から疑問に思っていたので、回答お願いします。


int *a, *b;

このように定義されているポインタを、以下のように書き換えることは可能ですか?

int* a, b;


72ポイント を手に入れた。


Name: たかぎ [URL]  ..熟練のプログラマー(49,326ポイント)   Date: 2008/07/18(金) 08:31   No:18724     
Title: Re:ポインタについて    
不可能です。


2倍のポイントを手に入れた! 12ポイント を手に入れた。

Name: box  ..ハッカー(116,668ポイント)   Date: 2008/07/18(金) 08:55   No:18725     
Title: Re:ポインタについて    
> int* a, b;

これは、int *型のaとint型のbを定義していることになります。
bはポインタ変数ではありません。


28ポイント を手に入れた。

Name: toyo  ..中級者(13,283ポイント)   Date: 2008/07/18(金) 09:04   No:18726     
Title: Re:ポインタについて    
typedefすればこういうことはできます

typedef int* PINT;

PINT a, b; // a も b も int* 型



34ポイント を手に入れた。

Name: Diaoler  ..ぴよぴよ(662ポイント)   Date: 2008/07/18(金) 09:12   No:18727     
Title: Re:ポインタについて    
皆さん、回答ありがとうございますm(__)m


どうやら出来ないようですね(^_^;)

でも、自分で型を定義すればいいというのは気づきませんでした。
早速やってみます^^


69ポイント を手に入れた。



Name: イC  ..ぴよぴよ(37ポイント)   Date: 2008/07/14(月) 13:53   No:18500       
Title: 基本的なところで・・・    
現在、プログラミングの館で紹介されているプログラムをやっていたのですが、シューティングの分野になったとたん画像(char.png)が表示されなくなってしまいました。原因を教えてください。
それ以前は普通に表示されていました。


37ポイント を手に入れた。


Name: piyopiyo  ..ぴよぴよ(104ポイント)   Date: 2008/07/15(火) 12:47   No:18567     
Title: Re:基本的なところで・・・    
その理由はブラウザの設定だと思います。私もPC暦半年でC言語勉強中ですが最近まで理由がわからなくて
とても困っていたんですよね^^;
メニューバー→ツール→インターネットオプション→詳細設定→マルチメディア

マルチメディアの欄はすべてチェックを入れておいても何も問題はないとおもいます。
試してみてくださいね^^ それでもだめなら、私には何も協力できません><


104ポイント を手に入れた。

Name: たか  ..かけだし(1,682ポイント)   Date: 2008/07/15(火) 16:01   No:18580     
Title: Re:基本的なところで・・・    
プログラムでの問題でしたか?
それとも、piyopiyoさんのおっしゃるようにブラウザの問題でしょうか?


37ポイント を手に入れた。

Name: piyopiyo  ..ぴよぴよ(117ポイント)   Date: 2008/07/15(火) 16:18   No:18583     
Title: Re:基本的なところで・・・    
あ、たかさんの言う通りですね。勝手ブラウザの問題に解釈してました;
コンバイルしたときに表示されないのであればどこかソースに間違いがあるのでは
ないかと思います。


71ポイント を手に入れた。

Name: バグ  ..比類無きプログラマー(97,158ポイント)   Date: 2008/07/15(火) 16:21   No:18584     
Title: Re:基本的なところで・・・    
気になったので…

×コンバイル
○コンパイル


2倍のポイントを手に入れた! 42ポイント を手に入れた。

Name: 管理人 [URL]  ..伝説のハッカー(624,078ポイント)   Date: 2008/07/16(水) 01:03   No:18623     
Title: Re:基本的なところで・・・    
原因を教えて下さいと言われても、推測でしかわかりませんが^^;

画像分割部は
LoadDivGraph( "char.png" , 16 , 4 , 4 , 32 , 32 , image ) ;//画像を分割してimage配列に保存

とかかれていますか?
格納したimage内の識別番号は何になっていますか?
ちゃんと0以外がはいっていますか?


81ポイント を手に入れた。

Name: イC  ..ぴよぴよ(131ポイント)   Date: 2008/07/17(木) 23:30   No:18696     
Title: Re:基本的なところで・・・    
返事が遅れてすみません。
皆様、こんなアバウトな質問に答えていただきありがとうございます。
何分、学校で作業しているため、なかなか思うように事が進みません。
とりあえず、皆様から頂いた助言を参考にして作業していきたいと思います。
また分からないことが、できたときはまた質問させていただきます。


94ポイント を手に入れた。



Name: メリッサ  ..ぴよぴよ(140ポイント)   Date: 2008/07/15(火) 13:01   No:18568       
Title: マウスでクリックした位置にトコトコ歩くには?    
キャラクターをマウスでクリックした位置に トコトコ歩くようなプログラムを作りたいのですが、全く思いつきません。教えてください。

プレゼンハムアルゴリズムで、最短距離を算出して、最短経路をたどるようにしたいんですが、過去の履歴にマウスで移動というものが、検索で出なかったため、そういった質問はないのかと思い書きました。


140ポイント を手に入れた。


Name: メリッサ  ..ぴよぴよ(186ポイント)   Date: 2008/07/15(火) 13:03   No:18569     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
ラグナロクオンラインなど、ネットゲームで良く使う手法の歩き方をしてみたいということです。

2倍のポイントを手に入れた! 46ポイント を手に入れた。

Name: メリッサ  ..ぴよぴよ(381ポイント)   Date: 2008/07/15(火) 13:46   No:18571     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
#include "DxLib.h"
#include <stdlib.h>
#include <math.h>

typedef struct{
int x,y,img,muki,walking_flag;
}ch_t;



int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){

int image[16];
char Key[256];
ch_t ch;

char StrBuf[ 128 ] , StrBuf2[ 32 ];
int MouseX , MouseY ;
int StringCr , BoxCr ;

if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理

// マウスを表示状態にする
SetMouseDispFlag( TRUE ) ;

// 白色の値を取得
StringCr = GetColor( 255 , 255 , 255 ) ;

// 黒の値を取得
BoxCr = GetColor( 0 , 0 , 0 ) ;

ch.x =320;
ch.y =160;
ch.walking_flag=0;
ch.muki=3;

int MouseXX, MouseYY;
int startX;
int startY;
int deltaX;
int deltaY;
int stepX, stepY;
int fraction;


SetDrawScreen( DX_SCREEN_BACK ) ; //描画先を裏画面に設定
LoadDivGraph( "char.png" , 16 , 4 , 4 , 32 , 32 , image ) ;//画像を分割してimage配列に保存

while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されると終了


// マウスの位置を取得
GetMousePoint( &MouseX , &MouseY ) ;

// 表示する文字列を作成
{
lstrcpy( StrBuf , "座標 X" ) ; // 文字列"座標 X"をStrBufにコピー
itoa( MouseX , StrBuf2 , 10 ) ; // MouseXの値を文字列にしてStrBuf2に格納
lstrcat( StrBuf , StrBuf2 ) ; // StrBufの内容にStrBuf2の内容を付け足す
lstrcat( StrBuf , " Y " ) ; // StrBufの内容に文字列" Y "を付け足す
itoa( MouseY , StrBuf2 , 10 ) ; // MouseYの値を文字列にしてStrBuf2に格納
lstrcat( StrBuf , StrBuf2 ) ; // StrBufの内容にStrBuf2の内容を付け足す
}

// 画面左上の領域に黒い四角を描き前に描いてあった
// 文字列を消す
DrawBox( 0 , 0 , 200 , 32 , BoxCr , TRUE ) ;

// 座標文字列を描く
DrawString( 0 , 0 , StrBuf , StringCr ) ;


if( ProcessMessage() == -1 )
{
break ; // エラーが起きたらループを抜ける
}

if( ( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0 )
{

MouseXX = MouseX;
MouseYY = MouseY;
startX = ch.x;
startY = ch.y;
deltaX = MouseXX - ch.x;
deltaY = MouseYY - ch.y;


if (deltaX < 0)
stepX = -1;
else
stepX = 1;
if (deltaY < 0)
stepY = -1;
else
stepY = 1;

deltaX = abs(deltaX * 2);
deltaY = abs(deltaY * 2);


if (deltaX > deltaY) {
fraction = deltaY - deltaX / 2;
while (ch.x != MouseXX) {
if (fraction >= 0) {
ch.y += stepY;
ch.img=image[12];
fraction -= deltaX;
DrawGraph( ch.x , ch.y , ch.img , TRUE ) ;//画像を描画
}
ch.x += stepX;
fraction += deltaY;
ch.img=image[12];
DrawGraph( ch.x , ch.y , ch.img , TRUE ) ;//画像を描画
}

}else {
fraction = deltaX - deltaY / 2;
while (ch.y != MouseYY) {
if (fraction >= 0) {
ch.x += stepX;
ch.img=image[12];
fraction -= deltaY;
DrawGraph( ch.x , ch.y , ch.img , TRUE ) ;//画像を描画
}
ch.y += stepY;
fraction += deltaX;
DrawGraph( ch.x , ch.y , ch.img , TRUE ) ;//画像を描画
}
}



// 押されている

}
else
{
// 押されていない
ch.img=image[12];


}

DrawGraph( ch.x , ch.y , ch.img , TRUE ) ;//画像を描画
ScreenFlip();
}

DxLib_End();
return 0;
}

2Dキャラクターを2Dマップ上で動かすつもりです。
現在このようなプログラムです。
一瞬で移動するのをトコトコあるくようにしたいのですが。
どなかた教えていただけないでしょうか?


195ポイント を手に入れた。

Name: メリッサ  ..ぴよぴよ(653ポイント)   Date: 2008/07/15(火) 13:56   No:18574     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
コードが見にくい状態で投稿してしまいました。
すいません。


272ポイント を手に入れた。

Name:  ..プログラマー(33,915ポイント)   Date: 2008/07/15(火) 14:42   No:18576     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
座標指定かな〜とか勝手に思っていますが、順路を考えるような思考アルゴリズムがいるかと

座標処理なら、通る道の座標を順残にを格納その通りに歩かせる


斜めに進めるなら
同時に減らす

無理なら片方づつ減らす

でどうでしょうか?


67ポイント を手に入れた。

Name: バグ  ..比類無きプログラマー(96,900ポイント)   Date: 2008/07/15(火) 15:04   No:18577     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
1:マウスカーソルの座標を取得する
2:現在のキャラクターの座標を取得する
3:1と2で取得した2つの点を結ぶ直線の傾きを求める
4:3で求めた角度へキャラクターを一定量移動させる
5:1へ戻る

これでいいんじゃないでしょうか?
三角関数を使えばそんなに難しくはないと思いますよ。


2倍のポイントを手に入れた! 172ポイント を手に入れた。

Name: ibis  ..中級者(11,066ポイント)   Date: 2008/07/15(火) 16:06   No:18582     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
ループ中にWaitTimer関数を入れたらゆっくり移動するようになりそうですね、多分。

39ポイント を手に入れた。

Name: メリッサ  ..かけだし(1,228ポイント)   Date: 2008/07/15(火) 17:16   No:18588     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
まだ解決していません。

>座標指定かな〜とか勝手に思っていますが、順路を考えるような思考アルゴリズムがいるかと
>座標処理なら、通る道の座標を順残にを格納その通りに歩かせる

>斜めに進めるなら
>同時に減らす
>無理なら片方づつ減らす
>でどうでしょうか?

経路の配列を格納しているので、その通りに歩かせることは出来ています。
それが、速すぎて、一瞬で移動します。


>1:マウスカーソルの座標を取得する
>2:現在のキャラクターの座標を取得する
>3:1と2で取得した2つの点を結ぶ直線の傾きを求める
>4:3で求めた角度へキャラクターを一定量移動させる
>5:1へ戻る

>これでいいんじゃないでしょうか?
>三角関数を使えばそんなに難しくはないと思いますよ。

直線の傾きを求めて、求めた角度へキャラクターを一定量移動させるにも、たどる経路の位置を格納するべきだと思うんですが、その経路をたどるときにやっぱし瞬間移動するんじゃないですかね?



>ループ中にWaitTimer関数を入れたらゆっくり移動するようになりそうですね、多分。

その方法はやってみたんですが、できません。
クリックした後にキャラクターはすぐに移動せず、その場でキャラクターが止まり、数秒たったら、瞬間移動するっていうものになりました。

結局トコトコと経路をたどって歩くようにできませんね。

ファイヤーエンブレムなどのシュミレーションゲームみたくすればいいのかなと思ったんですが、シュミレーションゲームの経路をたどって歩かせるプログラムの話やプログラミングのサイトが見つからないですね。
ターン性を導入する物ではないので、常にモンスターも自キャラも動いてるって形にしたいんですが。

ラグナロクオンラインのようなタイプにしたいのですが。。

勉強不足です。
とりあえず解決してません。


575ポイント を手に入れた。

Name: 経歴2ヶ月  ..ぴよぴよ(3ポイント)   Date: 2008/07/15(火) 17:30   No:18589     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
とりあえず、自分が館と龍神録を参考に追尾ってどうすればできるのか
動くA点に追いかけるB点をどう追尾させるか考えたやつです。

参考にならないと思うけれどシューティングからそのままコピペしました。


for(int i=0;i<ENEMY_TOTAL_NUM;i++){
if(PointShot[i].flag==1){
for(int j=0;j<ENEMY_TOTAL_NUM;j++){
if(PointShot[i].PointShots[j].flag==1){//出現中のポイントを抽出する
PointShot[i].PointShots[j].angle = atan2(Player.y+PLAYER_SIZE-PointShot[i].PointShots[j].y,Player.x-PointShot[i].PointShots[j].x+PLAYER_SIZE); //角度を決める
PointShot[i].PointShots[j].disp_angle =atan2(Player.y+PLAYER_SIZE-PointShot[i].PointShots[j].y,Player.x-PointShot[i].PointShots[j].x+PLAYER_SIZE); //向きを変える
PointShot[i].PointShots[j].x+=1*PATTERN1SPEED*cos(PointShot[i].PointShots[j].angle); //追尾させるX座標
PointShot[i].PointShots[j].y+=1*PATTERN1SPEED*sin(PointShot[i].PointShots[j].angle); //追尾させるY座標
}
}
}
}


------------------
PATTERN1SPEEDが追いかける速度で、上記のプログラムはスキル発動時に画面上に表示されてるポイントが自分へ向かってくる感じです。


3ポイント を手に入れた。

Name: 経歴2ヶ月  ..ぴよぴよ(15ポイント)   Date: 2008/07/15(火) 17:35   No:18591     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
>1:マウスカーソルの座標を取得する
>2:現在のキャラクターの座標を取得する
>3:1と2で取得した2つの点を結ぶ直線の傾きを求める
>4:3で求めた角度へキャラクターを一定量移動させる
>5:1へ戻る

ようするに上記の考えで、プログラムのforは無視して1、2で座標取得して、atan2()を用いて角度をを求めて、キャラクターをxとy求めた角度ずらならが表示すればテクテク動くんじゃないかと思います。


12ポイント を手に入れた。

Name: バグ  ..比類無きプログラマー(97,884ポイント)   Date: 2008/07/15(火) 18:41   No:18598     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
私がイメージしているものと違っていたら申し訳ないんですが…
とりあえず私がイメージしたものをコーディングしてみました。


#include "DxLib.h"
#include <math.h>

#define PI 3.141592654 // 円周率
#define MOVE 1.0 // 移動量

struct LOCATE
{
double X;
double Y;
};

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
LOCATE locate, mouse;

// マークの初期位置
locate.X = 320.0;
locate.Y = 240.0;

// Windowの初期化
ChangeWindowMode(TRUE);
SetDrawScreen(DX_SCREEN_BACK);

// DxLibの初期化
if (DxLib_Init() == -1)
{
return -1;
}

while (ProcessMessage() == 0)
{
// マウスカーソルの取得
int x = 0, y = 0;
if (GetMousePoint(&x, &y) == -1)
{
// マウスカーソルの取得に失敗した場合は何もしない
continue;
}
else
{
// マウスカーソルの取得
mouse.X = (double)x;
mouse.Y = (double)y;
}

// 傾きを算出
double angle = atan2(mouse.Y - locate.Y, mouse.X - locate.X);

// 算出した傾き方向へ、定数MOVEだけ移動させる
locate.X += MOVE * cos(angle);
locate.Y += MOVE * sin(angle);

// 画面の消去
ClearDrawScreen();

// マークの描画
DrawCircle((int)locate.X, (int)locate.Y, 10, GetColor(255, 255, 255), TRUE);

ScreenFlip();
}

DxLib_End();
return 0;
}


726ポイント を手に入れた。

Name: しりうす〜  ..入門者(4,115ポイント)   Date: 2008/07/16(水) 11:59   No:18641     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
ぱっと見た感じ、FPSとか考慮されて無いっポイんですけどその辺どうなってます?

単純に適当なウェイト処理入れるだけでやりたいことができそうですが。


48ポイント を手に入れた。

Name: やそ  ..比類無きプログラマー(81,100ポイント)   Date: 2008/07/16(水) 12:45   No:18642     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
しりうすさんの言うとおり、
提示されたプログラムを拝見する限り、
FPSなどの同期を取る処理を行っていないがために、
PCの性能限界そのままに表示を繰り返すため、一瞬で移動したように見えるのだと思います。
ある程度のウェイト毎に表示を繰り返していけばいいだけじゃないでしょうか?

シューティングの館のFPSなどを参考にしてみると良いんじゃないかな?


121ポイント を手に入れた。

Name: ibis  ..中級者(11,250ポイント)   Date: 2008/07/16(水) 16:01   No:18648     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
>>ループ中にWaitTimer関数を入れたらゆっくり移動するようになりそうですね、多分。
>
>その方法はやってみたんですが、できません。
>クリックした後にキャラクターはすぐに移動せず、その場でキャラクターが止まり、数秒たったら、瞬間移動するっていうものになりました。

「ループ中に」と書きましたが、ループは3つありますよね。
while(){
  while(){}
  while(){}
}
って感じでwhile文が3つ。
内側の2つのループでウェイトしてみたらできませんか?


184ポイント を手に入れた。

Name:  ..プログラマー(34,221ポイント)   Date: 2008/07/16(水) 18:40   No:18655     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
見づらいソースは見ないので、眺めただけですが(編集で直せると思いますがどうでしょうか?

現在の座標(x1,y1)
マウスで得た座標(x2,y2)

x=x2-x1
y=y2-y1

if y<x
x座標を減らす
else
y座標を減らす

カウントか何かを使って待機状態を作る

現在座標の更新
上から繰り返す…x1 == x2 && y1 == y2 のときbreak
でどうでしょうか?

ラグナロクとかは、移動中に目的地の変更ができるはずなんで、その辺も考慮できるようにした方が良いかと
それと、障害物はどう処理する予定ですか?
これは重要なことと思います。

もう少し、本場のをプレイして、この処理どうやってるんだろ?って深く考えてみると面白いかもwww
僕が言ってるのはなんとなくなんで、違ってたり、実装が面倒だったり、拡張性が無かったり、などなど起こりえるのでwww

** 座標へ移動 **

//座標は0以上で設定するとする。


カウンターが一定の値以上である。とき↓を行う
{
現在の座標(x1,y1)
マウスでクリックしたら更新する座標(x2,y2)
(それ以外は常にこのまま

if ( x1 == x2 && y1 == y2 ){
x=x2 - x1;
y=y2 - y1;
//斜め同時移動
if( x != 0 ){
if( x > 0 ){
x1 += 1;
}else{
x1 -= 1;
}
}
if( y != 0 ){
// x と同じ
}

//ここで、画像を表示
//画面の更新
//待機時間

}
}

でどうでしょ?


477ポイント を手に入れた。

Name: メリッサ  ..かけだし(1,444ポイント)   Date: 2008/07/17(木) 21:47   No:18692 解決!     
Title: Re:マウスでクリックした位置にトコトコ歩くには?    
いろいろありがとうございます。
最初の段階で、考えが浅かったと思いますが、いろいろやった結果、処理時間を考慮に入れる方法と
キャラクターの動きの処理の仕方によっても変わる事がわかりましたので、
アドバイスもやりつつ、自分なりにも解決させました。

親切に教えていただき誠にありがとうございます。


2倍のポイントを手に入れた! 216ポイント を手に入れた。



Name: nemui  ..ぴよぴよ(151ポイント)   Date: 2008/07/11(金) 21:09   No:18384       
Title: 無題    
学校の授業の課題で神経素弱を作らないと駄目なんですが
添付の状態からからどうすればアドバイスお願いします
作業ソフトはbcpadで文字だけです

あと聞きたいのは
・カードを指定したり、揃ったら[]を空白をにしたい
・場所定義はあってるか


74ポイント を手に入れた。


Name: lbfuvab  ..かけだし(1,163ポイント)   Date: 2008/07/11(金) 21:55   No:18386     
Title: Re:無題    
まず22行目の
printf("\n[] [] [] []",arr[0][0],arr[0][1],arr[0][2],arr[0][3]);
の後ろの引数(arr[0][0],arr[0][1],arr[0][2],arr[0][3])はいったいどういう意味でしょうか?

また、'c1'等としてますがこれはどういうことでしょうか?

後、最後の巨大な判定は何をしているのですか?



122ポイント を手に入れた。

Name: すく  ..かけだし(1,074ポイント)   Date: 2008/07/11(金) 22:41   No:18387     
Title: Re:無題    
とりあえず一番最後みたいな巨大な判定にしなくてもできますよ。
一番最初にそこをかんがえなおしてみては?


46ポイント を手に入れた。

Name: nemui  ..ぴよぴよ(201ポイント)   Date: 2008/07/12(土) 09:37   No:18400     
Title: 返答    
'c1'と's1'等はトランプのクローバーの1やスペードの1です
printf("\n[] [] [] []",arr[0][0],arr[0][1],arr[0][2],arr[0][3]);
の(arr[0][0],arr[0][1],arr[0][2],arr[0][3]); は
'c1'等を入れる入れ物て定義したんですけどおかしいですか?