需要一个ConsoleOut.lib静态库,自行下载
ConsoleOut.h:
#include <Windows.h>
/******************************************
/ 功 能:设置控制台光标位置
/ 输入参数:nX -- 光标X轴坐标
/ nY -- 光标Y走坐标
/ 返回参数:无
/*作 者:AA
/*版 本:v1.0
/*修改日期:2005.09.27
******************************************/
void MoveCursorTo(int nX, int nY);
/******************************************
/ 功 能:设置控制台文本显示颜色
/ 输入参数:nColorFront --文本前景色
/ nColorBackGroup
--文本背景色
/ 返回参数:无
/*作 者:AA
/*版 本:v1.0
/*修改日期:2005.09.27
******************************************/
void SetTextColor(int nColorFront, int nColorBackGroup);
/******************************************
/ 功 能:建立一个简单的矩形窗口
/ 输入参数:Left --- 窗口左上角x轴坐标
/ Top --- 窗口左上角y轴坐标
/ Width --- 窗口宽度
/ Hight --- 窗口高度
/ nFrameTextColor ---- 窗口边框颜色
/ nFrameBkColor ---- 窗口边框背景颜色
/ nWinTextColor
---- 窗口文字颜色
/ nWinBkColor ---- 窗口背景色
/ title --- 窗口标题
/ Shadow ----窗口是否有阴影
/ 返回参数:无
/*作 者:AA
/*版 本:v1.0
/*修改日期:2005.09.29
*******************************************/
void CreateSmWindow( int Left, int Top, int Width, int Hight,
int nFrameTextColor,
int nFrameBkColor,
int nWinTextColor,
int nWinBkColor,
char title[]="",bool Shadow = false );
main.cpp:
#include <stdio.h>
#include <conio.h>#include <stdlib.h>
#include <windows.h>
#define UP 72
#define DOWN 80
#define LEFT 75
#define RIGHT 77
#define TOP 0
#define LOW 43
#define BL 0
#define BR 75
#include "ConsoleOut.h"
#pragma comment (lib, "ConsoleOut.lib")
typedef struct Cursor
{
int x,y;
}Cur;
Cur cur1,cur2;
int main()
{
int keyx=0,keyy=0;
int i,j,ch;
CreateSmWindow(0, 0, BR, LOW, 0xF, 0, 0, 0, "", false);
cur1.x = 25;
cur1.y = 15;
MoveCursorTo(cur1.x, cur1.y);
printf("%c",2);
while(1)
{
if(ch = kbhit())
{
if(ch==27)
{
system("cls");
break;
}
switch(getch())
{
case 'a':
case 'A':printf("A\n");break;
case 'S':
case 's':printf("S\n");break;
case 'd':
case 'D':printf("D\n");break;
case 'w':
case 'W':printf("W\n");break;
case 32:keyx = 0;keyy = 0;system("pause");break;
case 13:printf("回车llll\n");break;
case UP:keyx = 0;keyy = -1;break;
case LEFT:keyx = -2;keyy = 0;break;
case RIGHT:keyx = 2;keyy = 0;break;
case DOWN:keyx = 0;keyy = 1;break;
}
}
MoveCursorTo( cur1.x, cur1.y);
printf("%c",' ');
if(cur1.x + keyx >=BL+2 && cur1.x + keyx <= BR+2)
cur1.x += keyx;
if(cur1.y + keyy >=TOP+1 && cur1.y + keyy <= LOW)
cur1.y += keyy;
MoveCursorTo( cur1.x, cur1.y);printf("%c",2);
Sleep(100);
}
return 0;
}