ページ 11

Aキーを押したらTESTと表示

Posted: 2011年7月26日(火) 12:03
by k
現在DXライブラリを勉強しながらタイピングソフトでも作ってみようかと思っているのですが、
特定のキーを押したら、TESTと表示させることができるそうなので、実験してみることに。

コード:

#include "DxLib.h"

/*グローバル変数*/
int KeyCheck[256];

/*
 * key が押されているとき,1になる関数
 * つまり、1の時だけ処理をすれば、フレームが分かる
 * 押しっぱなし判定も可能 
 */

int InputKey()
{
    char Tkey[256];
    GetHitKeyStateAll(Tkey);  //キーの入力状態を代入

    for(int i = 0; i < 256; i++){
        if   (Tkey[i] != 0){ KeyCheck[i]++;   }     //keyが押されていれば
        else                  { KeyCheck[i] = 0; }     //加算する(グローバル変数KeyCheckへ)
    }
    return 0;
}

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
    ChangeWindowMode(TRUE);     //画面をウィンドウに変更
              DxLib_Init();                  //DX ライブラリ  初期化

    SetDrawScreen(DX_SCREEN_BACK);  //裏画面設定

    /*****[ 色の作成 ]*****/
   int Red,Green,Blue,White;
        Red   = GetColor(255,0,0);
        Blue  = GetColor(0,0,255);
        Green = GetColor(0,255,0);
        White = GetColor(255,255,255);

   /*****[ 色の一覧 ]*****/
   /* Red   : 赤
    * Blue  : 青
    * Green : 緑
    * White : 白
    *********************/ 

    for(;;){
        if(ProcessMessage() != 0){ break; } //フリーズ等対処
           ClearDrawScreen();               //画面をクリアする
                  InputKey();                 //キー入力を監視する
                ScreenFlip();                //裏画面処理を反映

       /********[ ここから処理 ]********/

       /*
        * もしAキーが1秒入力されていたら
        * TESTと表示させる(Aキーを話すと非表示)
        */
        if(KeyCheck[KEY_INPUT_A] >= 60){
            DrawFormatString(0,0, Red, "TEST");
        }
    }

    DxLib_End();
    return 0;

}
    
このようなソースになったのですが、
コンパイル時に

Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)

** error 1 ** deleting Debug\type.exe

このようにエラーが出てしまい、コンパイル出来ません。
使用環境は、http://homepage2.nifty.com/natupaji/DxL ... e_bcc.html こちらの通りです。

また、タイピングソフトを作るに当たってアドバイスなどがあれば教えてください。
アドバイスなどもあると大変助かります!

Re: Aキーを押したらTESTと表示

Posted: 2011年7月26日(火) 13:04
by 五反田
http://homepage2.nifty.com/natupaji/DxL ... cc.html#R4
ここらへんからもう一度設定が間違っていないか確認しながらやりなおしてみてください。

それからソースコードですが、ScreenFlip(); はループの最後に持ってこないと何も表示されないことになってしまいます。
これぐらいしか言えないですが、面白そうなタイピングゲームが出来たら是非詳解してください。

Re: Aキーを押したらTESTと表示

Posted: 2011年7月26日(火) 13:08
by softya(ソフト屋)
プロジェクトの新規作成時に
⑧ 『プロジェクト設定』ウインドウの『アプリケーション』タグを選択し、
  その中の『ターゲット』で囲まれている中の『Windowsアプリケーション 』
  を選択します。
をしていないと思います。

あと五反田さんが指摘されている通りScreenFlip()の位置が変です。

Re: Aキーを押したらTESTと表示

Posted: 2011年7月26日(火) 15:33
by x_kai
ありがとうございます、無事実行できました。