DXライブラリ KEY_INPUT_?の文字列化
現在DXライブラリを勉強中の者です。
ほかにも同じような質問をしている方が
いらっしゃったのですが、少し私のしたい質問とは
違ったので出しました。
if(key[KEY_INPUT_A] == 1){
DrawFormatString(…,”%d”,ChangeStr(KEY_INPUT_A)); //ここで変換
}
このソースの、ChangeStr()に文字コードを渡すと、
”A”みたいに帰ってくるようにしたいです。
switchで全ケース分けるとかはできるだけしたくないのですが
何かいい方法はないでしょうか?
どうかよろしくお願いします。
昨日は間違ったな回答をしてしまい申し訳ございませんでした。
あまりきれいなやり方ではないかもしれないですが
キーと文字の対応表?を作りそれと照らし合わすという方法です
char Table[35] = {};
int ChangeStr(int Code);
int flag;
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
int x = 0;
ChangeWindowMode( TRUE );
flag=MessageBox(
NULL ,
“Tableファイルを出力しますかnそれとも入力テストをしますか?n出力 = はい n入力 = いいえ”,
“入出力テスト” ,
MB_YESNO | MB_ICONQUESTION );
DxLib_Init();
SetDrawScreen(DX_SCREEN_BACK);
SetFontSize(96);
if(flag == IDNO){
FILE *fp = fopen( “Table.dat”, “rb” );
fread( Table, sizeof(Table), 1, fp );
fclose( fp );
SetFontSize(480);
}
while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && (CheckHitKey(KEY_INPUT_ESCAPE) == 0 || CheckHitKey(KEY_INPUT_LSHIFT) == 0)){
if(flag == IDYES){
SetFontSize(16);
DrawFormatString(x,0,0xffffff,”A~Mまでのキーをを押してください 全て押したら終了してください 表が保存されます”);
DrawFormatString(x-665,0,0xffffff,”A~Mまでのキーをを押してください 全て押したら終了してください 表が保存されます”);
if(x > 665) x = 1;
else x++ ;
SetFontSize(64);
for(int i = 0 , PutNum = 0;i < 35 ;i++ ){ if(CheckHitKey(KEY_INPUT_Q + i) ==1 && Table[i] == 0){ Table[i] = GetInputChar( TRUE ); } } ClearInputCharBuf(); for(int i = 0; i < 35 ; i++){ DrawFormatString((i / 5) * 96, i*96 - (i / 5) * 480 ,0xff00ff,"%c",Table[i]); } }else{ SetFontSize(16); for(int i = -5 ; i < 5 ; i ++){ DrawFormatString(x-16*16 * i,0,0xffffff,"キーを押すと文字が表示されます"); } if(x > 640) x -= 16*16*5;
else x++ ;
SetFontSize(480);
for(int i = 0; i < 35 ; i++){ if(CheckHitKey(KEY_INPUT_Q + i))DrawFormatString(196,0,0xff00ff,"%c",ChangeStr(KEY_INPUT_Q + i)); } } } if(flag == IDYES){ FILE *fp = fopen( "Table.dat", "wb" ); fwrite( Table, sizeof(Table), 1, fp ); fclose( fp ); } DxLib_End(); // DXライブラリ終了処理 return 0; } int ChangeStr(int Code){ return Table[Code - KEY_INPUT_Q]; }
#include “Dxlib.h”
を入れるのを忘れてました。
申し訳ないです。
再びありがとうございます。
テーブルのファイルを作るという発想はありませんでした!
コードまで書いていただいて
頭が上がりません。
参考にしていただきます!