- 博客(133)
- 资源 (5)
- 收藏
- 关注
原创 球球大作战贪吃蛇大作战类似游戏算法优化
Agario的服务器端源码:https://github.com/huytd/agar.io-clone/blob/master/src/server/server.js目测这个球球大作战是抄agario的。。Agario用的是四叉树quadtree.四叉树每一层可以把一个平面空间分成四份(一般是四等分),这样提取在平面坐标上接近的object就很快。所以经常被用来处理这种碰撞其实超简
2017-05-08 20:37:43 3841
原创 cocos2dx Sprite使用同一张纹理会只调用一次渲染
cocos2dx3.x中,Sprite调用draw函数时会添加一个TrianglesCommand类型的渲染指令。CCSprite.cpp_trianglesCommand.init(_globalZOrder, _texture, getGLProgramState(), _blendFunc,
2017-02-22 01:12:35 2369
原创 《大话数据结构》读书笔记-数据结构绪论
数据结构绪论一些基本概念数据结构逻辑结构与物理结构逻辑结构物理结构抽象数据结构数据结构绪论什么是数据结构?是相互之间存在一种或多种特定关系的数据元素的集合.程序设计=数据结构+算法一些基本概念数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别并输入给计算机处理的符号集合.数据的特点:能够被计算机识别能被计算机程序处理数据元素:是组成数据的,有一定意义的基本单位
2016-09-23 09:33:58 727
原创 骨骼动画中为每个骨骼设置单独的颜色
骨骼动画中为每个骨骼设置单独的颜色最近在做一款颜色类的游戏,用到了骨骼动画,但是,不同的骨骼需要有不同的颜色。在cocos的Node中,有一个setColor的方法可以设置颜色,但是,cocos中设置颜色,每个节点会得到父节点的颜色,并跟父节点的颜色保持一致。也就是说,在不改动cocos源码的情况下,这个需求无法实现(也可能是我没找对方法)。所以,在这里我修改了cocos中Node的源码,让Node
2016-04-15 11:50:12 2528 1
原创 cocos2d-x 3.6 lua文件加密
cocos2d-x 3.6 lua 文件加密这里没有采用通用的加密方法,使用了类似于图片加密的方法,对文件中的每个字符进行加密,读取的时候,根据加密的key值进行解密。找到引擎加载Lua文件的接口cocos2dx_lua_loader添加解密代码if (chunk != NULL&&chunkSize > 0){ for (int i = 0; i < chunkSize; i++)
2016-02-29 18:47:50 1361
原创 cocos2d-x lua 3.6 解析json
cocos2d-x lua 解析json在游戏开发过程中经常使用json文件作为存储本地数据的文件,这里介绍下cocos2d-x lua 3.6中如何使用json文件。思路:将json文件当作文本导入到程序中通过引擎提供的json库解析json数据文件为table代码 local str = cc.FileUtils:getInstance():getStringFromFile(con
2016-02-25 18:52:07 1695
原创 强行删除mac中的文件
强行删除mac中的文件插一段话:为啥要强行删除呢?其实我也不想,但是,我在自己的mac 上安装了cocos 3.10,又删除后,想配置个低版本的cocos结果发现我的.bash_profile不能修改了,被锁定,而且我没有权限解锁。不知道是我操作的原因,还是怎么回事,总之,遇到这个情况,让我感激很蛋疼。之前也修改过.bash_profile文件,但是,没有遇见这么悲剧的情况。在尝试root用户无果后
2016-02-25 00:01:54 18026
原创 quick实现虚拟摇杆
JoyRocker(虚拟摇杆)的quick实现需要实现的功能: - 处理触屏事件,生成移动数据 --JoyRocker.lua--[[虚拟摇杆:通过触屏事件传出数据]]local JoyRocker = class("JoyRocker", function () -- body return display.newLayer()end)function JoyRo
2016-02-03 18:16:50 896
原创 《Cocos2d-x之Lua核心编程》读书笔记:Lua基础
Lua编程三类用户需要一门简单的脚步语言嵌入到应用程序中的开发者想要提高c/c++语言开发者想要提高运行效率的脚步开发者特点易嵌入,可以方便的与c/c++编写的游戏逻辑互相调用简单,不涉及任何复杂的编程概念,麻雀虽小五脏俱全轻量,库体积很小,只有几百字节易学习,游戏策划也能使用高性能,对比c/c++其带来的性能损失可以忽略不计Lua语法命名规范这个与C语言基本一样。类型与值8中基
2016-01-29 15:07:33 2816
原创 《啊哈!算法》读书笔记--排序(快速排序,冒泡排序)
排序最快最简单的排序—桶排序给出0-10范围的数组,对其进行排序。 使用桶排序的方法,因为数的范围已经确定了0-10,那么,我们建立一个数组,记录每个数值出现的次数,再按顺序输出就好了。代码/*1.桶排序*/void sort1_0(int nums[], int length);/*测试代码*/void test_sort1_0(std::string text_name){ p
2016-01-26 16:36:04 671
原创 leet_code_002
题目:You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a li
2016-01-14 17:49:24 742
原创 leet_code_001
题目:Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the target, where
2016-01-14 17:48:07 737
原创 Python 面向对象
Python面向对象创建类模板class ClassName: '类的帮助信息'#类的文档 class_suite#类体code# _*_ coding:utf-8 _*_class Employee: '员工的基类' #员工的数量,类变量 empCount = 0 def __init__(self,name,salary): '''
2016-01-11 20:04:50 728
原创 Python 日期,时间和函数的使用
日期和时间的简单使用code#导入time模块import time#导入calendar(日历)模块import calendar#得到毫秒时间ticks = time.time()print ticks#将毫秒时间转换为本地时间localTime = time.localtime(ticks)print localTime#格式化时间localTime = time.asc
2016-01-08 18:08:32 2680
原创 python 字典(Directionary)
字典字典,如果接触过其他高级语言的话(C++,Java)对字典应该不陌生,这里的字典与那些字典类似,但是,这里的字典没有类型限制,同一个字典中可以存储任意类型的值。共同之处就是字典中的元素是由键和值组成的。code# _*_ coding:utf-8 _*_#字典的创建dict1 = {'Alice':'1230','Beth':'1123','Cecil':'1452'}dict2 = {'
2016-01-08 15:49:29 1139
原创 python 元组(tuple)
元组元组的功能与列表类似,不同的是元组中的元素不能够被修改,也就是说你完成了初始化,再想改就不行了。元组的表示方式是用’()’包围,其中的元素用逗号隔开。code# _*_ coding:utf-8 _*_#Python元组tup1 = ('lua','python',1,2)tup2 = (1,2,3,4,5)tup3 = 'a','b','c','d'print tup1print
2016-01-08 15:47:42 2298
原创 python 列表(Lists)
List列表列表类似数组,列表中的每个元素都有一个自己的索引,类似数组中的下标,但是,列表更加灵活,能够进行许多非常有用的操作,而不局限于数组的索引。注意: 列表的索引是从0开始的,更绝大部分语言中的数组一样。code# _*_ coding:utf-8 _*_#Python列表#定义一个列表list1 = ['lua','python',1,2]list2 = [1,2,3,4,5]li
2016-01-08 15:46:16 669
原创 PythonTutorial-01 一些基础知识
一些基础知识HelloPython print "Hello,Python"这里的程序用的是python2.7来实现的多行语句在python中使用’\’来连接多行语句,在C++中宏也是用这种方式连接多行语句的。 item_one = 10 item_two = 20 item_three = 30 total = item_one +\ item_
2016-01-07 18:46:47 503
原创 lua tutorial 09
迭代器模板--[[ for k,v in ipairs(t) do print(k,v) end--]] array = {"Lua","Tutorial"} for k,v in ipairs(array) do print(k,v) end无状态迭代器定义:不保留任何状态的迭代器,因此在循环中我们可以利用无状态迭代器避免创
2016-01-07 16:11:53 667
原创 lua tutorial 08
数组在lua中数组用table来表示,数组的下标是从1开始的,这是lua与其他编程语言不通的地方,需要特别注意。一维数组 array = {"lua","tutorial"} for i = 1,2 do print(array[i]) end --定义一个空table array = {} for i = -2,2 do
2016-01-07 14:19:51 523
原创 lua tutorial 07
LuaTutorial07字符串表现形式单引号间的表示字符串双引号间的表示字符串使用[[和]]包围的表示字符串代码 str1 = 'Lua' str2 = "www.baidu.com" str3 = [[ lua tutorial lua tutorial ]] print(str1)
2016-01-07 14:06:32 453
原创 lua实现一个2048小游戏
用lua写了个在consle上运行的2048,这里简单说下是如何实现的。(源代码地址:http://download.csdn.net/detail/c_boy_lu/9393255)1.实现一个简单的游戏循环游戏循环实际上是一个死循环,只有在退出游戏的时候,终止循环。初始化更新 逻辑更新 显示
2016-01-06 18:08:32 4151 2
原创 lua tutorial 06
运算符1.算术运算符+加法-减法*乘法/除法%取余^乘幂-负号unction printTxt( str,num ) print("通过
2016-01-04 15:42:18 380
原创 lua tutorial 05
函数函数的作用:1.完成指定的任务。这种情况下函数作为调用语句使用2.计算并返回值,这种情况下函数可以作为赋值语句使用代码:--lua functionfunction max( num1,num2 ) --return num1 < num2 and num2 or num1 return (num1 < num2 and {num2} or {num2}
2016-01-04 14:24:43 322
原创 lua tutorial 04
分支语句lua中没有swith,只有if..else代码:--[[ if 条件 then end if 条件 then else end if 条件 then elseif 条件 then else end--]]if 0then print("0 is
2016-01-04 14:22:58 351
原创 lua tutorial 03
循环1.while循环--[[ while: while(条件) do end--]]a = 10while a < 20 do print("a 的值为:",a) a = a + 1end2.for 循环--[[ for: for var=exp1,exp2,exp3 do end exp
2016-01-04 12:39:25 325
原创 lua tutorial 02
lua变量Lua中有三种类型的变量:全局变量,局部变量,表中的域全局变量:函数外的变量,并且没有被local声明局部变量:函数内部的变量,或者用local声明的变量注:变量的默认值都为nil代码:a = 5 --全局变量local b = 5 --局部变量function testFun01() -- body c = 5 --局部变量 local d = 5
2016-01-04 11:47:04 438
原创 lua tutorial 01
1.第一个程序“HelloWorld”--输出"HelloWorld"print("HelloWorld")2.关于注释 跟其他的语言一样,lua中的注释有单行注释和多行注释--这是单行注释--[[ 这是多行注释 这是多行注释--]]3.变量:默认情况下的变量总是全局变量,变量的默认值为nilprint(variable)variable = "
2016-01-04 11:14:33 387
原创 Android程序间数据的共享
1.先解释下数据共享:在安卓中,每个程序都有自己的ID,并且在自己的进程中运行,每个进程都有自己的运行环境,这样保证程序的完整性。虽然,保证了程序的完整性,但是,程序间数据的共享就不方便了,所以,安卓提供了ContentProvider和ContentResolver来解决这个问题。2.ContentProvider能够共享很多数据,但是,最终都要整合成数据库的形式,因为,ContentPro
2015-12-24 00:47:06 524
原创 安卓中SQLite的学习笔记
当我们存储的数据比较多的时候,我们就应该用到数据库了。在安卓中集成了SQLite数据库,这里简单的介绍下SQLite的使用。a.SQLite的特点:1.最大支持2TB的数据存储(这已经非常大了,相对于智能手机而言,因为我们的手机现在存储还停留在几百GB的水平,等到手机能存储几TB的时候,说不定SQLite就能存储更大的数据了)2.占用资源非常少,大概在250KB左右,着相对于现在智能手
2015-12-22 23:47:23 440
原创 安卓游戏中Proferences的简单使用
Preferences存储数据,需要有Context才能取到,单独的一个context是不容易取到的,但是,Activity继承自Context,所以,Preferences数据的存储需要有Activity来支持,sp(SharePreferences的简写)需要从context中得到,Editor需要从sp中得到。其中,sp是读取数据的关键,editor是存储数据的关键。所以,我们存取数据的时候
2015-12-22 00:10:00 586
原创 Cocos2d-x 3.x中读取csv数据文件
游戏开发中,数据文件通常是存储在xml,json,csv等格式的文件中,这里实现了CSV文件的解析。1.为什么是CSV? 数据文件为什么存储在CSV文件中呢? a,同样的数据放到CSV中要比放在xml和json中要小。 b,CSV的解析也比较简单。 c.策划编辑方便,策划比较擅长使用excel,使用CSV能够使用excel直接导出,不用再解析为其他格式。2.
2015-12-15 16:23:34 1196
原创 cocos2d-x 3.x相应键盘事件
3.x中使用键盘事件相对2.x中简单了不少,几句话就解决问题了。键盘的响应事件也属于event的范围,需要创建一个EventListener,然后,添加到事件分发器中就好了。键盘的相应事件有两种,按下事件和抬起事件。cocos的Demo在E:\cocos2d-x-3.6\tests\cpp-tests\Classes\NewEventDispatcherTest这个目录下,LabelKey
2015-12-09 17:16:33 3854 1
原创 cocos2d-x实现打字机效果
打字机的效果,一般出现在对话和游戏的剧情介绍中(现在已经很少用了,有几个人一个字一个字的看剧情呀)。这里有两种方案实现了打字机的效果。一种是使用系统字体,一种是使用TTF字体。下面一一介绍。1.使用LabelTTF实现。在cocos3.x中Label有了新的API,新的Label将每个字符作为一个Letter来存储。通过getLetter(int index)方法得到。得到的Lette
2015-12-09 11:35:58 2935 3
原创 MediaPlayer的使用
游戏中的背景音乐用到了MediaPlayer。使用MediaPlayer播放背景音乐有2中方法,一种是通过create来创建MediaPlayer对象,一种是通过new来创建对象,通过create创建出来的对象,不需要对音乐进行prepare,通过new创建的则需要进行prepare操作。然后就是,new创建的对象可以随意设置其资源路径,可以在SD卡也可以在其他地方,也可以是网络上的资源,
2015-12-01 20:52:52 752
原创 实现游戏音效的预加载
游戏中有很多东西是需要预加载进来的,这样可以使游戏更流畅,虽然,游戏中音效占用的资源比较少,但是,还是有必要为音效做一个预加载的,这里用安卓原生的方法实现了一个音效加载系统。思路:安卓中游戏的资源通常都是根据id来加载的(这个id可以在R.java文件中找到),在系统中使用了两个HashMap,一个存储资源的ID,一个存储音效加载后的ID,这两个HashMap有共同的key值将两个表联系起
2015-11-25 23:03:57 2443
原创 cocos中使用Control遇到的一点小问题
cocos中有几个控件以control开头,这些控件功能上是不错的。最近,做开发遇到了一个小问题,我的程序中用到了两个control的子控件,ControlSteper和ControlSilder,其实单独用是没有问题的,但是,我的需求是要保持这两个控件的值是一样的。所以,我在Steper的回调中,重新设置Slider的值,在Slider的回调中重新设置Steper的值。思路是这样的,我也感觉自己
2015-11-24 19:44:07 564
原创 Python图片中的缩放实现,以及多种尺寸icon的生成
在pillow中图片的缩放有两种方式,1.使用resize函数,2,使用thumbnail函数resize函数可以缩小,也可以放大thumbnail只能缩小,不能放大所以,如果你只打开一次图片,要存出多个尺寸的话,要么,从大到小开始缩放。要么,使用resize.建议从大到小开始缩放,因为,使用resize放大的话,你可以想象那个马赛克。当然,你也可以设置缩放图片的质量( P
2015-11-13 12:22:51 16089
翻译 ndk-stack的使用
这是对ndk-stack使用文档的翻译,文档所在的路径是:\android-ndk-r9d\docs\NDK-STACK.html介绍:这篇文档描述的是ndk-stack工具,从R6版本起,这个工具就分配到AndroidNDK中。概述:ndk-stack是一款简单的工具,你可以根据过滤器跟踪在logcat的输出中出现的堆栈,并且用对应的值替换任何一个共享的库的地址。简而言之
2015-11-13 10:22:05 2251
原创 Python实现plist图片的裁切
在游戏开发的时候,我们有的时候需要将很多图拼到一张图片上,TexturePaker就有这种功能。这样的话导出的是一张大的png图和一个plist文件,当然还有的文件是其他格式的。但是,形式大都是xml的形式。这里就是用python实现一个读取xml裁切图片的一个程序。 1.你需要安装pil或者pillow,这两个都是python的图片处理模块。关于如何安装这两个插件,有很多教程,这里就
2015-11-05 19:02:36 3924
android程序间数据的共享(ContentProvider和ContentResolver的使用)
2015-12-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人