关于c/c++语言中的图形移动有关问题

关于c/c++语言中的图形移动问题
在下新手,有个小问题想请教一下。

在屏幕上显示一个小方格,要实现的功能是用鼠标可以把他移动到任意方位。所用语言是C/C++。

------解决方案--------------------
去windows编程版问。本问题和C、C++无关。
------解决方案--------------------
看看位图相关的东西,你可以管理帖子,转移到WINDOWS编程版,这样就不用给两次分了。
------解决方案--------------------
类似如下过程:

本程序用于描绘一个旋转的多面体,有如下控制健,1,2,3,4,5,6,7,8,9,0(小键盘).a,s,d,w,(和cs一样的功能)程序中有详细的说明.希望经验大家交流--贾胜华.

#include <math.h>
#include <stdio.h>
#include <graphics.h>

main()
{int i,j; /*循环变量*/
int mode=VGAHI,driver=VGA;
int l,n,k=0;
char gg,hh[13]= "complete % ";
float arf,the,baty=0,batz=0,r; /*角度变量*/
float xx[5],yy[5],zz[5],x,y,z; /*三维变量*/
float a[32][16][3],c[32][16][3][2];/*用于暂存?/
initgraph(&driver,&mode, "\\tc ");/*图像初始化*/

xx[4]=0;/*初值*/
yy[4]=0;
zz[4]=0;
xx[3]=0;
yy[3]=0;
zz[3]=0;

for(i=0;i <=31;i++)/*对c[][][][]付初值*/
for(j=0;j <=15;j++)
for(l=0;l <=2;l++)
{c[i][j][l][0]=0;
c[i][j][l][1]=0;}

setfillstyle(1,9);

for(i=0;i <=31;i++) /*按角度开始求解方程*/
{
cleardevice(); /*这一段用于实现求解进度条*/
rectangle(9+220,19+220,114+220,31+220);
bar(10+220,20+220,10+3*i+6+220,30+220);
hh[10]=(3*i+6)%10+48;
hh[9]=(3*i+6-(3*i+6)%10)/10+48;
outtextxy(120+220,20+220,hh);

for(j=0;j <=15;j++)
{
the=(3.1415926/15)*(j-7.5);/*角度的精度为0.0000001*/
arf=(3.1415926/31)*i*2;
for(r=0;r <150;r+=0.01) /*(精确度为0.01)开始求解方程*/
{x=r*cos(the)*cos(arf);
y=r*cos(the)*sin(arf);
z=r*sin(the);
if((x*x/100+y*y/100+z*z-100)*(x*x/100+y*y/100+z*z-100) <0.001)/*此处插入用户曲面方程*/
break;
}

a[i][j][0]=x;/*保存求解结果,一次保存三个量是用空间换时间.(可以改进)*/
a[i][j][1]=y;
a[i][j][2]=z;
}
}

cleardevice();
l=0;
the=0;
gg= '6 ';
for(;;) /*开始处理用户的控制*/
{ /*这一段用于实现移动*/

if(gg== 'w '||gg== 'W ') yy[4]-=1; /*前进*/
else if(gg== 'a '||gg== 'A ') {if(l==0) xx[4]+=1; if(l==1) the-=0.01;}/*左移或者右转*/
else if(gg== 's '||gg== 'S ') yy[4]+=1; /*后退*/
else if(gg== 'd '||gg== 'D ') {if(l==0) xx[4]-=1; if(l==1) the+=0.01;}/*右移或者左转*/
else if(gg== 'c '||gg== 'C ') {l=(l-1)*(l-1);gg= 'q ';}/*a,d功能控制键*/
/*接下来用于实现转动*/
else if(gg== '6 ') batz+=0.01;/*左转*/
else if(gg== '8 ') baty+=0.01;/*上转*/
else if(gg== '2 ') baty-=0.01;/*下转*/
else if(gg== '4 ') batz-=0.01;/*右转*/
else if(gg== '9 ') {batz+=0.01;baty+=0.01;}/*右上*/
else if(gg== '1 ') {batz-=0.01;baty-=0.01;}/*左下*/
else if(gg== '7 ') {batz-=0.01;baty+=0.01;}/*左上*/
else if(gg== '3 ') {batz+=0.01;baty-=0.01;}/*右下*/
else if(gg== '0 ') exit(0);/*退出*/
else ;/*其他键,为暂停*/

r=pow(xx[4]*xx[4]+yy[4]*yy[4],0.5);
k=(1-k)*(1-k);

if(kbhit())/*判断用户是否有键入*/
gg=getch();

for(i=0;i <=31;i++)/*开始3D-> 2D的转换*/
for(j=0;j <=15;j++)
{
xx[0]=a[i][j][0];/*承接求解数据*/
yy[0]=a[i][j][1];
zz[0]=a[i][j][2];

xx[1]=xx[0]*cos(baty)-zz[0]*sin(baty);/*延y轴的偏转计算*/
zz[1]=sin(baty)*xx[0]+cos(baty)*zz[0];
yy[1]=yy[0];

xx[2]=xx[1]*cos(batz)-yy[1]*sin(batz)+xx[4];/*延z轴的偏转计算*/