1.写此贴的意图
刚开始学c++,编的是win32 console application,在黑框框里进行输入和输出,觉得和自己想象的程序差好多,有点失望,后来接触到win32程序,感觉和我们平时见到的程序差不多,然后想尝试去编一些简单的游戏,参考了《Windows游戏编程大师技巧》(作者Andre LaMothe)这本书,编了自己的贪吃蛇小游戏,见图1,在编程过程中发现其实核心就是去绘制图形和让图形去移动,图形移动其实就是绘图,只不过相对于之前的图形坐标改变,加上刷新的速度(至少一秒钟30帧)很快,人眼看起来就是很自然的移动。此处分享我学会的如何在win32程序下绘制多边形并移动它.
图一
2、言归正传,第一步:需要创建一个win32程序,步骤参照(http://blog.csdn.net/u010534406/article/details/49817575)。
第二步建立一个多边形类:
class polygon{
public:
int state;//if state=1,the polygon has been initialized,and normal;state=0,no ini
int num;//the NO. of edges
POINT *points;//顶点
int vx,vy;//速度
POINT mid;//mid point;
polygon(POINT*p=NULL,int v1=0,int v2=0,int no=3);
void draw_polygon();
void move_poly();
~polygon (){
points=NULL;
}
};
polygon::polygon (POINT*p,int v1,int v2,int no){
num=no;
vx=v1;
vy=v2;
mid.x=0;
mid.y=0;
points=p;
if(points!=NULL)state=1;
}
void polygon ::draw_polygon (){
if(state==1) Polygon (g_hdc,points,num);
}
void polygon ::move_poly (){
if(state){
mid.x+=vx;
mid.y+=vy;
//make sure the poly is in the screeen
if(mid.x>590) mid.x=0;
if(mid.x<0) mid.x=590;
if(mid.y>410) mid.y=0;
if(mid.y<0) mid.y=410;
for(int index=0;index<num;index++){
points[index].x =mid.x