好像<window.h>有个函数是可以移动光标的。
去追寻更高的技术领域。永不停止。
#include <stdio.h> #include<conio.h> #include<windows.h> #include<time.h> #include<stdlib.h> #include<iostream> int Tui(int (*arr)[20],int *x,int *y,int n); void Move(int x,int y) { HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE); COORD pos= {x, y}; SetConsoleCursorPosition(hOut, pos); } void Put(int (*arr)[20])//打印地图 { int x=1,y=1; int i,j; arr[x][y]=2; for (i=0;i<20;i++) { for (j=0;j<20;j++) { if (arr[i][j]==1) printf("■"); if (arr[i][j]==2) printf("¤"); if (arr[i][j]==0) printf(" "); if (arr[i][j]==3) printf("◎"); if (arr[i][j]==5) printf("〓"); if (arr[i][j]==6) printf("▲"); if (arr[i][j]==7) printf("△"); if (arr[i][j]==8) printf("¤"); if (arr[i][j]==9) printf("▲"); } printf("\n"); } } void character(char n1,int (*arr)[20],int *x1,int *y1) //传数组的首地址, { int x=*x1,y=*y1; switch(n1) { case 'w':case'W': //上 if(arr[*x1-1][*y1]==1/*||arr[*x1-1][*y1]==7*/||arr[*x1-1][*y1]==8) { break; } if (arr[*x1-2][*y1]==1&&arr[*x1-1][*y1]==7) { break; } {arr[(*x1)--][*y1]=2; arr[*x1+1][*y1]=0;} break; case's':case'S': //下 if (arr[*x1+1][*y1]==1/*||arr[*x1+1][*y1]==7*/||arr[*x1+1][*y1]==8) { break; } if(arr[*x1+2][*y1]==1&&arr[*x1+1][*y1]==7) { break; } arr[(*x1)++][*y1]=2; //(*x1)++加括号 arr[*x1-1][*y1]=0; break; case'a':case'A': //左 if(arr[*x1][*y1-1]==1/*||arr[*x1][*y1-1]==7*/||arr[*x1][*y1-1]==8) { break; } if(arr[*x1][*y1-2]==1&&arr[*x1][*y1-1]==7) break; arr[*x1][(*y1)--]=2; arr[*x1][*y1+1]=0; break; case'd':case'D': //右 if(arr[*x1][*y1+1]==1/*||arr[*x1][*y1+1]==7*/||arr[*x1][*y1+1]==8) { break; } if (arr[*x1][*y1+2]==1&&arr[*x1][*y1+1]==7) break; arr[*x1][(*y1)++]=2; arr[*x1][*y1-1]=0; break; } Move(y*2,x);printf(" ");//老人物坐标 Move((*y1)*2,*x1);printf("¤");//新任务坐标 } 。。看看行不,就是抹除上一个坐标