今回は数字が下に落ちてから次の数字が落ちてくるプログラムともう一度当たり判定について分かりやすく教えて欲しいです。なので今回は長文になりますが、ソースコードを書かせてもらいます。
//ヘッダー
#include <stdio.h>
#include <Windows.h>
#include <D3D11.h>
#include <d3dx11.h>
#include <d3dCompiler.h>
#include <xnamath.h>
#include <crtdbg.h>
#include <XAudio2.h>
#include <time.h>
//main.hの一部です。
//Main関数
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR szCmdLine,int nCmdShow)
{
char Name []={"Falling Same Number"};
//ウィンドウステータス
WNDCLASSEX wcex = {
sizeof(WNDCLASSEX),
CS_HREDRAW | CS_VREDRAW,
WndProc,
0, 0,
hInstance,
NULL, NULL,
(HBRUSH)(COLOR_WINDOW+1),
NULL,Name,NULL
};
void Init(int number,int x,int y);
void Destructor();
void Action();
void Draw();
private:
float m_x,m_y;
float m_x0,m_y0;
float m_time;
int m_iNumber;
RECT m_src;
RECT m_dst;
//数字のヘッダー
//数字のCPP
#include "main.h"
#define WINDOW_RIGHT 192
#define WINDOW_LEFT 0
//イニシャライズ
void CObjNum1::Init(int numnber,int x,int y)
{
m_iNumber = numnber;
m_x=x;
m_y=y;
/*
m_x=rand()%150;
m_y=rand()%100;
m_x += 0.3;
*/
m_time=1;
Hit()->SetStatus(ELEMENT_PLAYER,1);
Hit()->Invincibility(false);
Hit()->SetPos(m_x,m_y,40.0f,80.0f);
//描画の優先順位
m_Prio = 2;
}
//デスト
void CObjNum1::Destructor()
{}
//アクション
void CObjNum1::Action()
{
/*m_y += 0.3f;
m_time++;
m_y +=2;
m_x +=5;
if(m_x>WINDOW_SIZE_W)
{
m_y=rand()%500;
m_x=rand()%250;
}
m_x -= 0.3;*/
if(Input()->GetVKey(VK_DOWN))
{
m_y+=1.5f;
}
if(Input()->GetVKey(VK_RIGHT))
{
m_x+=2.0f;
}
if(Input()->GetVKey(VK_LEFT))
{
m_x-=2.0f;
}
if(m_x<0)
{
m_x=0;
}
if(m_y<0)
{
m_y=0;
}
if(m_x>WINDOW_SIZE_W-66)
{
m_x=WINDOW_SIZE_W-66;
}
if(m_y>WINDOW_SIZE_H-70)
{
m_y=WINDOW_SIZE_H-70;
}
Hit()->SetPos(m_x,m_y);
m_time=1;
}
//ドロー
void CObjNum1::Draw()
{
//カラー情報
float col[4] = {1.0f,1.0f,1.0f,1.0f};
//切り取り座標
#define NUMBER_W 8
#define NUMBER_H 17
int offset_x = (m_iNumber - 1) % 10;
int offset_y = (m_iNumber - 1) / 10;
m_dst.top =offset_y * NUMBER_H;
m_dst.left =offset_x * NUMBER_W;
m_dst.bottom =(offset_y+1) * NUMBER_H;
m_dst.right =(offset_x+1) * NUMBER_W;
//転送先座標
m_src.top =m_y;
m_src.left =m_x;
m_src.bottom =70+m_src.top;
m_src.right =70+m_src.left;
//描画
Image()->Draw(2,&m_src,&m_dst,col,0.0f);
}
ぜひお願いします。