初めまして、現在DXライブラリを使ってゲームを制作しています。
キャラクターセレクトを作り、選択されたキャラを呼び出したいのですが、流れはイメージできても、どうプログラムに書けばいいのかわからない状況です。
イメージは
1P,2Pがキャラを選択
↓
選択したキャラを1P,2P座標に呼び出す
というものです。
みなさんならどのように作りますか?
アドバイスまたは参考になるサイトを教えていただきたいです。よろしくお願いします。
キャラクターセレクトからキャラの呼び出し
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: キャラクターセレクトからキャラの呼び出し
名前とタイトルが逆だったので入れ替えておきました。
さて、質問の件ですが1p,2pの区別を番号で記録して表示する部分に伝えることだと思います。
言語もライブラリも、ソースコードも不明なので一般論としてはこれぐらいしかいえません。
さて、質問の件ですが1p,2pの区別を番号で記録して表示する部分に伝えることだと思います。
言語もライブラリも、ソースコードも不明なので一般論としてはこれぐらいしかいえません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: キャラクターセレクトからキャラの呼び出し
返信ありがとうございます。
情報が少なすぎて申し訳ないです。
言語:c言語
ソースコード
バトル画面専用のファイルを作りそこで描画しようと考えております。
ヘッダファイルの構造体にあるキャラ番号を使って伝えたいと思っているのですが、ここからどのように書いて
キャラクターを呼び出せばいいでしょうか・・・。
情報が少なすぎて申し訳ないです。
言語:c言語
ソースコード
#ifndef DEF_CHARAELE_H
#define DEF_CHARAELE_H
#include "Keyboard.h"
#include "Menu.h"
#include "Player.h"
#include "main.h"
#include "DxLib.h"
#include "GM.h"
typedef struct charsele
{
int num; //キャラ番号
int x; //文字列x座標
int y; //文字列y座標
char name[128]; //キャラ名
}charasele;
//ステータス構造体
typedef struct status
{
int x; //x座標
int y; //y座標
int attack; //攻撃力
}status;
//更新
void charasele_Update();
//描画
void charasele_Draw();
#endif
#include "charasele.h"
//選択用変数
static int selenum = 0;
static int i = 0;
static int onep_x = 150; //カーソル座標
static int onep_y = 150; //カーソル座標
//メニュー項目キャラ
charasele Chara[4] = {
{1, 200, 150, "男" },
{2, 370, 150, "犬" },
{3, 200, 250, "女" },
{4, 370, 250, "巨人" } };
//更新
void charasele_Update()
{
//1Pカーソル
if (Keyboard_Get(KEY_INPUT_S) == 1 )
{
onep_y = onep_y + 100;
}
else if (Keyboard_Get(KEY_INPUT_W) == 1)
{
onep_y = onep_y - 100;
}
else if (Keyboard_Get(KEY_INPUT_D) == 1)
{
onep_x = onep_x + 170;
}
else if (Keyboard_Get(KEY_INPUT_A) == 1)
{
onep_x = onep_x - 170;
}
//カーソル移動領域制限
//x座標を超えたら
if (onep_x >= 320)
{
onep_x = 320;
}
else if (onep_x <= 150)
{
onep_x = 150;
}
//y座標を超えたら
if (onep_y >= 250)
{
onep_y = 250;
}
else if(onep_y <= 150)
{
onep_y = 150;
}
//Bが押されたらタイトルに戻る
if (Keyboard_Get(KEY_INPUT_B) == 1)
{
GM_CS(since_Menu); //シーンをメニューに変更
}
}
void charasele_Draw()
{
for (int i = 0; i < 5; i++)
{
DrawFormatString(Chara[i].x, Chara[i].y, GetColor(255, 255, 255), Chara[i].name);
DrawFormatString(200, 300, GetColor(255, 255, 255), "Bを押すとメニューへ。");
DrawFormatString(onep_x, onep_y, GetColor(255, 255, 255), "1P→");
}
}
ヘッダファイルの構造体にあるキャラ番号を使って伝えたいと思っているのですが、ここからどのように書いて
キャラクターを呼び出せばいいでしょうか・・・。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: キャラクターセレクトからキャラの呼び出し
selenum に選択された配列の番号が入っているならstatic保持されているので、return Chara[selenum ].num;で番号を返す関数を用意すれば解決すると思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: キャラクターセレクトからキャラの呼び出し
途中送信してしまいました、ごめんなさい。
返信ありがとうございます、番号を返す関数を作ってみます。
もう一つ疑問があるのですが、仮キャラクター選択画面では
1P→ 男 犬
女 巨人
という感じになっているのですが、男でエンターが押された場合というif分の条件式はどうすればよろしいでしょうか?1Pの座標を条件にして、男の座標でエンターが押されたらselenum = 1;でselenumに数字を格納してswitch分岐させればいいでしょうか?
返信ありがとうございます、番号を返す関数を作ってみます。
もう一つ疑問があるのですが、仮キャラクター選択画面では
1P→ 男 犬
女 巨人
という感じになっているのですが、男でエンターが押された場合というif分の条件式はどうすればよろしいでしょうか?1Pの座標を条件にして、男の座標でエンターが押されたらselenum = 1;でselenumに数字を格納してswitch分岐させればいいでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: キャラクターセレクトからキャラの呼び出し
Chara配列が座標まで把握しているので、selenumだけで管理したほうが楽だと思います。
表示などの座標はChara配列からselenumで取り出せば良いだけです。
表示などの座標はChara配列からselenumで取り出せば良いだけです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: キャラクターセレクトからキャラの呼び出し
おめでとうございます。
他の人の参考に解決したコードを貼って頂けると助かります。
他の人の参考に解決したコードを貼って頂けると助かります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。