游戏基础
文章平均质量分 90
主要讲解使用C++和DirectX进行游戏开发
咆哮的程序猿
坚持做个合格的程序猿!
展开
-
第六章:3ds max骨骼动画(下)
动画是由一系列的静态图像的不断更新显示而产生的。一般情况下,1秒钟要显示24张图像,人就会感觉到连续的动态图像。一般情况下使用30帧就足够了。在3ds max可以设置这个FPS值。右下角“时间配置”,可以设置FPS值。也可以设置“动画”->“结束时间”。这个结束时间的单位是帧,也就是3ds max下方的动画控制面板中帧滑块的长度。我们按照默认值就可以了,也就是动画控制面板中帧滑块的长度是100关键帧:动画由一组关键帧组成,关键帧与关键帧之间的部分是由系统按照线性插值的方式自动计..原创 2021-11-09 19:46:21 · 6385 阅读 · 3 评论 -
第六章:3ds max骨骼动画(上)
关于骨骼动画这一块,主要分为两个内容,一个是骨骼蒙皮,一个是制作动画。首先,我们介绍骨骼蒙皮。它的目的就是将骨骼绑定到顶点上面去,也就是权重的设置。3ds max提供了一个“蒙皮”的控制器来完成这项工作,它的过程是可视化的。在进行蒙皮之前,我们要了解3ds max中的骨骼。在命令面板“创建”的子栏中最后一个“系统”选项中有骨骼。我们使用最多的就是“骨骼”和“Biped”这两个。左边的就是“骨骼”,右边的就是“Biped”。非常的明显,“骨骼”就是一块骨骼而已(实际是两块,3ds max中..原创 2021-11-09 19:36:06 · 7103 阅读 · 0 评论 -
第五章:3ds max UV展开和BP贴图绘制(下)
BodyPaint3D是一款UV 贴图绘制软件,类似于PhotoShop,但是它主要用于3D模型的贴图绘制。Cinema 4D R10 的版本中将其整合成为 Cinema 4D的核心模块。C4D包含建模、动画、渲染、角色、粒子等模块,它提供了一个完整的3D创作平台。C4D 软件是 Maxon 公司引以为豪的代表作,与3D Max 和Maya一样,具备3D 动画软件的所有功能。这里我们安装的是BodyPaint3D R15这个版本。大家可以去网络上面下载。启动界面如下:..原创 2021-11-09 19:24:39 · 4811 阅读 · 1 评论 -
第五章:3ds max UV展开和BP贴图绘制(上)
3ds max中简单的几何体模型是通过“UVW 贴图”修改器来赋予贴图。但是,对于复杂的人物角色模型,则需要“UVW 展开”这个修改器来完成UV贴图的处理。其实这个两个修改器本质都是编辑UV坐标。使用“UVW 展开”之前最好对模型进行“重置变换”一下。UVW展开的最终目的就是制作一张UV贴图,然后在UV贴图上面绘制图像。这张UV贴图里面的UV坐标与模型中的UV坐标已经映射完毕了。UVW 展开命令面板中有一个 UV编辑器,这个UV编辑器就是直接编辑我们的UV贴图。UVW展开里面有个UV编辑器。原创 2021-11-09 19:12:48 · 7991 阅读 · 2 评论 -
第四章:3ds max样条线建模
在上一章中,我们介绍了多边形建模的方式。这种方式由一个简单的几何体开始,然后转化为可编辑多边形,然后使用一些命令或修改器来对模型进行修改。样条线建模则是通过线绘制一个2维图形,然后使用一些命令将其转换为3维图形,最后可以再配合多边形进行调整。这种方式的好处在于,我们可以使用线按照一定的方式来勾勒出模型的几何轮廓。例如,我们使用多边形很难调整一个平滑曲度的模型,但是使用线就能完成。在命令面板的“新建”选项下面的第二个子选项“图形”下,我们就可以创建线了。这里需要注意的是,线的创建不能在透视图中,而是.原创 2021-11-08 21:37:42 · 5799 阅读 · 0 评论 -
第三章:3ds max多边形建模
我们一般都是创建基本模型后,对模型进行修改,最终完成整个模型。在命令面板中切换第二个Tab“修改”按钮,在下面的“修改器列表”中可以使用很多的命令来对模型进行修改。但是,对于建模来讲,使用的修改器并不多。我们经常使用“可编辑多边形”和“修改器”两种方式共同完成复杂模型的创建工作。模型是由三角形组成的,也就是点,线,面三种基本结构组成。如果我们想要通过一种灵活的方式来创建复杂的模型,那么,直接控制点,线,面将是最好的方式。“可编辑多边形”就能够实现对模型的点,线,面进行操控。我们经常创建一个基本的几何体(原创 2021-11-08 21:30:51 · 7701 阅读 · 0 评论 -
第二章:3ds max材质和贴图
关于材质和贴图,我们在DirectX中也介绍过。在3ds max中也是通过材质和贴图来表现物体模型的表面纹理。在3ds max中物体模型的材质主要包括颜色,透明度,高光等等,其中贴图用于替换颜色部分,以增强物体表面的真实特征,贴图就是材质的一个属性而已。在工具栏中点击“材质编辑器”(快捷键M)就能打开材质编辑界面:大家可以看到,每个材质都是以一个球体的方式呈现,因此3ds max中的材质也称之为“材质球”。每一个材质球就代表一个材质,可以为模型赋予多个材质球。在每个材质球下面都有一个“Blinn原创 2021-11-08 20:58:46 · 9531 阅读 · 0 评论 -
第一章:3ds max基础
3ds max 是由Autodesk公司研发的三维建模、动画和渲染的工具软件。与之起名的另一款建模软件就是Maya,它也是Autodesk旗下的著名三维建模和动画软件。两者在游戏建模行业,应用都非常的广泛。3ds max操作相对比较简单,因此它经常用于入门学习的首选。ZBrush 是一个数字雕刻和绘画软件,它以强大的功能和直观的工作流程彻底改变了整个三维行业。ZBrush主要用于高模的创建。C4D全名Cinema 4D,德国MAXON出的3D动画软件。C4D是一款易学、易用、高效且拥有电影级视觉表达能力原创 2021-11-08 20:42:40 · 13181 阅读 · 4 评论 -
第十章 DirectX 绘制简单场景,地形,天空盒和跟随摄像机(下)
上个文章里面,我们分别控制胶囊体和摄像机确实比较麻烦,接下来,我将创建一个可以自由移动的模型对象,然后让摄像机跟随其移动和旋转。我们使用VS2019来新建一个项目“D3D_10_Follow”。首先,我们还是引入之前封装好的“InputClass.h”和“InputClass.cpp”两个文件。接下来,就是我们的自由移动摄像机类“CameraClass.h”和“CameraClass.cpp”文件。但是,这个文件需要做一点调整。首先是“CameraClass.h”代码如下:#pragma once原创 2021-10-24 16:55:05 · 1370 阅读 · 0 评论 -
第十章 DirectX 绘制简单场景,地形,天空盒和跟随摄像机(上)
本章节,我们将要创建一个简单的创建,其中包括地形,天空盒以及跟随摄像机三种对象类。首先我们使用3ds max创建一个地形:第一步,在3ds max中创建一个平面,长度和宽度都是10000,长宽分段都是100。这样,我们就会创建一个拥有10000个正四边形组成的大平面(大正四边形)了。注意,每个正四边形的边长也是100。这跟我们在DirectX中使用灵活顶点构造一个超大四边形,其实是一个原理。很显然,使用3ds max制作要比DirectX简单容易多了。虽然我们在3ds max中看到整个大的平原创 2021-10-24 16:45:42 · 2987 阅读 · 1 评论 -
第九章 DirectX 输入和声音(下)
声音的播放在Windows API就有这样的支持函数。PlaySound是Windows用于播放音乐的API函数。在vs2010以上版本需要加入#pragma comment(lib, "winmm.lib")才能使用PlaySound。PlaySound函数原型为 BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound)。参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件。参数hmod是应用程序的实例句柄,设置为NULL原创 2021-10-24 16:18:21 · 3916 阅读 · 12 评论 -
第九章 DirectX 输入和声音(上)
在Windows程序中,用户通过键盘或者鼠标输入的消息并不是应用程序直接处理的,而是通过Windows的消息机制转发给Windows操作系统。Windows操作系统对这些消息进行响应后,在通过回调应用程序的窗口过程函数进行相应的消息处理。在DirectX中,微软为我们提供了名为DirectInput接口对象来实现用户的输入。DirectInput直接和硬件驱动打交道,处理用户的输入要比消息机制快的多。DirectInput这套API自DirectX8更新以来,功能已经足够完善了。因此我们使用Dire原创 2021-10-24 16:16:22 · 732 阅读 · 0 评论 -
第八章 DirectX 3D模型加载和骨骼动画(下)
接下来,我们介绍一些骨骼动画。我们之前大致讲过骨骼动画,存储骨骼动画的网格文件要比普通的文件复杂一下。主要是增加了骨骼信息,蒙皮信息以及动画帧信息。骨骼动画的实现原理是仿照人体运动学,将3D模型由一种称作“蒙皮(skin mesh)”的网格模型和按照一定层次组织起来的“骨骼(bone)”组成。骨骼层次(骨架)仿照关节动画的组织结构将3D模型组织成一个层次结构,而相邻骨骼之间通过做相对运动来实现特定的动作效果,从而就实现了不同的模型动画效果。蒙皮(皮肤网格)与骨骼相关联,用于提供绘制动原创 2021-10-24 16:06:22 · 4391 阅读 · 0 评论 -
第八章 DirectX 3D模型加载和骨骼动画(上)
对于那些简单的图形(四边形,立方体),可以通过代码指定顶点数据的形式绘制出来。但是对于复杂的3D模型(人物,景物)来说,采用这种方式显然是不现实的。因此,Direct3D提供了一种称为网格模型的技术,可以从各种特定的文件格式中读取和绘制3D模型。网格模型是一种将图形的顶点数据,纹理,材质等信息存储在一个文件中。而这些3D模型通常都是有3D建模软件生成的。目前市场上主流的3D建模软件有3DS Max和Maya,两款建模软件都属于AutoDesk公司。3ds max和maya都是高端3D建模软件,两者之间有很多原创 2021-10-24 15:58:17 · 2226 阅读 · 0 评论 -
第七章 DirectX 数学向量,碰撞检测和粒子系统(下)
有了碰撞检测后,我们就可以完成一些更复杂的游戏了,我们使用VS2019创建新项目“D3D_07_Mario”,这个案例主要演示2D超级马里奥游戏加入碰撞检测的代码。本案例将会重新构建所有代码和素材,和之前的项目“D3D_06_Mario”有很大的差别。我们即将创建的新项目“D3D_07_Mario”除了完成之前的功能之外,新增加了静态物体和怪物两种游戏对象,以及使用碰撞盒进行碰撞检测。本案例中,我们将依次封装精灵类(四边形纹理),地图背景类,静态物体类,怪物类,玩家类和正交摄像机类。首先,我们介绍精灵(四边原创 2021-10-23 11:43:42 · 526 阅读 · 2 评论 -
第七章 DirectX 数学向量,碰撞检测和粒子系统(上)
数学不仅在游戏开发中,甚至在整个软件编程行业中,都占据了非常重要的位置。如果没有数学,那么计算机编程不会得到快速的发展。软件编程的本质就是处理数据,这种处理很大程度上取决于算法,而算法的本质就是数学。游戏开发中使用最多的就是几何数学。坐标系是游戏开发中最基础的概念,包括2D坐标系和3D坐标系,其实就是维度的不同。2D坐标系就是x/y两个维度,它与我们的电脑/手机屏幕是一致的。3D坐标系则是由x/y/z三个维度构成,z维度其实就是垂直我们的电脑/手机屏幕向里或向外的方向。3D坐标系分为左手坐标系和右手坐标系,原创 2021-10-23 11:31:54 · 794 阅读 · 0 评论 -
第六章 DirectX 2D游戏和帧动画(下)
在2D游戏的实际开发中,很多人还是不怎么使用上面的精灵类,他们仍然坚持使用四边形纹理,只不过就此进行了封装,方便使用。接下来,我们新建一个项目“D3D_06_Mario”。在这个案例中,我们将实现一个简单的超级马里奥的游戏场景,这是一个2D场景。本案例的重点在于,随着马里奥角色的行走,正交摄像机也跟随移动。我们先看看本案例用到的素材:首先,我们需要封装两个四边形纹理对象,一个是地图背景,一个是角色精灵。两个类的区别在于背景只有一个贴图,而角色精灵需要贴图序列完成动画。为了能够对头文件的统一引入,我.原创 2021-10-23 11:20:11 · 982 阅读 · 0 评论 -
第六章 DirectX 2D游戏和帧动画(上)
目前,我们已经掌握了如何使用DirectX绘制四边形,纹理映射技术,以及正交摄像机的内容。对于2D游戏的开发,这些内容基本上已经足够了。2D游戏的本质就是图像游戏,2D游戏中的动画其实就是一系列连续动作的图像,称之为序列帧动画。这也是动画片制作的原理。在动画中,每一张图像就是一帧,为了让人们的眼睛感觉出这是一个连续的动作,需要在1秒钟之内至少要变化24帧,才能达到自然过渡的流畅效果。在游戏开发中,手机端至少要达到30帧,电脑端至少要达到60帧,在VR中至少要达到90帧。我们以电脑游戏为例,1秒钟内我们至少要原创 2021-10-23 11:12:19 · 4080 阅读 · 9 评论 -
第五章 DirectX 光照,材质和纹理(下)
在计算机三维世界中,想要模拟出真实的物体,让它的表面看起来更加逼真,就需要使用“纹理映射”技术,简单讲就是一种将2D图像映射到3D物体上面。一般来说,纹理是表示物体表面细节的一幅或多幅2D图像,也称为纹理贴图。当我们把纹理贴图按照特定方式映射到物体表面上的时候,能够使得物体看上去更加逼近现实。其实,我们可以把纹理看做应用到物体表面上的像素颜色即可。Direct3D纹理贴图支持多个格式的图像,包括.jpg,.bmp,.dds,.png等等,并且图像的尺寸一般都是边长为2的N次幂正方形图片,比如128*原创 2021-10-22 17:32:44 · 1119 阅读 · 8 评论 -
第五章 DirectX 光照,材质和纹理(上)
在3D场景中使用光照非常简单,我们不需要为模型物体的每个顶点指定颜色值,只要使用某种种类的光照,并设置模型物体的材质,那么Direct3D就会根据光照模型算法,计算出每个顶点的颜色值,让模型产生颜色。我们之前大致介绍过,3D模型都是在建模软件中完成的,同时也给模型赋予了材质。因此,在实际游戏开发中,我们只需要加载模型文件,并读取材质,并在渲染模型的时候,为模型设置这个材质。那么,在光源的照射下,模型就会显示自己的颜色了。我们一般不会手动使用顶点来构建一个模型,更多的是使用顶点来构建一个四边形,这种情况多用于原创 2021-10-22 17:12:08 · 1076 阅读 · 0 评论 -
第四章 DirectX 渲染流水线(下)
接下来,我们来做一个可以简单移动的透视摄像机,其实本质就是可以根据键盘的输入来调整摄像机的位置和观察点。我们说简单移动,其实就是在世界坐标系的X,Y,Z轴的方向来调整摄像机的位置和观察点。其实,一个合理的摄像机应该可以自由的移动和旋转。我们创建新项目“D3D_04_ProjectionCamera”,同时复制之前的代码。在本案例中,我们就不绘制一个顶点立方体了,我们直接使用DirectX的API来绘制一个茶壶模型。我们在main.cpp文件中,只介绍重点代码,首先是对象的声明:// Direct3D设原创 2021-10-21 19:57:42 · 482 阅读 · 0 评论 -
第四章 DirectX 渲染流水线(上)
我们在第一章中讲过,一个3D场景中的模型是如何被显示到屏幕上的。这个流程就称之为渲染流水线。这个流程在OpenGL中也是大致如此的。Direct3D的渲染流水线过程如下:在DirectX 9 中,有两套实现图形渲染的方案,一套为固定功能渲染流水线,另一套为可编程渲染流水线。在DirectX 10 以及以后版本中,固定功能渲染流水线已经被移除了。固定功能渲染流水线基本上都是按以下步骤进行的: 填充顶点数据,指定纹理坐标,设置材质,设置光照, 设置变换矩阵, 设置渲染状态,最终绘制图形。因为渲染的.原创 2021-10-21 19:53:07 · 1189 阅读 · 3 评论 -
第三章 DirectX 图形绘制(下)
一个复杂的3D模型可能由成千上万个三角形组成。而2D图像基本都是由两个三角形组成的四边形组成。如何绘制一个四边形呢?见下图:在图中,我们用四个顶点组成了一个正方形,这四个顶点分别是v0,v1,v2,v3。为了正确描述这个正方形,我们需要根据这四个顶点创建两个三角形△V0V1V2 ,和 △V0V2V3,而这两个三角形的顶点数据,会依次保存在顶点缓冲区中。我们使用VS2019创建一个新的项目“D3D_03_Quad”,将上面绘制三角形的代码全部复制过来。因为我们之间已经做好函数封装,因此在这里,我们只.原创 2021-10-21 19:43:04 · 1459 阅读 · 1 评论 -
第三章 DirectX 图形绘制(上)
在计算机的3D世界中,所有的物体模型都是通过多边形网格来逼近表示的,这些多边形可以是三角形,也可以是四边形。多边形网格是构成物体模型的基本单元。从存储的角度出发,三维模型本质是通过顶点来实现的。在Direct3D中,顶点缓冲区(Vertex Buffer)用来保存顶点数据的。顶点数据的存储位置可以在内存中,也可以在显卡的显存中。为了讲解清楚顶点缓冲区的使用方法,我们来看一个使用顶点缓冲区构建一个三角形的例子。首先我们使用VS2019创建一个名为“D3D_03_Triangle”的项目,然后创建“main.c原创 2021-10-21 19:39:00 · 2000 阅读 · 1 评论 -
第二章 DirectX 基础(下)
接下来我们介绍update函数,这个函数就是用来接收用户事件,并做出事件处理的。因此,它肯定是放在窗口过程函数WndProc中的。这个窗口过程函数WndProc函数中定义了很多事件,比如说键盘按下,按起,鼠标点击,鼠标移动等等。也就是说,我们需要在switch中来列举出这几种事件。各种事件的处理方式是不一样的。例如键盘按下和按起事件,我们需要知道用户按下的是那个键,比如说数字键,字母键或是其他。鼠标点击事件主要是获取到鼠标的位置,这个位置坐标是相对于窗体左上角而言的。说白了,鼠标位置坐标(x,y)就是以窗体原创 2021-10-21 19:33:14 · 731 阅读 · 0 评论 -
第二章 DirectX 基础(上)
首先,我们需要下载DirectX的SDK包,并安装到本地电脑上。Download DirectX SDK from Official Microsoft Download Center从Windows 8操作系统开始,DirectX SDK已经集成到Windows SDK了,不需要单独安装!安装Visual Studio的时候勾上Windows SDK即可!也就是说我们刚刚下载的只适用于Windows XP, Windows 7系统。这个DXSDK_Jun10已经包含了9,10,11三个版.原创 2021-10-21 19:29:20 · 2018 阅读 · 5 评论 -
第一章 DirectX 计算机图形学(下)
创建一个Windows窗体如果使用C++语言在Windows平台上做应用开发的话,主要有3种基本方式:第一种就是使用Windows API来进行开发。它是Windows操作系统与应用程序之间通信的基本接口。第二种使用MFC来进行开发。MFC是微软对Windows API进行封装的C++类。第三种方式就是Windows Forms。它是微软.NET开发框架的图形用户界面部分。本套课程我们使用第一种方式,使用C++语言调用Windows API直接与操作系统通信,再配上能够支持显卡硬件的图形库DirectX原创 2021-10-21 19:14:03 · 693 阅读 · 1 评论 -
第一章 DirectX 计算机图形学(上)
计算机图形学是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式(像素单位)的科学。计算机图形学的研究对象是图形(3D模型),我们需要使用这些图形来模拟现实世界的物体。构成图形的要素有两类,一是形状的点线面等几何要素,二是反映物体表面的属性,如颜色等非几何要素。在计算机中表示图形的方法通常有三种:线框,表面和实体。线框模型采用点和线的集合来描述三维图形。线框模型的优点就是结构简单,缺点不能表示物体的表面。表面模型在线框模型的基础上,增加了物体面的信息,用面的集合来表示三维图形。表面模型又分为平面模原创 2021-10-21 19:03:04 · 1816 阅读 · 0 评论 -
第五节 C#语言介绍
在C++第九章中,我们介绍了拼字游戏的代码实现,今天我们使用C#语言来实现该游戏。两种语言的实现代码相似度非常高,只有一些代码的区分,以下来详细介绍。优先,我们定义游戏九宫格数组,和游戏循环变量,// 定义九宫格数组static int[] nineCellArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };// 游戏循环标示static bool loopFlag = true;由于C#的入口函数是静态的,静态函数只能访问静态变量和静态方法,因此我们将游戏原创 2021-09-20 14:42:04 · 324 阅读 · 0 评论 -
第四节 C#语言介绍
C#的泛型和C++的模板比较相似,其作用就是对代码算法的重用。程序开发都是对数据进行处理,数据根据数据类型区分,处理就是使用不同的算法。但是,由于数据类型的区分,造成我们需要对算法的重复使用。泛型的用途在于按照统一的算法来处理一定范围内的所有数据类型,因此它称之为泛型。// 泛型的使用, 交换两个变量public static void change<T>(ref T a, ref T b){T temp = a;a = b;b = temp;}// 泛型的使用int a原创 2021-09-20 14:20:17 · 190 阅读 · 0 评论 -
第三节 C#语言介绍
早期的程序开发是面向过程的,以函数为基本单位,现在基本都是面向对象开发。类是面向对象的基本概念,是对数据和操作的一种封装,也是一种引用类型。C#类中的数据成员称之为字段,对于字段的初始化,基本上都是通过构造函数实现的。C#类的构造函数与类同名,且被修饰为public void类型。不带任何参数的构造函数称之为默认构造函数,当然,我们也可以创建带参数的构造函数。我们使用new操作符实例化对象,对象使用完毕后,在释放对象的时候自动调用析构函数。析构函数就是类名前面加~号。析构函数没有任何参数和返回值,也原创 2021-09-20 14:17:22 · 234 阅读 · 0 评论 -
第二节 C#语言介绍
程序处理内存中的数据,这些数据的表现形式分为常量和变量。C#语言要求变量的名称必须以字母开头,并由字母,数字和下划线组成,且不能与C#中的关键字相同。所有的高级语言的变量命名都是一样的。C#语言的变量名也是大小写敏感的,这和C++,Java是一样的。C#有一个关键字var,它用于“隐式”变量声明,即在声明变量的时候不指定数据类型,而是根据赋予的值来推断其数据类型。在C#中定义常量的方式有两种,一种叫做静态常量,另一种叫做动态常量。前者用“const”来定义,后者用“readonly”来定义。原创 2021-09-20 14:09:21 · 435 阅读 · 0 评论 -
第一节 C#语言介绍
C#语言是运行在.NET框架之上的,.NET框架由类库(FCL)和虚拟机(CLR)两个部分组成。我们使用.NET提供的标准类库来开发应用程序,然后应用程序需要在虚拟机(CLR)上运行。.NET类库提供了丰富的功能来支持windows应用和web应用的开发。C#语言从C/C++发展而来,它吸取了包括C++,Java,Delphi多种语言的精华,是一种简单易学的面向对象开发的高级语言。随着微软对.NET平台的推广,C#语言已经成为.NET平台最流行的开发语言。同时,微软的集成开发环境Visual Studio也原创 2021-09-20 14:05:23 · 1215 阅读 · 0 评论 -
第十二章 C++ 数据存储与释放
程序开发过程中,所有的数据都需要放置到内存中,尤其是游戏开发中涉及的3维模型以及画面的渲染,这是消耗性能的关键部分。如果处理不当,很有可能造成内存溢出的情况发生,导致整个程序崩溃。防止内存溢出情况发生的关键点在于合理的分配和释放内存。Java和C#语言都是运行在虚拟机(运行时)上的,虚拟机都有一种垃圾回收机制来释放数据持有的内存,这不需要开发人员人工干预的。C++语言没有这种机制,因此需要开发人员手动完成某些数据占用的内存。这个时候,我就必须了解数据变量的生命周期的概念。C++程序运行过程中,系统需原创 2021-09-20 13:57:49 · 2033 阅读 · 0 评论 -
第十一章 C++ 封装/继承/多态
面向对象程序设计(OOP)是一种计算机编程架构,主要目标是为了实现代码的重用性、灵活性和扩展性。面向对象程序设计以对象为核心,程序由一系列对象组成。对象间通过消息传递(一个对象调用了另一个对象的函数)相互通信,来模拟现实世界中不同事物间的关系。面向对象程序设计有三大特性:封装,继承,多态。还有一种特性就是抽象。封装的基本体现就是对象,封装使得程序的实现“高内聚、低耦合”的目标。封装就是把数据和数据处理包围起来,对数据的处理只能通过已定义的函数来实现。封装可以隐藏实现细节,使得代码模块化。继承原创 2021-09-20 13:53:12 · 1028 阅读 · 2 评论 -
第十章 C++ 类和对象
计算机编程的发展来源于人类对现实世界事物的认识和处理。软件是对现实世界的抽象,现实世界中的事物映射到面向对象的程序中就是对象,对象是描述现实世界事物的程序单位。事物到对象的抽象包括两个方面:数据抽象和行为抽象。类是C++中用于描述对象的数据类型,对象则是类的实例(内存空间)。类中包含有数据成员和函数成员,类中的函数成员对外公开,而数据成员则受到保护。用户通过函数成员访问受保护的数据。面向对象程序设计中的类是基本单元,而对于复杂的事物,可以通过类的扩展和组合得到。这种设计模式能将错误集中在相对较小的程序单元中原创 2021-09-19 16:11:46 · 440 阅读 · 0 评论 -
第九章 C++ 拼字游戏
到目前为止,我们已经学习了数据类型,基本运算,控制结构,以及函数和输入和输出。那么我们接下来要使用这些内容做一个简单的拼字游戏。我们在控制台输出9宫格,每个格子代表一个数字,数字从1到9随机排列,然后我们需要通过”wasd”控制数字格子移动,使其形成1-9的从小到大的顺序排列,即可完成游戏。我们先梳理一下开发思路:1. 使用整型数组来存储9宫格2. 使用随机数来打乱数字的排列3. 使用cout来输出9宫格4. 使用cin来获取用户的输入5. 使用控制结构来移动数字6. 使用函数来拆分各个功能原创 2021-09-19 15:37:08 · 971 阅读 · 0 评论 -
第八章 C++ 标准输入输出
C++强大的功能来源于其丰富的类库及库函数资源。C++标准库的内容总共在50个标准头文件中定义。在C++开发中,要尽可能地利用标准库完成。C++标准库是类库和函数的集合,其使用核心语言写成,由C++标准委员会制定,并不断维护更新。 C++ 标准库包含输入/输出 I/O,字符串和字符处理,数学库等等。C++标准I/O库,说白了就是从键盘输入数据,输出至显示器屏幕。如果想要使用某标准库(I/O库),需要引入其头文件即可,如下:#include <iostream>控制台输入和输出是一种简便的原创 2021-09-19 15:26:56 · 605 阅读 · 0 评论 -
第七章 C++ 函数(方法)
从结构化程序设计来讲,函数是模块划分的基本单位,是对特定功能的一种抽象,程序是一系列函数的集合。在面向对象程序设计中,对象是程序的基本单位,但是在对象中对数据的处理依然由函数来处理,函数是类中用于数据处理的基本单元。一句话,函数就是完成特定功能的代码块,它可以接受数据,处理完后返回结果。对于一些重复的功能,我们可以通过函数来简化,使得代码更加简练,避免错误。对于一些复杂的功能,我们可以通过多个函数来拆分,使得代码更加清晰,容易理解。函数分为系统库函数和用户自定义函数两种。库函数是由编原创 2021-09-19 15:22:16 · 1537 阅读 · 0 评论 -
第六章 C++ 控制结构
结构化程序设计均可以由顺序,分支,循环3种基本控制结构组成。在结构化程序中,函数是程序的基本模块,也是3种基本控制结构的组合体。顺序结构是一种最简单的基本结构,其执行过程就是从上到下一次执行每行代码。分支结构的程序根据判断条件的不同执行不同的代码块。循环结构的程序是根据判断条件是否成立,不断重复执行某个代码块。C++语言分支控制结构主要是if语句和switch语句,语法结构如下:if ( < 表达式 > ) < 代码块1 >else &...原创 2021-09-19 15:18:06 · 394 阅读 · 0 评论