DXライブラリ KEY_INPUT_?の文字列化 現在DXライブラリを勉強中の者です。 ほかに…

未分類

DXライブラリ KEY_INPUT_?の文字列化
現在DXライブラリを勉強中の者です。
ほかにも同じような質問をしている方が
いらっしゃったのですが、少し私のしたい質問とは
違ったので出しました。
if(key[KEY_INPUT_A] == 1){
DrawFormatString(…,”%d”,ChangeStr(KEY_INPUT_A)); //ここで変換
}
このソースの、ChangeStr()に文字コードを渡すと、
”A”みたいに帰ってくるようにしたいです。
switchで全ケース分けるとかはできるだけしたくないのですが
何かいい方法はないでしょうか?
どうかよろしくお願いします。

  1. 匿名 より:

    昨日は間違ったな回答をしてしまい申し訳ございませんでした。
    あまりきれいなやり方ではないかもしれないですが
    キーと文字の対応表?を作りそれと照らし合わすという方法です

    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]; }

  2. 匿名 より:

    #include “Dxlib.h”
    を入れるのを忘れてました。
    申し訳ないです。

  3. 匿名 より:

    再びありがとうございます。
    テーブルのファイルを作るという発想はありませんでした!
    コードまで書いていただいて
    頭が上がりません。
    参考にしていただきます!



 ⬇人気の記事!⬇

タイトルとURLをコピーしました