c 做一个小游戏的很多问题啊,菜鸟求逐一解答

[复制链接]
查看11 | 回复1 | 2011-7-6 01:32:09 | 显示全部楼层 |阅读模式
我们现在学的是普通的编写简单程序,都是win32控制台的那种黑色窗口
如果我想弄成exe的可执行文件需要用到什么技术或知识?
如果我想要编出一个游戏的那种窗口、不是win32的控制台窗口要怎幺弄?先说说方法?
还有MFC是什么?有什么用?例如我想编一个小游戏之类的会用到它么?它能干什么的?
还有如何在c中运用图片?例如我设计一个游戏需要图片又要怎样弄?需要用到什么知识?
不要随便在百科粘贴一大堆过来....我只想知道按常理做出一个游戏的程序的过程和方法而已
回复

使用道具 举报

千问 | 2011-7-6 01:32:09 | 显示全部楼层
能执行就已经产生了EXE,在你的程序文件夹内有个DEBUG文件夹,你的EXE就在里面。
“如果我想要编出一个游戏的那种窗口、不是win32的控制台窗口要怎幺弄?”
你可以建立一个Win32Application工程,选择“典型的HelloWorld”,向导就能给你生成。
建立窗口的步骤:
1:注册窗口类。
2:创建窗口。
3:显示窗口。
4:进入消息循环。

详解:
1:注册窗口类:这一步能够让Windows了解你需要建立的窗口的基本属性。你事先就要定义好你的窗口类名,把它定义到全局变量。这是关键。比如:
TCHARMyWindowClass[255]=TEXT(\"MYCLASS\");
//接着定义我们的窗口句柄:
HWNDMyhWnd=NULL;
//最重要的:消息处理函数的声明
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);

然后就是WinMain里面的语句:
WNDCLASSEXwcex={0};
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.lpfnWndProc                =(WNDPROC)WndProc;//消息处理函数地址。
wcex.hInstance                =hInstance;//进程句柄。
wcex.hIcon                =LoadIcon(hInstance,(LPCTSTR)IDI_GAME2););//载入图标,如果你的资源文件里有图标。没有图标的话,就把这句删掉:
wcex.hCursor                =LoadCursor(NULL,IDC_ARROW);//使用系统默认鼠标指针形态:箭头
wcex.hbrBackground        =(HBRUSH)(COLOR_WINDOW1);//背景色:白色。
wcex.lpszClassName        =MyWindowClass;//窗口类名。
wcex.hIconSm                =LoadIcon(hInstance,(LPCTSTR)IDI_SMALL);//载入小图标,如果你的资源文件里有图标。没有图标的话,就把这句删掉:
RegisterClassEx(//这一步注册窗口类。

2:创建窗口:
MyhWnd=CreateWindowEx(0,MyWindowClass,TEXT(\"标题栏文本\"),WS_OVERLAPPEDWINDOW/*这是类型,详见MSDN*/,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
//如果创建失败:
if(!MyhWnd)return;

3:显示窗口:
ShowWindow(MyhWnd,nCmdShow);
UpdateWindow(MyhWnd);

4:进入消息循环:
这一步是来处理系统消息的。神马叫系统消息?比如:鼠标滑过这个窗体,系统就发送“鼠标滑过”这个消息给你的窗体,你的窗体才能知道“鼠标刚刚划过我的肚子”
MSGmsg;//定义消息结构体
while(msg.message!=WM_QUIT)
{
        if(PeekMessage(
                DispatchMessage(
        }
        else
        {
                //绘制游戏场景
        }
}

我们需要定义消息处理函数:WndProc
LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
        switch(message)
        {
                caseWM_DESTROY:
                        PostQuitMessage(0);
                        break;
                caseWM_PAINT:
                        //当窗口需要重新绘制时,请输入绘制函数。
                        break;
                default:
                        returnDefWindowProc(hWnd,message,wParam,lParam);
        }
        return0;
}

好了,窗体定义成功,绘图的例子:
HDChdc=GetDC(MyhWnd);//获取绘图句柄
SetPixel(hdc,500,200,RGB(255,128,0));//在坐标(500,200)处画一个点,颜色为橘红色
MoveToEx(hdc,300,300,NULL);//把笔尖放在(300,300)处,为划线做准备。
LineTo(hdc,500,500);//画直线,从刚才的笔尖画到(500,500)处。
ReleaseDC(MyhWnd,hdc);//释放绘图句柄
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行