DXライブラリでゲームの自キャラをマウス操作

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
クルトン

DXライブラリでゲームの自キャラをマウス操作

#1

投稿記事 by クルトン » 15年前

こんにちは。
現在、私はDXライブラリを使って、ゲームを作成しています。
そこで、自キャラをマウスで動かせるように設定したいのですが、
(マウスのカーソル部分が自キャラという状態)
どのようにしたらいいのか全くわかりません。

GetMousePointでマウスカーソルの位置を取得したりしてみましたが、
マウスでの操作はできませんでした。
GetMouseInputを使えばいいのでしょうか。

もしよろしかったら、細かく教えていただけると助かります。

とりあえず、自キャラがマウスで画面上を上下左右、
好きな場所へ移動できるようになればいいと思っています。

ご回答よろしくお願いします。

softya

Re:DXライブラリでゲームの自キャラをマウス操作

#2

投稿記事 by softya » 15年前

>GetMousePointでマウスカーソルの位置を取得したりしてみましたが、
>マウスでの操作はできませんでした。
>GetMouseInputを使えばいいのでしょうか。

いまいち何が問題なのか分かりません。
>マウスでの操作はできませんでした。
とは何をしたかったのでしょうか?どの様な操作をしたいのか具体的に書いて下さい。

>とりあえず、自キャラがマウスで画面上を上下左右、
>好きな場所へ移動できるようになればいいと思っています。

この説明は、全然具体的ではありませんよ。
マウスをどういう操作したとき、自キャラが移動出来るのか書かれていません。
そのまま理解するとマウス座標の処に自キャラが表示できれば良いとしか思えませんので、GetMousePointで座標は得ているなら、それで表示できるはずです。
GetMouseInputで得られるのは、マウスのボタンの状態ですので不要だと思いますが。 画像

クルトン

Re:DXライブラリでゲームの自キャラをマウス操作

#3

投稿記事 by クルトン » 15年前

説明がうまくできなくてすみません^^;。

自キャラをキーボード(方向キー)ではなく、マウスで操作できるようにしたいんです。


GetMousePointで座標は得ています。

私は、マウスのカーソル部分に自キャラを読み込めていません。
ゲームメインの部分にLoadGraphなどを入れてみましたが、できませんでした。

操作は、画面上でマウスを動かすと、自キャラがそのマウスが動いた通りに動くという状態にしたいです。
なので、最初にマウスの座標を読みとって、
もし、マウスの座標が変わったら、新しい座標を読み取り、その新しい座標に自キャラを表示させ、
前の座標に表示されていた自キャラは削除する。
これを繰り返すというものにしたいのです。

なんとなく、わかっていただけたでしょうか?

でも、その前に、マウスのカーソルを自キャラの画像にしなければなりませんでした。。

softya

Re:DXライブラリでゲームの自キャラをマウス操作

#4

投稿記事 by softya » 15年前

うーん。
DXライブラリの関数の役割がまだ理解出来ていない状態と言うことでしょうか?
LoadGraph()はグラフィックをロードする関数で、メインループに入れる事自体基本的に間違っています。
DrawGraph()が表示する関数で、この座標をマウスの座標にすればその位置に表示されます。

>もし、マウスの座標が変わったら、新しい座標を読み取り、その新しい座標に自キャラを表示させ、
>前の座標に表示されていた自キャラは削除する。
>これを繰り返すというものにしたいのです。

ゲームとかちょっと複雑なDXライブラリの基本的な使い方は毎フレーム画面をクリアしてますので画像を削除する必要はありません。ただ表示するだけで良いです。

ゲームプログラミングの館の13c章。
http://dixq.net/g/15.html

>でも、その前に、マウスのカーソルを自キャラの画像にしなければなりませんでした。。
マウスカーソル自体を自キャラにするのは初心者には難しいのでやめた方が良いでしょう。
DXライブラリに関数もありませんので、Win32APIを使う必要があります。

13c章をベースにGetMousePoint()を処理するとこうなります。

#include "DxLib.h"

char Key[256];

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //初期化処理

int image = LoadGraph("char.png");

SetDrawScreen( DX_SCREEN_BACK ); //裏画面に設定

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

int x,y;
GetMousePoint( &x, &y );
DrawGraph(x,y,image,TRUE);

ScreenFlip();//裏画面を表画面に反映
}

DxLib_End();
return 0;
}

クルトン

Re:DXライブラリでゲームの自キャラをマウス操作

#5

投稿記事 by クルトン » 15年前

まだ理解できてない部分の方が大半です。
どういう関数が存在するのかもわかっていないです。
勉強不足ですみません。

>ゲームとかちょっと複雑なDXライブラリの基本的な使い方は毎フレーム画面をクリアしてますので画像を削除する必要はありません。ただ表示するだけで良いです。

