自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 C++享元模式(以放置类游戏添加小兵为例)

享元模式是为了应对大量细粒度对象重复的问题。程序中存在大量细粒度的对象,每次要使用时都必须创建一个新的对象,既影响了运行效率又增加了内存消耗。于是有了享元模式,享元模式提取出这些细粒度对象中间公共的状态(属性,我的理解),只生成一个实例对象,所有用到这些公共属性对象的地方,都指向这一个实例。例如在一局放置类游戏中,现在要实现程序,该怎么办呢?首先要考虑的是小兵和地图的实现,可以定义一个小兵的类(我们这里只考虑一种类型的小兵),成员变量包括小兵的阵容(即颜色)位置等信息,另外再定义一个地图的类,成员变量中有

2021-01-18 12:59:05 311

原创 C++外观模式(以王者荣耀(万象天工)界面为例)

外观模式的定义:为子系统中的一组接口(相当与上面的模块)提供一个一致的界面。此模式定义了一个高层接口,这个结口使得这一子系统更加easy使用。 其实说白了就是:我们仅仅需调用高层的函数接口。而不用关心高层内部调用是怎样组合底层方法的。更不用关心底层函数是怎样实现的。绝大多数软件都有一个首页或者导航页面,同时也提供了菜单或者工具栏,在这里,首页和导航页面、菜单和工具栏就是外观角色,通过它们用户可以快速访问子系统,降低了系统的复杂程度。我们以王者荣耀游戏模式选择(万象天工)的界面为例:在这个界面有许多的游戏模

2021-01-16 12:56:17 1246 2

原创 c++有限范围内随机生成生成5个不同的数

随机生成生成5个不同的数即有限数量无重复生成,我们假设在0-10以内随机生成4个不相同的数。方法一:随机生成数再通过与前面的比较来生成不相同的数#include<iostream>#include<time.h>using namespace std;int main(){ int num[4];//定义一个数组存储生成的数 srand(time(nullptr)); for (int i = 0; i < 4; i++) { num[i] = rand

2021-01-10 19:05:17 3095 1

原创 c++装饰器模式(以英雄人物皮肤穿戴为例)

装饰器模式(DECRATOR):为了实现动态的给对象添加职能,即从外部给对象添加相关职能。装饰器模式有点类似于建造者模式,两者的区别是建造者模式必须按照规定的步骤来构建某个对象,而装饰器模式就不需要这样做,两者还有一个区别是建造者模式按照统一步骤一步一步来,而装饰器模式是为这个已经建造好的对象添加其它东西。我们以游戏人物的形象为例子,在现在的游戏中最多的就是各种各样的皮肤,所谓的穿皮肤,其实就是在已有的形象上,进行修改。uml图如下:(仅作为展示,没有具体的写类的方法)代码实现如下:class

2021-01-07 22:50:08 237

原创 c++组合模式(以访问文件夹为例子)

