游戏中用户升级的设计
来源:互联网 发布:2016淘宝屏蔽搜索排名 编辑:程序博客网 时间:2024/04/28 03:15
在游戏中,有多个模块都会涉及到升级的问题,例如,玩家升级,装备升级,英雄升级等升级问题。
用户升级
数据库设计 需要一个经验值静态表
id : 等级的idexp_line : 本级达标经验值exp_offset : 区间偏移量,即离下一级还需要多少经验值friend_max : 当前等级下最大拥有多少个朋友hero_max : 当前等级下,最多可以有多少个英雄......................................
下一级 升级线是 $level['exp_line_next'] = $level['exp_line'] + $level['exp_offset'];
用户升级的流程:
判断用户是否是最高级 ----- > 经验值还未到下一级别的升级线 ------->获取当前经验值对应的等级 -------> 判断最新的等级是否和原来的等级一样 ------> 执行等级更新 --------> 升级后的后续操作,如,解锁其他模块等。
根据经验值获取当前等级函数:
public function getLevelByExp($curExp) { return $this->where("`exp_line` <= '{$curExp}'")->order('`id` DESC')->fetchPk(); }
升级的函数:
/** * 升级 * * @return bool */ public function levelUp() { // 已经是最大等级(不能再升了) if ($this->_user->isTopLevel()) { return -10; } // 经验值还未到下一级别的升级线 if ($this->_user['exp'] < $this->_user['level']['exp_line_next']) { return -20; } // 获取当前经验值对应的等级 $curLevel = Dao('Static_Level')->getLevelByExp($this->_user['exp']); if (! $curLevel) { return -30; } if ($curLevel['id'] == $this->_user['level_id']) { return -40; } // 升级前是几级 $orgLevel = $this->_user['level']; // 执行更新 if (! $this->_user->update(array('level_id' => $curLevel['id']))) { return -50; } // 升级的后续操作 if ($curLevel['id'] > $orgLevel['id']) { // 加满生命值、移动力、精力 $this->_user->restore->full(); } // 升级达到指定等级后解锁某些模块 $this->_user->unlock->doUnlockAfterLevelUp($orgLevel['id'], $curLevel['id']); } return $curLevel['id']; }
什么时候调用升级函数:
因为升级是由于获取经验值,才有可能导致升级,所以,每次获取经验值的时候,都需要检测一下,是否满足升级条件。
function addExp($exp){ $this->_user->base->levelUp($exp);
- 游戏中用户升级的设计
- 游戏中插件升级的思路
- 游戏中排行榜的设计
- 游戏中定时器的设计
- 游戏设计中常用的设计模式
- 游戏化设计可以让用户爱上你的产品
- win8升级到8.1后的种种麻烦(鼠标+QQ游戏+MySQL+用户账户)
- 游戏开发中常用的设计模式
- 游戏开发中常用的设计模式
- 游戏开发中常用的设计模式
- 游戏开发中常用的设计模式
- 游戏开发中常用的设计模式
- 游戏开发中常用的设计模式
- 游戏开发中常用的设计模式
- 游戏开发中常用的设计模式
- 游戏开发中常用的设计模式
- 游戏开发中常用的设计模式
- 游戏开发中常用的设计模式
- 【事务的种类】
- Hibernate 执行原生sql
- 十六进制颜色大全
- spring security2配置文件学习小结
- 碎步一:根据用户喜好选择不同背景图(背景选择器)
- 游戏中用户升级的设计
- 通过SQL语句实现要素Geometry字段解析
- 拍照界面显示的语言设置
- Linux Shell 命令--cut
- 单链表表示的大数相加问题
- Android NDK学习--编译和调试(Ubuntu+Eclipse+NDK)
- combobox传值之为什么要用到hiddenName属性
- formHash的实现
- 根据IP地址查看主机名命令nbtstat