知りませんでした。ありがとうございます。


>マウスカーソル自体を自キャラにするのは初心者には難しいのでやめた方が良いでしょう。

では、クリックしたところに自キャラが動くというプログラムも難しいですか?
例)アメーバピグのような動き。

この入力していただいたプログラムだと、どんな動作になるのですか?
マウスカーソル自体を自キャラにできるのですか?

ムンバ

Re:DXライブラリでゲームの自キャラをマウス操作

#6

投稿記事 by ムンバ » 15年前

こんにちは。
横スレ、すみません。(謝

今、ちょうどゲームプログラミングの館で
DXライブラリの復習をしていた所なのですが
クルトンさんの質問に興味を持ちまして
No:46908のsoftyaさんのソースを実行してみた所
何も表示されないのですが、これでいいのでしょうか?
(変な意味は、ございませんので。^^)

WinXP、Microsoft Visual C++ 2008 Express Edition SP1
を使ってます。

↓編集部位
softyaさん、すみません。
マウスポインタを表示させるだけのソースだったのですね?^^;
表示できました。
おっちょこちょいで。<_ _>
横レス、すみませんでした。(謝 画像

softya

Re:DXライブラリでゲームの自キャラをマウス操作

#7

投稿記事 by softya » 15年前

>では、クリックしたところに自キャラが動くというプログラムも難しいですか?
>例)アメーバピグのような動き。

ごめんなさいアメーバピグが分かりません。

>クリックしたところに自キャラが動く。
今までの話にそんな機能は書かれていませんでしたよ?
自分の実現したいことは、ちゃんとまとめて説明出来ないと他の人には伝わりません。
どうやって伝えるか、どうやって理路整然と書くかを考えてみてください。
それがプログラムの機能をまとめる自分のための訓練にもなります。

それでは、簡単な物から始めてみましょう。
マウス無しと考えて特定の座標に向かってキャラクタが動くプログラムを作れますか?
※ 特定の座標は固定値です。
それ以前に、特定の座標にキャラクタを表示できますか?
基本的な事が出来て、その上で応用的なことができますので一足飛びにすごいものは作れませんよ。

>この入力していただいたプログラムだと、どんな動作になるのですか?
>マウスカーソル自体を自キャラにできるのですか?

試してみれば分かります。
すぐ試せない理由があるのでしょうか?
それに単純なプログラムなので、ソースコードを見れば分かると思うのですが。

もし分からないならDXライブラリの理解が浅すぎますので、
「ゲームプログラミングの館」
http://dixq.net/g/
の最初から、一行一行の意味を理解できる様に勉強して下さい。
それが思うものを作れるようになる一番の早道です。

クルトン

Re:DXライブラリでゲームの自キャラをマウス操作

#8

投稿記事 by クルトン » 15年前

>クリックしたところに自キャラが動く。
今までの話にそんな機能は書かれていませんでしたよ?

>マウスカーソル自体を自キャラにするのは初心者には難しいのでやめた方が良いでしょう。
とsoftyaさんがおっしゃったので、別の方法はどうでしょうか?と聞いてみただけです。



>マウス無しと考えて特定の座標に向かってキャラクタが動くプログラムを作れますか?
勝手に動いていくものは作れません。しかし、キー操作のものなら作りました。

>それ以前に、特定の座標にキャラクタを表示できますか?
これはできます。

私もうまく表示されませんでした。
私のやり方がおかしいのかもしれません。

簡単な部分からやりなおしてきます。
ありがとうございました。

softya

Re:DXライブラリでゲームの自キャラをマウス操作

#9

投稿記事 by softya » 15年前

>>ムンバさんへ。
>マウスポインタを表示させるだけのソースだったのですね?^^;

マウスカーソル自体は変更していませんので、クルトンさん御望みのものとは違うと思いますが。

>私もうまく表示されませんでした。
>私のやり方がおかしいのかもしれません。

char.pngが必要です。
書き忘れましたね。申し訳ないです。

マウスカーソルを変更する方法は、こちらにサンプルが有ります。
http://www.kumei.ne.jp/c_lang/sdk2/sdk_102.htm
ある程度Win32APIを理解出来ていないと難しい処理です。
それとサイズ、色数にかなり制限があります。
http://msdn.microsoft.com/ja-jp/library/cc411027.aspx
画像

ムンバ

Re:DXライブラリでゲームの自キャラをマウス操作

#10

投稿記事 by ムンバ » 15年前

>>softyaさん
 了解です。ご解説ありがとうございました。

>>クルトンさん
 お邪魔しました。がんばって下さいねっ!w

閉鎖

“C言語何でも質問掲示板” へ戻る