ゲーム作成

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

ゲーム作成

#1

投稿記事 by primi » 9年前

コード:

void Sysfont_DrawMoji(const char c, const float x, const float y) {
const int N = c - ' ';
const float offset_tu = (float)(N % 16);
const float offset_tv = (float)(N / 16);

const float SIZE_TU = 1.0f / 16.0f;
const float SIZE_TV = 1.0f / 16.0f;

const COLOR DIF = COLOR_XRGB(255, 255, 255);
static const float POLYGON_SIZE = 20.0f;

SYSFONT sysfont[] = {
{ x, y, 0.0f, 1.0f, DIF, offset_tu*SIZE_TU, offset_tv*SIZE_TV },
{ x + POLYGON_SIZE, y, 0.0f, 1.0f, DIF, (offset_tu + 1)*SIZE_TU, (offset_tv*SIZE_TV) },
{ x + POLYGON_SIZE, y + POLYGON_SIZE, 0.0f, 1.0f, DIF, (offset_tu + 1)*SIZE_TU, (offset_tv + 1)*SIZE_TV },
{ x, y + POLYGON_SIZE, 0.0f, 1.0f, DIF, offset_tu*SIZE_TU, (offset_tv + 1)*SIZE_TV }
};

g_PD3Device->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, sysfont, sizeof(SYSFONT));

}

void Sysfont_DrawString(const float x, const float y, const char* str) {
for (int i = 0; str[i] != '\0'; i++) {
Sysfont_DrawMoji(str[i], x + i * POLYGON_SIZE, y);
}
}

Sysfont_DrawString(0.0f, 0.0f, "00000");
if(KEY_INPUT_BACK){
}
スペースキーの入力によりスコアを1ずつ加算したいのですが分かりません。
教えて下さいお願いします

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ゲーム作成

#2

投稿記事 by みけCAT » 9年前

具体的に何がわからないのですか?
例えば
  • スペースキーの入力の受け取り方
  • スコアの加算のしかた
  • スコアの記録のしかた
  • スコアの描画のしかた
  • ビルドのしかた
など。

また、使用しているプログラミング言語とライブラリ/フレームワークも教えていただけるとありがたいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

primi

Re: ゲーム作成

#3

投稿記事 by primi » 9年前

加算の仕方が分かりません。
Dirextx9 C++ C言語です。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ゲーム作成

#4

投稿記事 by みけCAT » 9年前

スコアが整数や実数なら普通に+演算子か+=演算子を使うだけだと思うのですが、「スコア」の型やデータ構造はどうなっていますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

primi

Re: ゲーム作成

#5

投稿記事 by primi » 9年前

http://detail.chiebukuro.yahoo.co.jp/qa ... 2161427152
ビットマットフォントを使って描画しています。c:表示させる文字x:表示させるX座標y:表示させるY座標です
上記のURLのような画像です

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ゲーム作成

#6

投稿記事 by みけCAT » 9年前

描画の方法はコードから想像が付きます。
自分は選択肢として「スコアの描画のしかたがわからない」も提示しましたが、あなたはそれよりも「スコアの加算のしかたがわからない」を選びました。
また、同じく「スコアの記録のしかたがわからない」も選択肢として提示したのに選ばれていないので、わかっているのですよね?
今、あなたのコードにはスコアの計算を扱うように見える部分が全く見当たりません。
KEY_INPUT_BACKも、特殊な定義をしていなければスペースキーとは関係ないでしょう。

もう一度聞きます。「スコア」の型やデータ構造はどうなっていますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

primi

Re: ゲーム作成

#7

投稿記事 by primi » 9年前

記録の仕方も分かりません
intです

primi

Re: ゲーム作成

#8

投稿記事 by primi » 9年前

データ構造わかりません

primi

Re: ゲーム作成

#9

投稿記事 by primi » 9年前

キーを押される度に00000→00001→00002→00003・・・・00100→01000→10000→99999となるようにしたいです。
ソースコードを教えて下さいお願いします。

primi

Re: ゲーム作成

#10

投稿記事 by primi » 9年前

コード:

void	PrintNUM(int x, int y, int val, int base)
{
	int buf[12], num_cnt, minus = 0;
	float tex_x, tex_y;

	if (val<0){
		minus = 1;
		val = -val;
	}
	num_cnt = 0;

	do{
		buf[num_cnt++] = val % 10 + 0x10;
		val /= 10;
	} while (val>10);

	if (minus)buf[num_cnt++] = ' ' - 0x20;

	if (base > 0) x -= num_cnt * 16;
	else if (base == 0) x -= (num_cnt * 16) / 2;
	num_cnt--;

	while (num_cnt >= 0){
		tex_x = ((buf[num_cnt]) % 16) / 16.0f;
		tex_y = ((buf[num_cnt]) / 16) / 16.0f;

		typedef struct{
			float x, y, z;
			float rhw;
			D3DCOLOR cor;
			float tex_u, tex_v;
		}VERTEX_2D;

		//データの値を設定	
		VERTEX_2D vertex[4];

		vertex[0].x = (float)x;
		vertex[0].y = (float)y;
		vertex[0].z = 0.0f;

		vertex[1].x = (float)x + 16.0f;
		vertex[1].y = (float)y;
		vertex[1].z = 0.0f;

		vertex[2].x = (float)x + 16.0f;
		vertex[2].y = (float)y + 16.0f;
		vertex[2].z = 0.0f;

		vertex[3].x = (float)x;
		vertex[3].y = (float)y + 16.0f;
		vertex[3].z = 0.0f;

		vertex[0].rhw = 1.0f;
		vertex[1].rhw = 1.0f;
		vertex[2].rhw = 1.0f;
		vertex[3].rhw = 1.0f;

		vertex[0].cor = D3DCOLOR_XRGB(255, 255, 255);
		vertex[1].cor = D3DCOLOR_XRGB(255, 255, 255);
		vertex[2].cor = D3DCOLOR_XRGB(255, 255, 255);
		vertex[3].cor = D3DCOLOR_XRGB(255, 255, 255);

		vertex[0].tex_u = tex_x;
		vertex[0].tex_v = tex_y;
		vertex[1].tex_u = tex_x + (1.0f / 16.0f);
		vertex[1].tex_v = tex_y;
		vertex[2].tex_u = tex_x + (1.0f / 16.0f);
		vertex[2].tex_v = tex_y + (1.0f / 16.0f);
		vertex[3].tex_u = tex_x;
		vertex[3].tex_v = tex_y + (1.0f / 16.0f);

		x += 16;
		num_cnt--;
		g_pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, vertex, sizeof(VERTEX_2D));

	}
}
	PrintNUM(500, 0, count, 1);

	if (GetKeyboardPress(DIK_D)){
				count--;
	}
これで実行すると0-1-2-3-4-5-6-7-8-9-0が10回繰り返されて10-11-12-13と表示されます
わからないので教えて下さい。

primi

Re: ゲーム作成

#11

投稿記事 by primi » 9年前

ミスでした
自己解決です

閉鎖

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