DP书上给出的定义:将对象组合成树形结构以表示“部分-整体”的层次结构。组合使得用户对单个对象和组合对象的使用具有一致性。注意两个字“树形”。这种树形结构在现实生活中随处可见,比如一个电脑中,它有文档,新的文件夹。不管是新的文件夹还是总的文件夹,在它们中基本都有文档或者新的文件夹等。对于总文件夹来说,不论是新的文件夹,还是文档都是它的一部分。整个文件夹的拓扑图就是一个树形结构。接下来我们只访问文件夹。代码实现为:class Floder {public: Floder(string n) {

2021-01-05 20:13:49 247

原创 C++桥接模式

桥接模式是将它的抽象部分和实现部分分离,使它们可以独立的变化。抽象部门和实现部分是独立的,通过它们的组合可以派生出很多不同类型的对象。在一个系统内如果有两个独立变化的维度,使用桥接模式可以减少类的数量。...

2021-01-03 21:57:12 671

原创 C++适配器模式(以已经存在的聊天功能模块去应用到其它软件为例)

适配器模式:定义:Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces.(将一个类的接口变换成客户端所期待的另一种接口,从而是原本因接口不匹配而无法在一起工作的两个类能够在一起工作。)适配器模式在现在开发中其实就是在不修改原来已经成

2021-01-01 23:14:57 131

原创 C++建造者模式(以英雄属性为例)

建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。使用环境:当一个类的构造函数参数个数超过4个,而且这些参数有些是可选的参数,考虑使用构造者模式。接下来我们以moba类英雄开发的英雄开发为例进行分析,我们知道英雄都有一些基本属性:攻击力,防御力,血量等等,但是同时他们也有一些差别,有些英雄有法力值,而有些英雄没有;有些英雄有能量值,而有些英雄没有。我们这时候就可以使用建造者模式来构建英雄类。...

2020-12-28 15:22:14 611

原创 C++原型模式

原型模式在DP书上的定义为:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。接下来我们以一个简单的例子来进行分析:玩过英雄联盟的都知道,英雄联盟有一个英雄:萨科(恶魔小丑),它的大招就是创建一个分身,除了不能放技能其它属性都与本体差不多。我们如何实现这个分身的功能呢?其实就是使用原型模式;原型模式就是这么一个道理,通过现有的东西,再复制拷贝出一个或者多个。在这个案例上我们使用原型模式的好处:1 这个分身是游戏过程中动态生成的。萨科使用了这个功能就动态生成分身。2 这个分身几乎就是萨科

2020-12-26 22:12:56 165

原创 C++抽象工厂模式(以赛博朋克游戏难度为例)

抽象工厂模式(Abstract Factory Pattern):在抽象工厂模式中,每一个具体工厂都提供了多个工厂方法用于产生多种不同类型的产品,这些产品可以没有任何的联系,位于不同的产品等级,但这些产品可以组合起来,构成一个产品族。抽象工厂模式是工厂方法模式的进一步延伸,由于它提供了功能更为强大的工厂类并且具备较好的可扩展性,在软件开发中得以广泛应用。使用抽象工厂模式来实现在不同的操作系统中应用程序呈现与所在操作系统一致的外观界面。接下来我们以目前比较火热的赛博朋克为例子进行分析,我们知道这个游戏有4种

2020-12-25 12:09:54 213

原创 C++简单工厂模式的分析(以电脑输入法为例)

简单工厂模式简单的来说,就是由一个对象决定创建出哪一种类。接下来我们以单纯的电脑上选择输入法的例子来进行简单工厂模式的分析。例如:我们现在电脑上基本上都装了好几种输入法,用户往往只需要简单的鼠标操作几下或者快捷键切换,来迅速得到你想要的输入法,假设你的电脑上装有QQ输入法、搜狗输入法、微软拼音输入法,用户可以设置使用哪种类型的输入法,那我们可以通过分析可知,我们只需要定义一个接口类(InputMethod)来得到用户的操作指令,然后通过定义一个简单的工厂类(SimpleFactory)来调用具体的输入

2020-12-23 21:19:25 135

原创 C++单例模式的简单分析

单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。单例模式要做如下事情:1.不能通过构造函数构造,否则就能够实例化多个。构造函数需要私有声明2.保证只能产生一个实例...

2020-12-22 20:02:08 203

原创 c++推箱子(栈和数组的多步撤回)

本项目存在多步撤回(分别使用了栈和数组两种方法)#include<iostream>#include<conio.h>#include<stdio.h>#include<stdlib.h>using namespace std;/*地图:推箱子、连连看、2048、俄罗斯方块推箱子实现功能:1.实现不少于三张地图。三维数组2.判断是否闯关成功?判断地图中是否存在值为3的元素。3.重玩当前关 memcpy(目的数组名,源数组名,数组的大

2020-12-21 21:08:46 712

原创 c++对对碰

#include<iostream>#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<time.h>#include <windows.h>using namespace std;int main(){//地图资源 int GameMap[2][4][4] = { { { 1, 2, 3, 4 }, { 4, 3, 2, 1 }, {

2020-12-21 21:05:37 493

原创 c++2048(数组的应用)

#include<iostream>#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<ctime>using namespace std;int main(){ //定义一个数组并进行初始化全部为0 int GameMap[4][4] = {};//定义一个数组并进行初始化全部为0 int AgainMap[4][4];//定义一个数组存储初始化地图 in

2020-12-21 21:03:17 309

原创 c++俄罗斯方块(无阻塞输入)

#include<iostream>#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<ctime>#include<Windows.h>using namespace std;int GameMap[15][10] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

2020-12-21 21:01:54 361

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除