c++ win32做了哪些win7 32位 游戏进不去

&_&:Just the minimum Win32 &frame don't have any other special function.
1 //{{NO_DEPENDENCIES}}
2 // Microsoft Visual C++ generated include file.
3 // Used by FE.RC
5 #define IDR_MAINFRAME
6 #define IDD_FE_DIALOG
7 #define IDD_ABOUTBOX
8 #define IDS_APP_TITLE
9 #define IDM_ABOUT
10 #define IDM_EXIT
11 #define IDS_HELLO
12 #define IDI_FE
13 #define IDI_SMALL
14 #define IDC_FE
15 #define IDC_MYICON
16 #define IDC_STATIC
17 // Next default values for new objects
19 #ifdef APSTUDIO_INVOKED
20 #ifndef APSTUDIO_READONLY_SYMBOLS
22 #define _APS_NEXT_RESOURCE_VALUE
23 #define _APS_NEXT_COMMAND_VALUE
24 #define _APS_NEXT_CONTROL_VALUE
25 #define _APS_NEXT_SYMED_VALUE
resourse.h 资源ID文件
1 // stdafx.h : include file for standard system include files,
or project specific include files that are used frequently, but
are changed infrequently
6 #if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1___INCLUDED_)
7 #define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1___INCLUDED_
9 #if _MSC_VER & 1000
10 #pragma once
11 #endif // _MSC_VER & 1000
13 #define WIN32_LEAN_AND_MEAN
// Exclude rarely-used stuff from Windows headers
16 // Windows Header Files:
17 #include &windows.h&
19 // C RunTime Header Files
20 #include &stdlib.h&
21 #include &malloc.h&
22 #include &memory.h&
23 #include &tchar.h&
25 // Local Header Files
27 // TODO: reference additional headers your program requires here
29 //{{AFX_INSERT_LOCATION}}
30 // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
32 #endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1___INCLUDED_)
StdAfx.h 头文件和系统及设置
1 #include "stdafx.h"
2 #include "resourse.h"
4 #define MAX_LOADSTRING 100
6 // Global Variables:
7 HINSTANCE hI
// current instance
8 TCHAR szTitle[MAX_LOADSTRING];
// The title bar text
9 TCHAR szWindowClass[MAX_LOADSTRING];
// The title bar text
11 // Foward declarations of functions included in this code module:
MyRegisterClass(HINSTANCE hInstance);
InitInstance(HINSTANCE, int);
14 LRESULT CALLBACK
WndProc(HWND, UINT, WPARAM, LPARAM);
15 LRESULT CALLBACK
About(HWND, UINT, WPARAM, LPARAM);
16 //========================================================================================
17 int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
lpCmdLine,
// TODO: Place code here.
MyRegisterClass(hInstance);//调用函数向系统注册窗口类别,输入参数hInstance是目前运行程序的对象代码;
// 调用InitInstance函数,进行初始化操作;
if (!InitInstance (hInstance, nCmdShow))
return FALSE;
// 消息循环(通过消息循环来获取信息,
//进行必要的键盘信息转换而后将控制权交给操作系统,
//有操作系统决定哪个程序的消息处理函数处理消息
while (GetMessage(&msg, NULL, 0, 0)) //获取程序消息
TranslateMessage(&msg);//转换伪码及字符
DispatchMessage(&msg);//将控制权交给系统,再有系统决定负责处理消息的程序;
return msg.wP
44 //=====================================================================================
48 //=============================================================================================
49 //在建立程序窗口实体之前,必须先定义一个窗口类别,其中包含所要建立窗口的信息,
50 //并向系统注册,这里的MyRegisterClass函数就是进行定义及注册窗口类别的函数。
51 //==============================================================================================
52 ATOM MyRegisterClass(HINSTANCE hInstance)
WNDCLASSEX
//申请一个窗口类别&WNDCLASSEX&和结构&wcex&
//--------------------------------------------------------------
//定义vcex结构的各项信息,其中设定信息处理函数(lpfnWndProc)
//为WNDPROC,类别名称为(lpszClassName)为&fe";
//--------------------------------------------------------------
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style
= CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc
= (WNDPROC)WndP
wcex.cbClsExtra
wcex.cbWndExtra
wcex.hInstance
wcex.hIcon
wcex.hCursor
= LoadCursor(NULL,IDC_ARROW);
wcex.hbrBackground
= (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName
wcex.lpszClassName
wcex.hIconSm
return RegisterClassEx(&wcex);//调用RegisterClassEx函数注册类别,返回一个&ATOM"形态的字符串
//此字符串即为类别名称&fe";
76 //============================================================================================
79 //============================================================================================
80 //按照前面所定义的窗口类别来建立并显示实际的程序窗口
81 //============================================================================================
82 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
hInst = hI // 把instance handle 储存在全局变量中;
hWnd = CreateWindow("fe","绘图窗口",WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
//-----------------------------------------------
//调用CreateWindow函数来建立一个窗口对象
//第一个参数就是窗口建立依据的类别名称
//-----------------------------------------------
if (!hWnd)
return FALSE;
//------------------------------------------------
//设定窗口的位置及窗口的大小,然后绘制显示在设备上
//------------------------------------------------
MoveWindow(hWnd,10,10,600,450,true);//位置及大小
ShowWindow(hWnd, nCmdShow);//改定窗口显示时的状态
UpdateWindow(hWnd);//将窗口绘制在显示设备上
return TRUE;
106 //============================================================================================
109 //============================================================================================
110 //在前面定义类别的时候把WndProc定义为消息处理函数(当某些外部消息发生时,会按消息的类型
111 //来决定该如何进行处理。此外该函数也是一个回叫函数(CALLBACK)(windows系统函数)每一个
112 //程序都会接收信息,选择性接受、处理;
113 //============================================================================================
114 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
PAINTSTRUCT
switch (message)
//判断消息类型
case WM_PAINT:
//窗口重绘制
hdc = BeginPaint(hWnd, &ps);
EndPaint(hWnd, &ps);
case WM_DESTROY:
//处理窗口结束消息
PostQuitMessage(0);
return DefWindowProc(hWnd, message, wParam, lParam);
133 //============================================================================================
阅读(...) 评论()后使用快捷导航没有帐号?
 论坛入口:
  |   |    |   | 
我要游戏程序
请教打算做c++游戏编程方向 是不是就不用学mfc了啊??
Re:请教打算做c++游戏编程方向 是不是就不用学mfc了啊??
Re:请教打算做c++游戏编程方向 是不是就不用学mfc了啊??
应该说,会MFC,就会C++,,而不是会C++就会MFC,,,,,,,,
C++只是语言,MFC是基于C++对象的集合,,,怎么能混为一谈呢,两码子事...
Re: Re:请教打算做c++游戏编程方向 是不是就不用学mfc了啊
aovi: Re:请教打算做c++游戏编程方向 是不是就不用学mfc了啊??
确实如此。。。可是时间啊。。。。我的时间总是不够用。。。
还是想先学比较必要的技术。。。。
Re:请教打算做c++游戏编程方向 是不是就不用学mfc了啊??
我建议你最好先把C++基础打好,就像我们日常生活中和别人门交流一样,那些语言逻辑表达能力强的人,和别人交谈能很快地让他人了解自己的想法,相反那些不擅于表达的人,很简单的一件事,他说了好长时间,到最后他人可能会说句:你到底想要说什么?无语……其实任何一门编程语言和咱们说活一样,只不过我们用汉语是和人交流,而C++是和计算机交流……
最后再给你提点我自己小小的、也许是大家的感悟吧(可能对高手来说这是最基本的,所以觉没必要,但我还是希望能够帮到一些人):日常生活或学习中,碰到一些问题,不要急于上网上去下相关软件或是什么的,而是想想看如果是自己的话,应该怎么用编程去解决,可能许多问题不是自己能够解决的,但你只要去想了、勤于思考了,并用程序写下了自己的思考过程,我相信只要一直这样下去,不久的以后,你也能成为高手的……
Re: Re:请教打算做c++游戏编程方向 是不是就不用学mfc了啊
luoqi: Re:请教打算做c++游戏编程方向 是不是就不用学mfc了啊??
应该说,会MFC,就会C++,,而不是会C++就会MFC,,,,,,,,
C++只是语言,MFC是基于C++对象的集合,,,怎么能混为一谈呢,两码子事...
我见过很多人会用MFC但是不能说他们都会C++。
MFC只是用到了C++的一小部分特性,像模版什么的根本就没有涉及,标准库也没有用多少,而且即使是OOP的部分,MFC的封装也特别薄,导致很多人用了MFC但写出来的程序还是那种老式C风格的面向过程程序。
不会OOP、不会GP、不知道C++标准库里面的大部分内容,这样的人能算会C++吗?但是这样的人的确可以会MFC啊。
Re:请教打算做c++游戏编程方向 是不是就不用学mfc了啊??
只要你打算在windows下做游戏,那么MFC就是有必要学的。这不是用不用它写界面的问题,而是你需要了解windows机理的问题。即使你不用它,你也得了解Win32的那一套机制。
如果是其它平台的(包括与平台无关的Java和纯.net),那么可以不用学MFC。
或者你如果是做纯粹平台不相干的内容,比如不涉及平台的引擎什么的,那么也可以不用学。
Re:请教打算做c++游戏编程方向 是不是就不用学mfc了啊??
我认为做为程序员连C++都没学好,谈MFC就有点过早了,怎么说MFC是用C++组合而成的!引用古人的话:欲速则不达,还把基础打好了,才能在以后有所成就,要不然早晚会从新看这些所谓的基础的……
Re: Re: Re:请教打算做c++游戏编程方向 是不是就不用学mfc了
sandy_zc_1: Re: Re:请教打算做c++游戏编程方向 是不是就不用学mfc了啊??
我见过很多人会用MFC但是不能说他们都会C++。
MFC只是用到了C++的一小部分特性,像模版什么...
我觉得你要深入MFC,,,,
&&深入剖析MFC&&这书不错,,至少我的N个前辈,都是这么认为的,,,
你说的那部分都在MFC中有,,而且只是MFC的极少部分,,,
如果你从MFC中,深入到WINDOWS源代码中了,,那应该说是过得去了,
如果再深入到全面了解WINDOWS,那算是高手了吧.
那本书就是这么做的,,
所以我说,会MFC,,,应该会C++了
要是真正会MFC,,也可以写个OS了,,难道这还不够?
其实学什么都行,只要肯学,无论是从MFC,还是从C++
我就是从MFC开始的,,但到不懂的,再查C++
然后从C++到汇编,,先用C++写好,编译,再看汇编代码,,不懂的再查汇编.
学习,只是个过程.
其实,我最早是从VBScript(不是 Visual Basic)开始的,,呵呵...
只是这样,思考的方式会不同,
从汇编开始的人,一般会首先考虑效率问题.
而从MFC开始的人,会先考虑接口,OO,等问题.而在瓶颈处,再考虑效率问题.
这,不是说某个好某个坏,,是各有优缺点的,,
但当你,在设计方面和基础都很熟悉的时候,,就可以全面撑握了.
Re: Re: Re: Re:请教打算做c++游戏编程方向 是不是就不用学mf
luoqi: Re: Re: Re:请教打算做c++游戏编程方向 是不是就不用学mfc了啊??
我觉得你要深入MFC,,,,
&&深入剖析MFC&&这书不错,,至少我的N个前辈,都是这么认为的,,,
MFC对学习Win32很有帮助,但是对学习C++真的没有太大帮助。
我从来没说不应该深入MFC,但是深入MFC和深入C++是完全两回事。
你如果想真深入,我还是建议你去看《windows核心编程》,这玩意才是真正的本质,MFC只是一层简单的而且不怎么优秀的封装。
事实上大部分人不会去使用更不会去完全搞清楚MFC的所有部分,因为完全没有必要。而想要通过学习MFC来学习C++真的是有些南辕北辙。
C++没学好搞MFC的人则更有一大把。想要真正把C++搞好,没有好几年的功底、没有见识过大量各种代码是不可能的。
另外请不要把精于操作系统编程和精于C++搞混,深入全面了解Windows的,不一定对C++有很好了解,可以写OS的更不一定,Linux社区下相当一部分人都是只靠C吃饭的(而且其中有不少人反感C++,比如Linus本人)
可以写OS代表你对OS的运作机制有深入了解,但我还是没有看出这个和会不会C++有什么关系。
真能了解MFC到可以写OS的地步,那是因为它们对Win32的机制非常了解,到了这个地步都没人在乎MFC了。
而且即使是OO,MFC做的也并不优秀。MFC的封装很不彻底,体现OO思想也不够纯粹,有太多的库在OO方面比MFC更好更直观。
(当然并不是说MFC不好,只是作为OO的一个范例,其的确不够彻底)
还是那点:不会泛型、不了解标准库的人完全没有任何资格说自己会C++。但不会这些你一样可以用MFC用得很欢。
Re:请教打算做c++游戏编程方向 是不是就不用学mfc了啊??
说明你还得深入.....
你还没有明白我的意思
你还是把每个东西分开来比较,你说的这些,我都看过,也用过,我只是学了MFC,,我只是深入了一点点,
在我还没有完全深入的时候,你这些东西我都了解了,请你仔细看,我上面写的,MFC-&C++-&ASM-&OS-&....
你可以去看一个开源的OS,pedigree,,你看他们C++运用得如何,,,C++只是工具,,,深入只是为了工具???一个工具算得了什么呢?
你说泛型什么的,STL我都翻烂了,这种编程思想确实是有很多好处,我也写过很多,,但并不是什么东西都是完美的,只是看到了他的优点,还要认识他的缺点,这样才能准确地把他们用到什么场合.
为什么我会翻STL呢,只是因为我在MFC中看到了一个class T,这是什么???我要深入,我就去买了本&&STL源码剖析&&,,看完了,写,不会再看....
还有,当我看到CRuntimeClass的时候,,我便看了COM,&&COM本质论&&,,也看了设计方面的,好几本,大同小异,,
当我看到_asm的时候,我便看了&win32 masm&,然后看了x86, 认识了硬件方面的一些东西,,再就是MMX,SSE,
当我看到BitBlt的时候,我看了各种渲染方法(常用的几个),然后进入了游戏世界,,直到现在,我还只是在不断深入.
当我看到在STL中看到reinterpret_cast...时,我便买来了&C++方面的书&,桌了上已经堆了有十来本与C++相关的,认识了Bjarne Stroustrup,及他的一些相关事迹,
也看了一些C与C++的争论,,也学习了C,,...........还有什么我不可以学习的呢,,只要我愿意,我就去深入,学习....
我也去看了linux(redhat),freebsd,因为,网上很多代码,都用gcc,于是我看了相关的书,只是了解了一下,并没有深入,因为我发现我的用户群,不在这一块,我不能把我有限的时间,用在对于我来说没有收入的地方,虽然那个东西很好,也许在我空闲的时候,我会去深入,这只是计划.
所有这些,只因为我买了电脑,不小心装了VS,以及不小心进入了VS C++,, 不小心发现了MFC......
当一个人完全深入编程世界中的时候,,你认为他是什么样的,C++之父??天极传媒:天极网全国分站
您现在的位置: >>
游戏开发新手入门之Win32程序资源
  简介  通过本章题目可能你已经猜出了本章论题,我将教会你在程序中使用资源。简单的讲,资源即数据,它们通常是和程序的EXE相关联的,但是它们又是独一无二的。首先,资源在运行过程中不能被修改。它们实际上都是只读文件,而且程序代码不能够直接访问它们。另外,资源并不在程序的数据区内。在装入时,程序资源通常在某个磁盘文件中,直到程序需要它们时才被装入。使用资源是一件很容易的事情,并且它的妙处无穷。Windows为我们提供了大量的资源类型,但我们这里只学一些最常用,最容易的:图标(icon)、光标(cursor)、位图(bitmap)、菜单(menu)和字符串(string)。此后,我还将教你建立自己风格类型的资源,使你为所欲为。  重复一下,要想看懂本章,你得有点C语言的基础。C++有时用一用,但不影响你学习本章内容。并且我假定你已经读过了上一章内容“Windows编程基础”。我还是用 Visual C++的编译器,怎么样?出发吧!   ☆ 资源脚本  在进行细节之前,我们要先搞懂怎样要编译器知道它所要编译的资源类型。方法是使用称之为资源脚本的特殊文件,它是一个简单的文本文件,可以手工编辑,也可以让Visual C++自动编辑,或者你用其它的自动编辑器编辑。无论如何,资源脚本文件要有一个.rc的扩展名。大多数的脚本文件都从定义资源行开始,最简单的资源行通常要用到资源类型,就像这样:  [identifier] [resource type] [filename]  【标识符】 【资源类型】 【文件名称】  标识符可以用两种方式表示:一种是能表示资源意思的字符串,另一种是在资源相对应的头文件中用#define定义过的数字常量。如果你选择数字常量,这通常是一个好主意,别忘了把相应的头文件加入到你的资源脚本。资源脚本使用C语言风格的文件格式好像比较容易理解。以下是一个比较简单的资源脚本实例:
#include "resource.h"
ICON_MAIN ICON myicon.ico
// bitmaps
IMG_TILESET1 BITMAP tileset.bmp
IMG_TILESET2 BITMAP tileset2.bmp
  好理解吧!但有一件事可能把人弄胡涂。例子中的ICON_MAIN和IMG_TILESET是字符串呢,还是数字常量?但这无伤大雅,编译器编译的时候会自己判断。如果发现在头文件中有#define的定义,那就认为是字符常量,否则,就是字符串。  如果有些迷茫,不要紧。我将解释我们要用到的每一个资源类型。什么?觉得麻烦?OK,OK,让我们用的资源插入系统吧!(在Visual C++中,在“插入”下拉菜单中,选择“资源”)我还是喜欢在记事本中用手工输入的模式,别为什么,我也不知道。:)现在你知道了建立资源脚本的基础知识,让我们开始进一步的行程吧!  ☆ 图标和光标  你每天在使用的大多数的Windows程序,都有自己的图标,简单的说,就是EXE文件同这个图标资源相关联了,独特风格的光标也是如此。你已经知道图标的脚本行样子了,光标的和它很相似,看看吧:[identifier] CURSOR [filename][identifier] ICON [filename]  增加了一行脚本行后,也就是意味着你的EXE文件又多了一个关联。也就是说你的EXE文件要根据标识符去相应的位置寻找相应的文件[filename]。你可以使用任何你喜欢用的图标/光标编辑器去编辑相应的文件。我通常利用Visual C++中的编辑器。  把资源脚本做出来后,并没有完事儿,因为你还不知道怎么调用相应的资源,要想知道图标和光标是怎样在你的程序中被调用的,让我们回过头来,看一看上一章中的窗口类(windows class)文件:
WNDCLASSEX sampleC // declare structure variable
sampleClass.cbSize = sizeof(WNDCLASSEX); // always use this!
sampleClass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW; //
standard settings
sampleClass.lpfnWndProc = MsgH // message handler function
sampleClass.cbClsExtra = 0; // extra class info, not used
sampleClass.cbWndExtra = 0; // extra window info, not used
sampleClass.hInstance = // parameter passed to WinMain()
sampleClass.hIcon = LoadIcon(NULL, IDI_WINLOGO); // Windows logo
sampleClass.hCursor = LoadCursor(NULL, IDC_ARROW); // standard cursor
sampleClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); // a simple
black brush
sampleClass.lpszMenuName = NULL; // no menu
sampleClass.lpszClassName = "Sample Class" // class name
sampleClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO); // Windows logo again
  还记得它吧?这个hIcon用来表示整个程序;hIconSm用来出现在开始菜单和窗口的标题栏里;hCursor用来表示在你所创建的窗口中的光标的样子。我向你保证,我们要实现自己的风格一点都不复杂。下面是它们的原形:
