ページ 1 / 1
ゲーム作成
Posted: 2016年7月08日(金) 00:53
by primi
コード:
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ずつ加算したいのですが分かりません。
教えて下さいお願いします
Re: ゲーム作成
Posted: 2016年7月08日(金) 09:55
by みけCAT
具体的に何がわからないのですか?
例えば
- スペースキーの入力の受け取り方
- スコアの加算のしかた
- スコアの記録のしかた
- スコアの描画のしかた
- ビルドのしかた
など。
また、使用しているプログラミング言語とライブラリ/フレームワークも教えていただけるとありがたいです。
Re: ゲーム作成
Posted: 2016年7月08日(金) 10:46
by primi
加算の仕方が分かりません。
Dirextx9 C++ C言語です。
Re: ゲーム作成
Posted: 2016年7月08日(金) 21:56
by みけCAT
スコアが整数や実数なら普通に+演算子か+=演算子を使うだけだと思うのですが、「スコア」の型やデータ構造はどうなっていますか?
Re: ゲーム作成
Posted: 2016年7月09日(土) 00:47
by primi
http://detail.chiebukuro.yahoo.co.jp/qa ... 2161427152
ビットマットフォントを使って描画しています。c:表示させる文字x:表示させるX座標y:表示させるY座標です
上記のURLのような画像です
Re: ゲーム作成
Posted: 2016年7月09日(土) 01:02
by みけCAT
描画の方法はコードから想像が付きます。
自分は選択肢として「スコアの描画のしかたがわからない」も提示しましたが、あなたはそれよりも「スコアの加算のしかたがわからない」を選びました。
また、同じく「スコアの記録のしかたがわからない」も選択肢として提示したのに選ばれていないので、わかっているのですよね?
今、あなたのコードにはスコアの計算を扱うように見える部分が全く見当たりません。
KEY_INPUT_BACKも、特殊な定義をしていなければスペースキーとは関係ないでしょう。
もう一度聞きます。「スコア」の型やデータ構造はどうなっていますか?
Re: ゲーム作成
Posted: 2016年7月09日(土) 20:27
by primi
記録の仕方も分かりません
intです
Re: ゲーム作成
Posted: 2016年7月09日(土) 20:29
by primi
データ構造わかりません
Re: ゲーム作成
Posted: 2016年7月10日(日) 22:57
by primi
キーを押される度に00000→00001→00002→00003・・・・00100→01000→10000→99999となるようにしたいです。
ソースコードを教えて下さいお願いします。
Re: ゲーム作成
Posted: 2016年7月11日(月) 22:21
by primi
コード:
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と表示されます
わからないので教えて下さい。
Re: ゲーム作成
Posted: 2016年7月11日(月) 23:07
by primi
ミスでした
自己解決です