本文给两个问题提供解决方案

1,防御塔的属性相当多,什么攻击力,攻击速度,攻击范围,建造花费,等等等等......

把他们的数据放到程序里面显然是不合适的,如果把这些数据放到程序中,十分不便于修改,

如果修改,需要重新编译才能重新运行。

,2,有些人会修改游戏数据,做出所谓的破解版,让我们的努力付之东流

数据安全很重要

1)把数据放进文件里可以很好地解决这个问题,为了以后做其他大一点的游戏也能用得到,这里就直接用sqlite3数据库。

不大了解的看百度百科:   飞机票:sqlite数据库的百度百科

为了方便,我把

{

1,sqlite3数据库代码(英文注释)

2,对sqlite3数据库代码的封装(便于使用,有中文注释)

3,sqlite3数据库的中文版可视化管理工具

}

封装成了一个压缩包上传了:  飞机票:cocos2dx上sqlite3数据库代码,封装及管理工具

不要分,觉得好给个评论我会很开心的 ^_^

把游戏数据用管理工具存到数据库中,需要什么读取数据库就好,即使游戏数据发生改变也不用重新编译了。

2)①你可能已经发现了,sqlite3数据库极其精简,没有权限管理,得到了数据库文件,随便找一个管理工具就能进行更改

在这里为防止运行前游戏数据被更改,我采用了进行文件MD5校验,来检查文件是否被动过手脚

运行游戏时,计算文件的MD5,和程序内部事先准备好的MD5进行比对,如果不对,立刻退出。

代码文件:  飞机票:cocos2dx下可用的,验证文件MD5代码及使用方法

不要分,觉得好给个评论我会很开心的 ^_^

②压轴用的重头戏来了

你如果是手游爱好者的话,应该用过八门神器吧,它会在游戏运行时修改内存中的游戏数据。

我的方法是随机得到一个密匙作为数据成员,给其它数据成员设置set和get方法,set或get时,通过自定义算法对数据进行加密和解密,

保证数据成员中存储的数据是经过加密的,让看内存的人不能准确定位变量的地址,即使找到了地址,不知道算法,也不会改。

头文件代码:

