C++
文章平均质量分 87
NxShow
努力学习中
展开
-
【Cocos2d-x】无法打开文件“libcocos2d.lib”异常解决
解决方法很简单,只要把路径改成不是中文的就成了原创 2014-02-08 21:32:07 · 2778 阅读 · 1 评论 -
一个很简单的后退到上一步的思路
主要思路就是把当前局面全部存下来,要回退的时候,直接覆盖上一局面#include "标头.h"#include #include #includeint curSituation[4][4];std::stack regretSituation;//随机产生一个新的局面void newSituation(){ for (int i = 0; i < 4; ++i) {原创 2016-04-06 10:32:38 · 6101 阅读 · 1 评论 -
【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(3)
上篇文章分析到了定时器的定义,这篇的重点就是定时器是如何运行起来的。1.从main中寻找定时器的回调讲定时器的运行,就不得不触及到cocos2dx的main函数了,因为定时器是主线程上运行的,并不是单独线程的,所以它的调用必然会在main函数中,每帧调用。以下代码就是win32平台下的main函数int APIENTRY _tWinMain(HINSTANCE hInstance,原创 2015-06-05 20:57:11 · 2173 阅读 · 0 评论 -
【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(1)
注:本文开始,引擎升级到cocos2dx 3.6在游戏开发过程中,经常会遇到使用计时器的情况,例如:倒计时,定时炸弹等。scheduler是cocos2dx 2.x时代就已经存在的产物,主要用于各种延时函数以及各种每帧运行的函数。本文主要介绍scheduler的API函数以及使用方法。首先,所有继承Node的类都可以使用scheduler,以下是Node类下相关API的介绍 /*原创 2015-06-02 14:00:35 · 2304 阅读 · 0 评论 -
【深入了解cocos2d-x 3.x】一步一步通过ClippingNode实现一个功能完善的跑马灯公告(2)
本文的主要内容是根据跑马灯解析ClippingNode实现原理。本文涉及到cocos2dx 3.x的渲染机制以及部分opengl的知识。首先看看上一篇文章中说到的跑马灯的简单实现://设置模板 auto stencil = Sprite::create(); //设置显示区域大小 stencil->setTextureRect(Rect(0, 0, 50, 30));原创 2015-05-19 13:44:12 · 1381 阅读 · 0 评论 -
【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(2)
上篇说到定时器的使用方法,这篇主要分析它的实现原理。1.哈希链表cocos2dx封装了一个结构体,叫做UT_hash_handle,只要在自定义的结构体中声明这个结构体变量,就实现了哈希链表,并且能使用一系列的哈希链表专用的宏。这个结构体的具体实现如下:typedef struct UT_hash_handle { struct UT_hash_table *tbl; vo原创 2015-06-04 13:17:43 · 2210 阅读 · 0 评论 -
【深入了解cocos2d-x 3.x】内置数据结构(1)——智能指针
智能指针在C++11的标准中已经存在了,分别是unique_ptr,shared_ptr,weak_ptr,其中最常用的应该是share_ptr,它采用引用计数的方式管理内存,当引用计数为0的时候,自动释放内存,但是由于shared_ptr考虑到了线程安全,所以会存在有较大的性能损失。所以在实时游戏开发中,往往不会用到shared_ptr。在cocos2d-x3.2以及更高的版本中,cocos原创 2015-03-28 12:00:56 · 1617 阅读 · 2 评论 -
do{}while(0)与CC_BREAK_IF的绝妙搭配
从一开始觉得没有必要,到觉得非常好用,我经历了大概两个月的时间,下面来总结一下什么情况下使用这种结构吧。第一种情况:当加载文件的时候,如果加载文件失败,需要报错的时候。当前,可以用try{}catch(){}finally{}这种结构,但是这样做会极大的增加编译后文件的大小,使用do{}while(0)加上CC_BREAK_IF就能实现一样的效果,而且不增加文件的大小。下面是一个例子:原创 2014-10-19 11:57:07 · 1481 阅读 · 0 评论 -
充分利用C++11特性,Cocos2dx对话框的实现
一般一个对话框会分为模态对话框和非模态对话框两种,模态对话框就是原创 2014-09-23 21:59:50 · 2619 阅读 · 0 评论 -
关于野指针
所谓的野指针,实际上就是指针内存释放了之后,还继续调用原创 2014-09-15 10:57:39 · 982 阅读 · 0 评论 -
Cocos2dx 3.2键盘监听的打开方式以及点击两次返回退出的实现方法
首先,在Scene中重载下面两个函数 virtual void onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event); virtual void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);这原创 2014-09-21 11:19:08 · 1593 阅读 · 0 评论 -
cocos2dx 实现图片椭圆旋转选择物品界面
界面效果如下:原创 2014-07-17 17:21:07 · 5872 阅读 · 3 评论 -
WINDOWS下C++的套接字编程
服务端://Service.h#pragma once#include #include #include#pragma comment(lib, "Ws2_32.lib") /** 服务端**/class Service{public: /* * 创建服务端 */ static Service* Creat(bool Your); //更新数据原创 2014-04-02 18:51:21 · 1376 阅读 · 0 评论 -
今天用COCOS2DX写了个五子棋,记录下判断输赢的算法
思路是当一方下完棋之后判断他周围有没有同样的棋子,如果有,就设定那个方向递归下去,当递归到5层的时候跳出,递归不到五层的时候跳出层数主要是有8个方向,代码有点长,其实思路还是挺简单的int PlayScene::IsWin(qiziSprite *q,int direction,int c) //判断胜负 三个参数,第一个是当前棋子,第二个寻找方向 第三个数量{ bool upPe原创 2014-02-12 21:21:18 · 2565 阅读 · 0 评论 -
记录一下另外一个,在棋盘上自动寻找最近的坐标节点的算法
思路也挺简单的,主要就是获取到当前触摸的点,然后判断它离哪个节点近,自动判断到最近的那个节点。刚开始我算法思路都是很明确的,但是不知怎的就是不到节点上,后面一看,是精度的问题,然后就把节点全部变成整数才行下面是代码Point PlayScene::GetQiziPoint(Point TouchPoint,Rect QipanRect){ Size size = Qipan原创 2014-02-12 22:41:17 · 1372 阅读 · 0 评论 -
成都几家游戏公司的面经(C++、图形学) ——第一天
1. struct A {int a;char b;long c;}问 sizeof(A) 占多少个字节 ; 考内存对齐2. class A {void f();}class B{virtual void f();}A* a = nullptr;B* b = nullptr;a->f();b->f();问哪个会崩溃?原创 2016-06-07 11:35:36 · 2651 阅读 · 1 评论