前面自己写了一个小的游戏开发包,今天闲着无聊,就用这个来写个简单的小游戏,之前给出的那个例子有问题,在此更正下. #include "gameclass.cpp" #include <ctime> wnd *w; surface *img; int x,y; int x1=100,y1=100; LRESULT ondown(HWND h,WPARAM w,LPARAM l){ if(w==VK_LEFT){ if(x>0){ x-=10; } } if(w==VK_UP){ if(y>0){ y-=10; } } if(w==VK_RIGHT){ if(x<300-40){ x+=10; } } if(w==VK_DOWN){ if(y<300-40){ y+=10; } } return 0; } void run(wnd *w,LPVOID l){ if((x>=x1 && x<x1+50) && (y>=y1 && y<y1+50)){ //MessageBox(0,"1",0,0); w->exit(); } if((x+40>x1 && x+40<=x1+50) && (y>y1 && y<=y1+50)){ // MessageBox(0,"2",0,0); w->exit(); } if((x>=x1 && x<x1+50) && (y+40>y1 && y+40<y1+50)){ // MessageBox(0,"3",0,0); w->exit(); } if((x+40>x1 && x+40<=x1+50) && (y+40>y1 && y+40<=y1+50)){ // MessageBox(0,"4",0,0); w->exit(); } w->draw()->fillrect(0,0,640,480); int p=rand()%4+1; if(p==1){ if(y1>0){ y1-=10; } }else if(p==2){ if(y1<300-50){ y1+=10; } }else if(p==3){ if(x1>0){ x1-=10; } }else if(p==4){ if(x1<300-50){ x1+=10; } } w->draw()->rect(0,0,300,300,1,Color(255,200,200,200)); w->draw()->fillrect(x1,y1,50,50,Color(255,100,100,100)); w->draw()->bitblt(img,x,y,40,40); } main(){ srand(time(0)); surface::init(); atexit(surface::unit); w=new wnd; img=surface::loadimg(L"c://2.png",40,40); w->addevent(WM_KEYDOWN,ondown); w->setrun(run,0); w->create(640,480); system("pause"); cout<<1; delete img; delete w; } 游戏是蛮无聊的,但重要的不是结果,而是编写过程中的乐趣。 本文有不足之处,还望大家多多指正。