トップページ > 過去ログ > 記事閲覧
Keyについて
名前:とある頑張っているゲームクリエイター 日時: 2012/12/28 16:03

#include "DxLib.h" int Key[256]; // キーが押されているフレーム数を格納する // キーの入力状態を更新する int gpUpdateKey(){ char tmpKey[256]; // 現在のキーの入力状態を格納する GetHitKeyStateAll( tmpKey ); // 全てのキーの入力状態を得る for( int i=0; i<256; i++ ){ if( tmpKey[i] != 0 ){ // i番のキーコードに対応するキーが押されていたら Key[i]++; // 加算 } else { // 押されていなければ Key[i] = 0; // 0にする } } return 0; } int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定 int x=0; // while(裏画面を表画面に反映, メッセージ処理, 画面クリア, キーの状態更新) while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && gpUpdateKey()==0 ){ DrawFormatString( x, 0, GetColor(255,255,255), "?!" ); // x,0 の位置に白で ?! を描画 if( Key[KEY_INPUT_RIGHT] == 1 ){ // 右キーが押された瞬間なら x = x + 50; // xを50加算 } } DxLib_End(); // DXライブラリ終了処理 return 0; } ============================================= ↑visual studio2012に入力すると Keyの下に波線が出ます。 そして Error:呼び出しのかっこの前の式は、関数型(またはpointer-to-function型)である必要があります。 と表示されます。 ビルドすると d:\game\game\main.cpp(53):error C2064:1 引数を取り込む関数には評価されません と表示されます。 ============== 以上です。ありがとうございます!

Page: 1 |

Re: Keyについて ( No.1 )
名前:Will 日時:2012/12/29 09:37

手持ちが2010しか無いのですが、2010では問題なくビルドできます。 ソースコードを見ても間違いがあるようには思えません。 リビルドしてみてください。 > d:\game\game\main.cpp(53):error C2064:1 引数を取り込む関数には評価されません とのことですが、提示のソースは53行もありません。(37〜8行しかない) 53行目はどの行でしょう?
Re: Keyについて ( No.2 )
名前:とある頑張っているゲームクリエイター 日時:2012/12/29 13:39

>>Will ご解答ありがとうございます。わかりました。今直してみます。
Re: Keyについて ( No.3 )
名前:とある頑張っているゲームクリエイター 日時:2012/12/29 13:47

#include "def.h" #include "Init.h" #include "title.h" #include "play.h" #include "over.h" int Key[256];//キーが押されているフレーム数を格納する int InitKey() { //キーの入力状態を更新する char tmpKey[256];//現在のキーの入力状態を格納する GetHitKeyStateAll(tmpKey);//全てのキーの入力状態を得る for(int i=0;i<256;i++) { if(tmpKey[i]!=0){//i番のキーコードに対応するキーが押されていたら Key[i]++;//加算 }else{ //押されていなければ Key[i]=0;//0にする } } return 0; } int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR ipCmdLine,int nCmdShow) { ChangeWindowMode(TRUE); WindowsInit(); SetWindowUserCloseEnableFlag(FALSE); if(DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_BACK)!=0 && InitKey()==0)return -1; int GameState = GAME_TITLE; while(InitKey() == 0) { switch (GameState) { case GAME_TITLE: title(GameState); break; case GAME_PLAY: play(GameState); break; case GAME_OVER: over(GameState); break; default: printfDx("不明なGameState\n"); break; } ScreenFlip(); if(Key(KEY_INPUT_ESCAPE)==1) { break; } } return 0; } ==================== 使ってみたら、Key(KEY_INPUT_ESCAPE)==1はエラーを出ます。一体どうしてですか。
Re: Keyについて ( No.4 )
名前:Will 日時:2012/12/29 14:12

if( Key[KEY_INPUT_RIGHT] == 1 ){ if(Key(KEY_INPUT_ESCAPE)==1) 何が違うかひと目で分かりますよね。
Re: Keyについて ( No.5 )
名前:とある頑張っているゲームクリエイター 日時:2012/12/29 18:08

そこか!?!!!! ほんとにありがとうございました!!!!!!助かりました。(*'▽')もう問題ないです。

Page: 1 |