函数 kbhit 在 C 中移动对象
Function kbhit to move object in C
该程序正在检测键盘的右键,但是当我试图通过按键盘上的箭头来移动对象时,但是当我这样做时,无论我按哪个箭头,它都在同一行。
我请求帮助将此对象移动到不同的位置。
#include <stdio.h>
#include <windows.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
COORD coord={0, 0};
struct Ship{
int x,y;
}Ship;
struct Ship S;
void gotoxy (int x, int y){
coord.X = x; coord.Y = y; // X and Y coordinates
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void print()
{
system("CLS");
coord.X = 0;
coord.Y = 0;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
printf (">");
}
int main(){
time_t last_change = clock();
int game=1;
int speed=300;
print();
int x=0, y=0;
while (game==1){
if (kbhit()){
int c = getch();
//printf("%d",c);
if (c==224){
c = getch();
//printf("%d",c);
switch (c){
case 72: {y--;printf(">");}
break;
case 80: {y++;printf(">");}
break;
case 77: {x++;printf(">");}
break;
case 75: {x--;printf(">");}
break;
}
}
};
last_change= clock();
}
}
您没有调用 gotoxy
函数,您所做的只是 printf(">");
所以在每个 case
块中添加它,就像这个
case 72: y--;
gotoxy(x, y);
printf(">");
break;
现在您可以驾驶 >
角色在屏幕上四处走动,留下它的踪迹。
请注意,您应该检查 x
和 y
是否在限制范围内。
case 72: if (y > 0) {
y--;
gotoxy(x, y);
printf(">");
}
break;
该程序正在检测键盘的右键,但是当我试图通过按键盘上的箭头来移动对象时,但是当我这样做时,无论我按哪个箭头,它都在同一行。 我请求帮助将此对象移动到不同的位置。
#include <stdio.h>
#include <windows.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
COORD coord={0, 0};
struct Ship{
int x,y;
}Ship;
struct Ship S;
void gotoxy (int x, int y){
coord.X = x; coord.Y = y; // X and Y coordinates
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void print()
{
system("CLS");
coord.X = 0;
coord.Y = 0;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
printf (">");
}
int main(){
time_t last_change = clock();
int game=1;
int speed=300;
print();
int x=0, y=0;
while (game==1){
if (kbhit()){
int c = getch();
//printf("%d",c);
if (c==224){
c = getch();
//printf("%d",c);
switch (c){
case 72: {y--;printf(">");}
break;
case 80: {y++;printf(">");}
break;
case 77: {x++;printf(">");}
break;
case 75: {x--;printf(">");}
break;
}
}
};
last_change= clock();
}
}
您没有调用 gotoxy
函数,您所做的只是 printf(">");
所以在每个 case
块中添加它,就像这个
case 72: y--;
gotoxy(x, y);
printf(">");
break;
现在您可以驾驶 >
角色在屏幕上四处走动,留下它的踪迹。
请注意,您应该检查 x
和 y
是否在限制范围内。
case 72: if (y > 0) {
y--;
gotoxy(x, y);
printf(">");
}
break;