注册 登录
编程论坛 VC++/MFC

利用WINDOWS编程中的GDI编写小球碰撞游戏

baileibaba 发布于 2009-07-29 00:14, 2432 次点击
利用WINDOWS编程中的GDI编写下列游戏。每按一下空格键,屏幕中心处出现一个小球,屏幕上最多可以出现10个小球,小球按照不同的规则移动,当碰到屏幕边缘的时候换方向,小球碰到屏幕5次后消失,当有一个小球消失,又可以按空格键,再此出现一个。

做了一会老是一个小球碰5次后消失,刚学没有太多的思路了,请高手帮帮忙.先谢过!
5 回复
#2
苏泽2009-08-05 22:23
怎么我运行出来是黑色的。??
根本看不到什么。   
#3
soky2009-08-12 01:28
只能出现一个小球
#4
xufen3402009-08-12 10:22
这个程序一开始结构就设计得不好,后面思路也不正确。
你可以先用vc6生成一个简单的win32程序来看。
一基本结构是:
1.WinMain入口函数。
2.MyRegisterClass注册窗口函数。(在WinMain中调用)
3.InitInstance创造窗口并显示。(在WinMain中调用)
4.WndProc窗口过程,用来捕捉消息,并执行事件。
所以在WinMain中就是下面情况:
 
WinMain
{
   MyRegisterClass;
   InitInstance;
   (GetMessage)or(PeekMessage);//这里是捕捉消息。
}
MyRegisterClass(){}
InitInstance(){}
WndProc(){}
二:捕捉消息后如何响应,其实就是消息来了如何调用程序。
在WndProc中调用
WndProc()
{
    case 某某消息:
        调用执行的函数;
}
比如你这个游戏:
WndProc()  
{  
。。。。。。。。。
    case VK_SPACE::  
        ball();//调用球类碰撞动画
。。。。。。。
}
ball(){}
三:peekmessage和getmessage的区别
你这个程序只要getmessage就可以,peekmessage不需要。在WinMain中如下:
     while (GetMessage (&messages, NULL, 0, 0))  
    {  
        /* Translate virtual-key messages into character messages */  
        TranslateMessage(&messages);  
        /* Send message to WindowProcedure */  
        DispatchMessage(&messages);  
    }  
    return messages.wParam;
四:球类碰撞动画的思考
变量:
kmaxballnum=10 最多10个小球
ktouchnum=5 最多碰5次
函数:
drawball()//画小球
ballmove(方向,速度)//小球移动
方向 balltouch() //小球撞倒墙壁,返回新方向
removeball()//5次碰撞后擦除小球。

希望对你有帮助
#5
xufen3402009-08-13 09:11
后来我考虑一下,每按空格出现一个球,不超过10个,用getmessage和peekmessage都不能完成,这里恐怕要弄个多线程,每次按空格,产生个线程.
#6
xifuzhaoll2013-08-24 15:00
1