→続き
#include "DxLib.h"
typedef struct{
int 属性;
}キャラデータ_t;
int Key[256];
キャラデータ_t キャラデータ[2];
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[/url]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key==1) GetHitKeyStateAll_InputKey++;
else GetHitKeyStateAll_InputKey=0;
}
return 0;
}
int 属性[17][17]=
{
{2,2,2,2,2,2,2,2,2,2,2,2,1,0,2,2,1},
{2,1,1,2,4,4,2,2,2,2,2,4,1,2,1,2,4},
{2,4,1,2,1,2,2,2,4,2,2,2,4,2,1,2,2},
{2,2,4,1,1,2,2,2,0,4,2,2,2,2,1,2,2},
{2,1,4,2,1,2,2,1,4,1,2,1,4,2,1,2,1},
{2,1,1,2,4,1,2,2,4,4,2,2,2,2,4,2,1},
{4,2,2,2,2,4,2,1,2,1,1,1,4,0,2,4,4},
{2,2,2,2,4,2,2,1,1,2,2,2,1,1,2,2,0},
{2,4,2,4,1,2,2,4,2,0,2,1,4,2,2,2,4},
{2,2,2,1,4,2,4,2,2,2,2,4,1,2,2,2,1},
{2,2,2,2,2,2,4,4,2,2,1,2,2,2,2,0,1},
{2,1,2,2,4,2,1,1,2,1,4,2,2,1,2,4,1},
{2,4,2,2,2,4,1,2,1,4,2,4,2,2,2,2,1},
{0,2,2,2,2,2,2,2,2,2,4,2,2,4,2,1,1},
{2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,1},
{2,2,2,2,2,2,1,2,2,2,4,2,2,4,2,1,1},
{2,1,1,1,2,4,2,2,2,2,2,2,4,2,2,2,1}
};
char 属性の名前[17][32]={
{"ノーマル"},
{"炎 "},
{"水 "},
{"電気 "},
{"草 "},
{"氷 "},
{"格闘 "},
{"毒 "},
{"地面 "},
{"飛行 "},
{"エスパー"},
{"虫 "},
{"岩 "},
{"ゴースト"},
{"ドラゴン"},
{"悪 "},
{"ハガネ "}
};
int ダメージ計算(int 属性1, int 属性2){
return 50*属性[属性1][属性2];
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
if(Key[KEY_INPUT_Z]>0 && Key[KEY_INPUT_UP]==2){
キャラデータ[0].属性 = (++キャラデータ[0].属性)%17;
}
if(Key[KEY_INPUT_Z]>0 && Key[KEY_INPUT_DOWN]==2){
キャラデータ[0].属性 = --キャラデータ[0].属性;
if(キャラデータ[0].属性<0)
キャラデータ[0].属性=16;
}
if(Key[KEY_INPUT_X]>0 && Key[KEY_INPUT_UP]==2){
キャラデータ[1].属性 = (++キャラデータ[1].属性)%17;
}
if(Key[KEY_INPUT_X]>0 && Key[KEY_INPUT_DOWN]==2){
キャラデータ[1].属性 = --キャラデータ[1].属性;
if(キャラデータ[1].属性<0)
キャラデータ[1].属性=16;
}
if(Key[KEY_INPUT_RETURN]==2){
int ダメージ = ダメージ計算(キャラデータ[0].属性,キャラデータ[1].属性);
printfDx("%s から %s への攻撃!→%dのダメージ\n",属性の名前[キャラデータ[0].属性],属性の名前[キャラデータ[1].属性],ダメージ);
}
DrawFormatString(450, 0,GetColor(255,255,255),"攻撃側属性:%s",属性の名前[キャラデータ[0].属性]);
DrawFormatString(450,17,GetColor(255,255,255)," Zキー+上下キー");
DrawFormatString(450,40,GetColor(255,255,255),"受け側属性:%s",属性の名前[キャラデータ[1].属性]);
DrawFormatString(450,57,GetColor(255,255,255)," Xキー+上下キー");
DrawFormatString(450,80,GetColor(255,255,255),"エンターで攻撃!");
for(int i=0;i<17;i++){
DrawFormatString(450,150+17*i,GetColor(255,255,255),"%s",属性の名前);
}
ScreenFlip();
}
DxLib_End();
return 0;
}
実行結果例

攻撃力や防御力はまぁ適当に計算してやって下さい。