前提・実現したいこと
矢印キー押下で文字が画面上を移動する
ここに質問の内容を詳しく書いてください。
borlandを使用して矢印キー押下で文字が画面上を移動するプログラムを作成しております。
今のコードだとエラーは出ていないのですが矢印キーを押下しても文字が移動しない状態です。
発生している問題・エラーメッセージ
今のコードだと座標は取れているのですが、その座標に文字が移動しない状態です。
該当のソースコード
C言語
1#include<stdio.h> 2#include<conio.h> 3 4#define KEYPUSH 0x00 5#define KEYUP 0x48 6#define KEYDOWN 0x50 7#define KEYRIGHT 0x4d 8#define KEYLEFT 0x4b 9#define KEYESC 0x1b 10#define XMAX 19 11#define YMAX 19 12#define XMIN 0 13#define YMIN 0 14 15char xold; 16char yold; 17char x ; 18char y; 19char ESC = 0x1b; 20char pos[YMAX][XMAX]; 21 22char key(void) 23{ 24 short kn; 25 kn = getch(); 26 if(kn == KEYPUSH) 27 { 28 kn = getch(); 29//printf("%x ",kn); 30 switch(kn) 31 { 32 case KEYUP:/*上*/ 33 if(yold>YMIN) 34 { 35 y = yold-1; 36 yold = y; 37 //printf("%d ",y); 38 } 39 break; 40 case KEYDOWN:/*下*/ 41 if(yold<=YMAX) 42 { 43 y = yold+1; 44 yold = y; 45 //printf("%d ",y); 46 47 } 48 break; 49 case KEYLEFT:/*左*/ 50 if(xold>=XMIN) 51 { 52 x = xold-1; 53 xold = x; 54 //printf("%d ",x); 55 } 56 break; 57 case KEYRIGHT:/*右*/ 58 if(xold<=XMAX) 59 { 60 x = xold+1; 61 xold = x; 62 //printf("%d ",x); 63 } 64 break; 65 case KEYESC: 66 return ESC; 67 default: 68 break; 69 } 70 } 71//printf("x = %d y = %d",x,y); 72 return 0; 73} 74 75void disp(y,x) 76{ 77 printf("%c",pos[y][x]); 78} 79 80void main(void) 81{ 82 xold = 5; 83 yold = 5; 84 pos[yold][xold] = 'X'; 85 printf("%c",pos[yold][xold]); 86//printf("元の位置\n"); 87 while(1) 88 { 89 if(key() == ESC) 90 break; 91 else 92 disp(); 93 } 94}
試したこと
disp関数の引数をアドレス参照にしてみる
補足情報(FW/ツールのバージョンなど)
borland c++ compiler 5.5
ここにより詳細な情報を記載してください。
当方年明けから勉強し始めた初心者なのでとんちんかんなことを聞いているのかもしれないですが、key()でキー押下処理の
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/26 11:58