#ifndef __TOWER_H__
#define __TOWER_H__#include "cocos2d.h"
#include "DBUtil.h"
USING_NS_CC;class Tower : public Layer
{
protected:int speed[4];//攻速int atk[4];//攻击力int usekey(int valueWithoutKey);//加密数据int unusekey(int valueWithKey);//解密数据public:static Tower* create(int type,Point position);//调用构造函数,调用初始化函数,设为自动释放,返回创建好的对象的指针Tower(int type,Point position);//构造函数//set与get方法void setSpeed(int speed,int level);int getSpeed(int level);void setAtk(int atk,int level);int getAtk(int level);};#endif //__TOWER_H__

cpp文件代码:

#include "Tower.h"Tower::Tower(int type,Point position)
{//随机得到keysrand(time(0));key = rand()%10 + rand()%10*10 + rand()%10*100 + rand()%10*1000 +1111;//连接数据库,得到防御塔信息DBUtil TowerDB;TowerDB.initDB("TowerDB");//这是我写在DBUtil中的一个函数,会把防御塔数据从数据库中读取出来TowerDB.getTowerDataInfo(type , this);TowerDB.closeDB();
}//===============================================
//===========关键数据的加密解密算法==============
//===============================================
int Tower::usekey(int valueWithoutKey)//加密数据
{return (valueWithoutKey + key)<<4;
}
int Tower::unusekey(int valueWithKey)//解密数据
{return (valueWithKey>>4) - key;
}//===============================================
//===========属性的set与get方法==================
//===============================================
void Tower::setSpeed(int speed,int level)
{this->speed[level] = usekey(speed);
}
int Tower::getSpeed(int level)
{return unusekey(speed[level]);
}void Tower::setAtk(int atk,int level)
{this->atk[level] = usekey(atk);
}
int Tower::getAtk(int level)
{return unusekey(atk[level]);
}

通过自定义加密方法,你甚至可以验证数据的合法性(如本文中,因为进行左移运算,当数据成员为奇数时即为非法数据)。

关于游戏数据安全问题,欢迎交流。

塔防游戏(二) 埋雷(防止游戏数据被更改)相关推荐

  1. unity塔防游戏怪物转向_红包版塔防游戏合集-可以赚钱领红包的塔防游戏-无广告塔防游戏红包版大全...

    家园保卫战红包版等级:9.22020-11-1016.7MB简体中文下载推荐理由:家园保卫战红包版是一款全新塔防赚钱小游戏,和植物大战僵尸画风有些相似,只不过这款游戏增加了红包版机制,每次闯关成功都有 ...

  2. [DP] [贪心] [Vijos P1417] 魔法塔防 (mtower)

    题目描述 Description 塔防游戏(Tower Defence)是dd_engi非常喜爱的一类休闲游戏.在这类游戏中,玩家需要在地图上摆放各种防御单位,打击并阻止试图跨越地图的敌对单位.一般而 ...

  3. JavaFX中的塔防(6)

    因此,我们已经在本教程的第6部分中,与此同时,游戏也取得了长足的进步. 在这一部分中,我们最终将添加一个显示得分的图层,已达到目标的敌人数量,启动下一个Wave的按钮以及用于购买新炮塔的资金. 说到钱 ...

  4. 《王者圣域》2.23上线链游玩家|放置塔防、趣味竞技

    导语:王者圣域游戏是一款画风萌动的卡牌对战手游,集合了塔防对战模式和趣味的闯关内容让玩家畅享全新的冒险之旅,趣味十足的竞技场对战和丰富的战斗模式等待玩家自由体验,多样的英雄等待玩家自由选择,搭配强大的 ...

  5. 《三国塔防》为什么成功?

    <三国塔防>尽管不是小编玩过的最优秀的塔防游戏,但却是可以说是iOS平台上最成功的塔防游戏之一,为什么这样的一个游戏,能在竞争激烈的iOS游戏圈中脱颖而出,是今天要探讨的话题. 小编觉得: ...

  6. 最新塔防 android,塔防来了手游

    塔防来了最新版游戏打造最简单经典的塔防玩法,游戏中有着各种各样的大炮武器来抵御敌人的进攻,每次升级都可以提升自己塔防的技能和强度,还可以获得最新的塔防英雄来一起抵抗,感兴趣的小伙伴下载试试看吧! 塔防 ...

  7. Nim 游戏 、⽯头游戏1、石头游戏2

    Nim 游戏 .⽯头游戏1.石头游戏2 文章目录 Nim 游戏 .⽯头游戏1.石头游戏2 **一:Nim 游戏** **二:⽯头游戏** **三.石头游戏2** **方法一:DP 函数** **方法二 ...

  8. 游戏开发(十二) 之 塔防 程序设计思路

    最近工作较忙,没有大块时间弄,东拼西凑出来点时间,昨天把基础游戏流程做完了,大概说下其中的开发重点. 1.数据驱动显示. 这点一定记得,很重要.之前看过很多人写塔防的战斗逻辑,几乎都是用moveto, ...

  9. Qt版本-塔防游戏实现二

    上篇已经为敌人的出现做好准备了,现在是时候让敌人登场了: 4.敌人初步实现 这里出去3件套(尺寸可以直接用图片大小,我用的是静态常量,习惯而已) 其中m_active表示是否可以移动,只有当其为tru ...

最新文章

  1. TensorFlow多元线性回归实现
  2. ProLiant 服务器安装 Ret Hat Enterprise Linux AS 3 说明 (一)
  3. 【Laravel学习篇 · 一】Windows下起步就遇麻烦
  4. java成果_JAVA WEB期末项目第二阶段成果
  5. r语言解释回归模型的假设_模型假设-解释
  6. xdebug调试时出错 --mxp
  7. WORD常用版式保存为模板?
  8. markdown编辑器 使用语法
  9. 学python能做什么类型的工作-学点Python,让你的求职简历更有含金量!
  10. 【渝粤教育】国家开放大学2018年秋季 1323T内科护理学(本) 参考试题
  11. 游戏Gala—基于星际文件系统的非中心化游戏
  12. linux下mysql定时备份
  13. nginx配置https后报错nginx: [emerg] https protocol requires SSL support in XXX.conf详细解决方法
  14. 01 - vulhub - ActiveMq - CVE-2015-5254
  15. python特殊字符替换
  16. 计算机设备显示感叹号,设备管理器有感叹号和问号未知设备的解决方法
  17. Android apk包体瘦身
  18. 日常使用计算机出现的小问题(一)win10操作系统设备和驱动器栏目中出现空白图标该如何删除?删除一次刷新又重新出现
  19. knex入门学习使用方法
  20. 51nod 1238 最小公倍数之和 V3

热门文章

  1. 笔试题:字母序最小的序列的第一张卡片上数字
  2. Android Studio升级后 出现在No subject alternative DNS name matching services.gradle.org found.
  3. 约瑟夫环问题【java实现】
  4. linux复现数据库,基于嵌入式Linux系统平台并可应用于监控组态软件实时数据库的设计方案详解...
  5. “天才少年”曹原,共同一作发Nature子刊
  6. 如何搭建企业网络安全意识体系
  7. Arm-linux交叉编译笔记+opencv 编译
  8. 【计算机组成原理】流水线式指令执行
  9. LDA(线性判别分析(普通法))详解 —— python
  10. 系统IE浏览器被串改恢复