HICON LoadIcon(
 HINSTANCE hInstance, // handle to application instance
 LPCTSTR lpIconName // icon-name string or icon resource identifier
HCURSOR LoadCursor(
 HINSTANCE hInstance, // handle to application instance
 LPCTSTR lpCursorName // name string or cursor resource identifier
  返回的类型是它们自己相对应的类型。其内部的参数都很直观:
  ※ HINSTANCE hInstane:但程序执行时,把图标或光标相对应的句柄传递给WinMain()函数。若要使用Windows的标注图标或光标,就把它设置为NULL。
  ※ LPCTSTR lpIconName,lpCursorName:是你要调用的资源的标识符字符串。如果你在脚本文件中用字符串直接作为标识符,就直接传送它好了;如果你是用数字常量,就要使用一个Windows头文件里的宏MAKEINTRESOURCE()来把它们协调一致。
  让我们看一看下面的资源脚本,是关于图标和光标的:
#include "resource.h"
ICON_MAIN ICON myicon.ico
CURSOR_ARROW CURSOR arrow.cur
  如果标识符ICON_MAIN合CURSOR_ARROW在头文件resource.h中没有被#define定义过,那么我们将直接传递它给资源调用函数,象这样:
sampleClass.hIcon = LoadIcon(hinstance, "ICON_MAIN");  如果它们在头文件resource.h中这样定义过:
#define ICON_MAIN 1000#define CURSOR_ARROW 2000  你就必须用宏MAKEINTRESOURCE()把它们转变为LPCTSTR类型。下面给出你几种意义相同的调用方法,都是正确的喔!
sampleClass.hIcon = LoadIcon(hinstance, MAKEINTRESOURCE(ICON_MAIN));or...sampleClass.hIcon = LoadIcon(hinstance, MAKEINTRESOURCE(1000));or...int ident = 1000;sampleClass.hIcon = LoadIcon(hinstance, MAKEINTRESOURCE(ident));  关于图标和光标的调用,你学的差不多了。就这个话题,我还想告诉你一件事儿。如果你除了在程序的开始设置光标外,在程序中还要设置光标,有一个简单的Windows函数可以完成它:
HCURSOR SetCursor(HCURSOR hCursor);  仅仅一个参数,它是一个句柄,是在调用LoadCursor()时得到的,函数返回调用的上一个光标的句柄,如果没有设置过上一个光标,返回值是NULL。有点胡涂?无关大局,以后会明白。让我们看一看更有趣的吧!
1(作者:ant3000责任编辑:方舟)
天极新媒体&最酷科技资讯扫码赢大奖
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
笔记本手机数码家电用户:**etrure@163.**
用户:**028229@qq.c**
用户:****
用户:****
用户:****
用户:****
用户:**n1987**
用户:**x789**
用户:**lanke**
用户:**k5678**
用户:**ym**
用户:**n19866**
用户:**gfei24**
用户:**ipeng**
用户:****
用户:**cker**
用户:**aaa**
用户:**glongwc**
用户:**0501**
用户:**ijianchi**
重大通知:
北风课程即将全面升级更新,10.1起部分课程价格正式上调
&&&&&&&&&&&&&&重大通知:
北风课程即将全面升级更新,10.1起部分课程价格正式上调 &&&&&&&&&&&&&&&
分享:9999+
课程顾问贴心解答
为你推荐精品课程,无论就业还是升职加薪,毫无压力。
名企定制紧随大流
量身打造紧贴企业需求的实用性课程。
系统教学把控效果
集学、测、练为一体的学习系统为你科学的安排学习进度,提高效率。
一线大师1对1指导
课程研发团队内一线资深讲师一对一指导,手把手教学,直到学会。
点播答疑完美结合
每周2-3次直播解答,保证学员日常学习问题能得到解决。
量身定制学习计划
告别杂乱的学习方式,我们会根据你的情况定制学习计划。
一、项目简单介绍:
水果忍者游戏:
《水果忍者》是一款简单的休闲游戏。目的只有一个&&砍水果!屏幕上会不断跳出各种水果&&西瓜、凤梨、猕猴桃、草莓、香蕉、石榴、杨桃、苹果、火龙果等,还要在水果掉落之前要快速的全部砍掉!千万别砍到炸弹!不然游戏就结束了。
尽管移动平台上的游戏因为手机屏幕及运行能力所限,游戏画面通常会设计得比较简单,但游戏设计者却绝不允许在玩家不易察觉之处有一丝偷懒。比如若把《水果忍者》的游戏画面以十分之一的速度播放,你会清楚的看到一个水果被切开后果汁的飞溅方向,以及果汁是如何一点点消失的。正是这样的细节体现出来的效果让用户觉得切水果&很爽&。
游戏界中有一句广为流传的说法是,一款成功的游戏肯定会非常容易上手而又很难真正完全掌握的。这句话对休闲游戏来说尤其重要。《水果忍者》把这一点做到了极致。当人们打开游戏的时候,看到水果图标很自然就会去点击,但是会看到手指划过的提示,于是就会很自然的采用划过的手势去点击图标,并且会把这种交互方式延续到游戏中。
当用户看到水果弹出来就会去切,因为很快会出现炸弹,如果碰到炸弹游戏就会结束。于是用户就知道了不要去碰炸弹,接着玩很快就会发现连着一笔切好几个水果有奖励,就会尽量连着切。通过这样的发现和学习,用户很快就会知道游戏的基本玩法。但是要获得高分还是有很多技巧需要掌握。
本C++水果忍者游戏的设计:
本次游戏设计主要分为三个模块:游戏进入模块,游戏进行时模块,游戏控制模块。各个模块之间的关系和作用如下:
游戏控制模块:主要负责游戏的状态控制,游戏主要包括三种状态:启动状态,进行状态,暂停状态。
游戏进行模块:主要负责游戏中各种动画的创建,动画播放,动画事件,和动画销毁等。
游戏进入模块:负责游戏进入时动画的显示,数据加载和响应用户的选择输入。
下面是游戏的状态图:
游戏引擎:
游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。对于此项目的游戏引擎,我们将以学习为主,并在原有引擎的基础上修改出自己所希望的引擎支持。游戏引擎最重要的一块就是游戏的渲染,美工会按照不同的面把材质贴图赋予模型,这相当于为骨骼蒙上皮肤,最后再通过渲染引擎把模型、动画、光影、特效等所有效果实时计算出来并展示在屏幕上。渲染引擎在引擎的所有部件当中是最复杂的,它的强大与否直接决定着最终的输出质量。因此这一部分也将是我们重点研究和设计的对象。
综合我们的项目动机,我们将期待以下的结果:
1. 实现切水果中的水果刀效果,并演示相关切法特效(如水果喷射、溅洒等等)。
2. 根据相关算法,设计不同的游戏模式,在原有引擎基础上进行升级。
3. 添加道具系统,当切到一定高分之后,可以获得道具,如瞬间炸掉屏幕内所有水果的道具等等
二、培训目标
1、本系列讲座分为四大模块:
基础篇:主要讲解c++以及MFC的深入浅出
进阶篇:主要讲解游戏设计以及游戏引擎
设计篇:水果忍者游戏设计算法精讲
实战篇:水果忍者代码实现部分演示与精讲
2、适用对象
最好有一定C++基础知识
热衷于学习界面编程的人群
热衷于游戏设计和开发的人群
三、模块介绍(共56讲)
1、基础篇:主要讲解c++以及MFC的深入浅出
容器与算法精讲
类与数据抽象精讲
模板与泛型编程精讲
标准IO库知识点深入浅出
CObject类详解
消息映射的实现
MFC的DLL精讲
MFC的进程和线程精讲
2、进阶篇:主要讲解游戏设计以及游戏引擎
游戏设计思想
游戏设计精髓
游戏引擎概述
游戏引擎指点
3、设计篇:水果忍者游戏设计算法精讲
子画面碰撞检测
水果刀与子画面碰撞检测
背景回滚算法
自由落体算法
刀光笔触算法
2D粒子效果的实现
4、实战篇:水果忍者代码实现部分演示与精讲
完成了游戏引擎的设计。该游戏引擎现阶段是一个2D游戏引擎,能够跟踪游戏上的所有元素,实现了动画播放,碰撞检测,释放资源等基本功能。同时还提供了游戏进入界面,人物动画设计和图像加载等相关接口和类,便于游戏的扩展实现。完成了游戏图片元素的收集和动画元素的收集。其中主要包括的图片有:水果,炸弹,道具等;涉及到的动画:炸弹爆炸动画,启动菜单动画,笔触动画等。
四、本系列课程所涉及到的技术:
MFC类库知识
MFC消息映射的实现
模板与泛型编程精讲
容器与算法
MFC中的DLL编程
MFC中的多进程和多线程编程
Win32核心编程
子画面碰撞检测
水果刀与子画面碰撞检测
背景回滚算法
自由落体算法
刀光笔触算法
2D粒子效果的实现
游戏引擎概述
游戏引擎指点
五、课程大纲
01.水果忍者游戏简介
02.水果忍者游戏基础篇之vector
03.水果忍者游戏基础篇之vector(续)
04.水果忍者游戏基础篇之list用法精讲
05.水果忍者游戏基础篇之list用法精讲(续)
06.水果忍者游戏基础篇之关联容器精讲
07.水果忍者游戏基础篇之关联容器精讲(续)
08.水果忍者游戏基础篇之类的初始化
09.水果忍者游戏基础篇之类的初始化(续)
10.水果忍者游戏基础篇之模板精讲
11.水果忍者游戏基础篇之泛型编程
12.水果忍者游戏基础篇之泛型编程(续)
13.水果忍者游戏基础篇之自写String类
14.水果忍者游戏基础篇之MFC窗口、菜单和消息框
15.水果忍者游戏基础篇之MFC窗口、菜单和消息框(接上讲)
16.水果忍者游戏基础篇之MFC窗口、菜单和消息框(取消菜单栏)
17.水果忍者游戏基础篇之MFC窗口、菜单和消息框(取消菜单栏)接上讲
18.水果忍者游戏基础篇之MFC窗口、菜单和消息框(更新命令用户接口)
19.水果忍者游戏基础篇之MFC窗口、菜单和消息框(更新命令用户接口)
20.水果忍者进阶篇之游戏引擎精讲
21.水果忍者进阶篇之游戏引擎精讲(头文件定义接上)
22.水果忍者进阶篇之游戏引擎精讲(源文件实现)
23.水果忍者进阶篇之游戏引擎精讲(接上)
24.水果忍者进阶篇之游戏引擎精讲(源文件接口实现)
25.水果忍者进阶篇之游戏引擎精讲(子类的声明和实现)
26.水果忍者设计篇之算法精讲
27.水果忍者设计篇之算法精讲(水果刀与子画面的碰撞检测)
28.水果忍者设计篇之算法精讲(水果刀与子画面的碰撞检测)
29.水果忍者设计篇之类的设计
30.水果忍者实战篇之代码实现
31.水果忍者实战篇之Bitmap类的实现
32.水果忍者实战篇之Bitmap类的实现(源文件)
33.水果忍者实战篇之Bitmap类的实现(源文件)
34.水果忍者实战篇之Bitmap类的实现(源文件create接口的实现)
35.水果忍者实战篇之Bitmap类的实现(源文件Draw接口的实现)
36.水果忍者实战篇之Bitmap类的实现(源文件Draw接口的实现)
37.水果忍者实战篇之GameLogicController类的实现
38.水果忍者实战篇之GameFont类的实现
39.水果忍者实战篇之GameFont类的实现(源文件)
40.水果忍者实战篇之GameFont类的实现(源文件)
41.水果忍者实战篇之Background类的实现
42.水果忍者实战篇之BackgroundLayer类的实现
43.水果忍者实战篇之BackgroundLayer类的实现(源文件)
44.水果忍者实战篇之BackgroundLayer类的实现(源文件Draw实现)
45.水果忍者实战篇之Sprite类的实现
46.水果忍者实战篇之Sprite类的实现(头文件)
47.水果忍者实战篇之Sprite类的实现(源文件)
48.水果忍者实战篇之Sprite类的实现(源文件)
49.水果忍者实战篇之Sprite类的实现(draw函数的实现)
50.水果忍者实战篇之Sprite类的实现
51.水果忍者实战篇之Sprite类的实现(源文件)
52.水果忍者实战篇之SceneBackground类的实现
53.水果忍者实战篇之SceneBackgroundLayer类的实现(源文件)
54.水果忍者实战篇之SceneBackgroundLayer类的实现(源文件--update函数)
55.水果忍者实战篇之SceneBackgroundLayer类的实现(源文件--update函数)
56.水果忍者实战篇之SceneBackgroundLayer类的实现(源文件--Draw函数)
57.水果忍者实战篇之ScrollingBackground类的实现
58.水果忍者实战篇之VirtualBackground类的实现
59.水果忍者实战篇之VirtualBackground类的实现(update)
60.水果忍者实战篇之VirtualBackground类的实现(draw)
61.水果忍者实战篇之StackBackground类的实现
62.水果忍者实战篇之MouseBrush类的实现
63.水果忍者实战篇之MouseBrush类的实现&
64.水果忍者实战篇之SharpenBrush类的实现
65.水果忍者实战篇之SharpenBrush类的实现 (源文件中drawbrush函数的实现)
66.水果忍者实战篇之FontController类的实现
67.水果忍者实战篇之FontController类的实现 (源文件)
68.水果忍者实战篇之SpriteController类的实现
69.水果忍者实战篇之SpriteController类的实现(源文件)
70.水果忍者实战篇之StarryBackground类的实现
71.水果忍者实战篇之FruitController类的实现
72.水果忍者实战篇之ParticleController类的实现
73.水果忍者实战篇之Actor类的实现
74.水果忍者实战篇之Actor类的实现 (源文件)
75.水果忍者实战篇之Fireman类的实现
76.水果忍者实战篇之Fireman类的实现 (源文件)
77.水果忍者实战篇之Shooter类的实现
78.水果忍者实战篇之ScoreFont类的实现
79.水果忍者实战篇之Fruit类的实现
80.水果忍者实战篇之Fruit类的实现 (源文件)
81.水果忍者实战篇之KnifeParticle类的实现
82.水果忍者实战篇之KnifeParticle类的实现(源文件)
83.水果忍者实战篇之Particle类的实现
84.水果忍者实战篇之Particle类的实现 (update函数)
85.水果忍者实战篇之ParticleTrace类的实现
86.水果忍者实战篇之ParticleTrace类的实现 (源文件)
87.水果忍者实战篇之SuperParticle类的实现
88.水果忍者实战篇之GameEngine类的实现
89.水果忍者实战篇之GameEngine类的实现 (头文件)
90.水果忍者实战篇之GameEngine类的实现 (头文件中的访问方法)
91.水果忍者实战篇之GameEngine类的实现(源文件)
92.水果忍者实战篇之GameEngine类的实现(源文件)
93.水果忍者实战篇之GameEngine类的实现(游戏引擎常规方法Initialize的实现)
94.水果忍者实战篇之GameEngine类的实现(游戏引擎常规方法HandleEvent的实现)
95.水果忍者实战篇之GameEngine类的实现(GameEngine常规方法的实现)
96.水果忍者实战篇之GameEngine类的实现(GameEngine常规方法的实现)
97.水果忍者实战篇之GameEngine类的实现(GameEngine常规方法AddAprite和DrawSprites的实现)
98.水果忍者实战篇之GameEngine类的实现(播放音乐接口的实现)
99.水果忍者实战篇之Game类的实现
100.水果忍者实战篇之Game类的实现 (头文件)
101.水果忍者实战篇之Game源文件的实现
102.水果忍者实战篇之Game源文件的实现(GameStart函数的实现)
103.水果忍者实战篇之Game源文件的实现(GameEnd函数的实现)
104.水果忍者实战篇之Game源文件的实现(GameCycle函数的实现)
105.水果忍者实战篇之Game源文件的实现(GameCycle函数的实现)
补:Win32核心编程
1.水果忍者基础篇之Win32+SDK编程
2.水果忍者基础篇之Win32+SDK编程---程序结构细节讲解
3.水果忍者基础篇之Win32+SDK编程---窗口消息处理
4.水果忍者基础篇之Win32+SDK编程---窗口消息处理(显示字符串)
5.水果忍者基础篇之Win32+SDK编程---窗口消息处理(画笔和画刷)
6.水果忍者基础篇之Win32+SDK编程---窗口消息处理(鼠标消息处理)
六、项目部分截图
您暂未登录不能收藏!请登录后在进行课程的收藏!}

我要回帖

更多关于 win7 32位系统游戏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信