※ ChatGPTを利用し、要約された質問です(原文:矢印キーの反応が悪くなります)
矢印キーの反応が悪くなる問題について
このQ&Aのポイント
キーコントロール関数とmain関数を分割すると、矢印キーの反応が悪くなる問題が発生しました。
分割前のソースコードでは正常に動作していた矢印キーが、分割後のソースコードでは不具合が生じました。
分割してみたソースコードを実行したところ、キーのレスポンスが悪くなってしまいました。
このコードをmain関数とキーコントロール関数とに分けたところ、
キーのレスポンスがわるくなりました。
このソースコードをどのように分割すれば一つのファイルで書いたように、
動いてくれるのかわかりません。
よろしくお願いします。
/* 分割前のソースコード */
#include <stdio.h>
#include <conio.h>
int main(int argc, char *argv[]){
int key=0;
while(key!='q'){ //終了キー 'q'
key=_getch();
//Keyによって分岐
switch((key == 0x00 || key == 0xe0) ? _getch(): key) {
case 0x48:printf("上");break;//上
case 0x50:printf("下");break;//下
case 0x4b:printf("左");break;//左
case 0x4d:printf("右");break;//右
default:break;
}
}
return 0;
}
/*--ここから下が分割してみたソースコード---*/
/* arrowkey.h */
#ifndef ARROWKEY_H
#define ARROWKEY_H
int arrowkey(void);
#endif //ARROWKEY_H
/*---------------------------------*/
/* arrowkey.c */
#include <stdio.h>
#include <conio.h>
#include "arrowkey.h"
int arrowkey(void){
int key=_getwch();
//Keyによって分岐
switch((key == 0x00 || key == 0xe0) ? _getch(): key) {
case 0x48:printf("上");break;//上
case 0x50:printf("下");break;//下
case 0x4b:printf("左");break;//左
case 0x4d:printf("右");break;//右
case 0x71:break;//終了
default:break;
}
return key;
}
/*---------------------------------*/
/* main.c */
#include "arrowkey.h"
int main(int argc, char *argv[]){
int key=0;
while(key!='q'){ //終了キー 'q'
key=arrowkey()
}
return 0;
}
お礼
知って記された部分を直したら、ちゃんと動きました ありがとうございます
補足
MSDNを見ていたらアンダーバー付きばかりだったので、いろいろ試してみてたのですが、どれも同じ反応だったのでそのままで投稿してしまいました。