キャラクターセレクトからキャラの呼び出し

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

キャラクターセレクトからキャラの呼び出し

#1

投稿記事 by りう » 8年前

初めまして、現在DXライブラリを使ってゲームを制作しています。
キャラクターセレクトを作り、選択されたキャラを呼び出したいのですが、流れはイメージできても、どうプログラムに書けばいいのかわからない状況です。

イメージは

1P,2Pがキャラを選択

選択したキャラを1P,2P座標に呼び出す
というものです。

みなさんならどのように作りますか?
アドバイスまたは参考になるサイトを教えていただきたいです。よろしくお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: キャラクターセレクトからキャラの呼び出し

#2

投稿記事 by softya(ソフト屋) » 8年前

名前とタイトルが逆だったので入れ替えておきました。

さて、質問の件ですが1p,2pの区別を番号で記録して表示する部分に伝えることだと思います。
言語もライブラリも、ソースコードも不明なので一般論としてはこれぐらいしかいえません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

りう

Re: キャラクターセレクトからキャラの呼び出し

#3

投稿記事 by りう » 8年前

返信ありがとうございます。
情報が少なすぎて申し訳ないです。
言語: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: キャラクターセレクトからキャラの呼び出し

#4

投稿記事 by softya(ソフト屋) » 8年前

selenum に選択された配列の番号が入っているならstatic保持されているので、return Chara[selenum ].num;で番号を返す関数を用意すれば解決すると思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

りう

Re: キャラクターセレクトからキャラの呼び出し

#5

投稿記事 by りう » 8年前

返信ありがとうございます、番号を返す関数を作ってみます。

もう一つ疑問があるのですが、仮キャラクター選択画面では


りう

Re: キャラクターセレクトからキャラの呼び出し

#6

投稿記事 by りう » 8年前

途中送信してしまいました、ごめんなさい。

返信ありがとうございます、番号を返す関数を作ってみます。

もう一つ疑問があるのですが、仮キャラクター選択画面では

         1P→ 男         犬



            女         巨人

という感じになっているのですが、男でエンターが押された場合というif分の条件式はどうすればよろしいでしょうか?1Pの座標を条件にして、男の座標でエンターが押されたらselenum = 1;でselenumに数字を格納してswitch分岐させればいいでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: キャラクターセレクトからキャラの呼び出し

#7

投稿記事 by softya(ソフト屋) » 8年前

Chara配列が座標まで把握しているので、selenumだけで管理したほうが楽だと思います。
表示などの座標はChara配列からselenumで取り出せば良いだけです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

りう

Re: キャラクターセレクトからキャラの呼び出し

#8

投稿記事 by りう » 8年前

返信ありがとうございます。なんとかアドバイスのおかげでコードを書き、キャラクターを呼び出すことができました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: キャラクターセレクトからキャラの呼び出し

#9

投稿記事 by softya(ソフト屋) » 8年前

おめでとうございます。
他の人の参考に解決したコードを貼って頂けると助かります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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