微信在最新的iPhone版应用中运营刷卡功能,为了推广该功能,小组成员自主开发了简单的超级收银员小游戏。第一次写前端游戏,严重意识到js写少了,趁这次恶补下,毕竟还年轻,感觉老了脑袋不好使。今天给大家分享本次游戏的学习成果,有兴趣的同学先扫描二维码挑战。

目录:

  • 游戏思路
  • 游戏场景
  • 核心代码

游戏思路

本人很喜欢玩游戏,也玩过不少小游戏,5月份的时候我接触了手游《刀塔传奇》,好玩、有趣味性,让自己又爱又恨投入了时间和金钱,享受其中的乐趣,相信“好玩”和“商业化成功”是做一款游戏的目标,对于超级收银员游戏,市场上类似的有很多,而我们的目标很简单,只想把超级收银员做成一个好玩的小游戏,更有趣味性,思路如下:

玩法简单

游戏界面随机出现不同物品,点击条形码格加分,其它减分。

易上手

随便玩一二局游戏就知道怎么玩,学习成本低。

趣味性

游戏UI风格幽默,如鸟被击中后爆炸。

虐心

游戏从一开始简单快速到困难,容易出错,用户不服输。

分享文案拉仇恨

大部分用户第一次玩得的分数低于40,被授予“水货收银员”的称号,并被全球50%以上的收银员打败,求朋友来帮忙报仇;

分数大于40,被授予“超级收银员”的称号,求朋友来超越;

通过用户传播、推广。

游戏场景

来自咸菜大师的作品,微信版截图,原版界面更好看- -

核心代码

1.随机生成物品

九宫格中,随时出现物品,函数如下:

//产生随机数,例如从1~9数字中随机选择3个,getRandom(3,9)
function getRandom(count,totle){var arr = [];var tmp;while(arr.length < count){tmp = parseInt(Math.random() * totle);if(arr.indexOf(tmp) == -1){arr.push(tmp);}}return arr;
}

九宫格中,随时为li标签添加class:

var time;//游戏时间
var interval;//游戏运行的频率
//随机显示卡牌,剩余时间越少,卡片的切换速度和数量的递增
function _updateInterval(){//随机选择class 并随机为选择的li添加该class$("body").find(".game-main li").removeClass();var prize_config = ["bird","code","code","code","bird","code","bird","code","card"]; if((interval >= 800)){var classname_arr = getRandom("1","3");var li_arr = getRandom("1","9");for(var i = 0; i < 1; i ++){ var li_randomName = prize_config[classname_arr[i]];var li_randomLi = $(".game-main li")[li_arr[i]];$("body").find(li_randomLi).addClass("ico-"+li_randomName);}}//此处省略代码...if((interval < 50)){var classname_arr = getRandom("8","9");var li_arr = getRandom("8","9");for(var i = 0; i < 8; i ++){ var li_randomName = prize_config[classname_arr[i]];var li_randomLi = $(".game-main li")[li_arr[i]];$("body").find(li_randomLi).addClass("ico-"+li_randomName);}}//循环自身time_out = setTimeout(arguments.callee,interval);
}

2.时间、分数控制

var time_minus;
var time_out;//时间控制
function prize_time(){ time_minus = setInterval(_countdown,1000);time_out = setTimeout(_updateInterval,interval);
}
function _updateTime(minus){time -= minus;
}
//游戏时间更新
function _updateCount(){$("#game_time").text(time);
}
//游戏时间减少
function _countdown(){_updateTime(1);if(time >= 0){_updateCount();interval = time * 15;interval = Math.max(interval,550);}else if(time < 0){_showEnd();  time_minus && clearInterval(time_minus);time_out && clearTimeout(time_out);}}//分数控制,触摸到鸟和卡片的头像扣5分
$(".game-main li").on("tap",function(){var gameMainLi = $(this);gameMainLi.addClass("on");if(gameMainLi.hasClass("ico-bird")){_updateTime(5)}else if(gameMainLi.hasClass("ico-card")){_updateTime(5)}else if(gameMainLi.hasClass("ico-code")){val += 1;$("#game_order").text(val);}
})

3.根据游戏结果的单数生成分享文案

首先要加载微信分享模块的接口,这里就不做介绍,分享到朋友圈的分案如下:

//时间到,显示结果
function _showEnd(){$(".game-main li").removeClass();$(".state").removeClass("hide");$(".state-order").text(val);//分享到朋友圈的文案txt2 = Math.min((((val / 80)*100)+ (Math.random() *99 / 100)).toFixed(2)  ,100);if(val >= 40){$(".state").addClass("show-suc");txt1 = "我是超级收银员,你敢挑战么";//分享出去的标题share_img = "ico_share_suc.jpg"//分享出去的图标share_txt = "我用微信扫码刷卡,60秒收银"+val+"单,打败全球"+txt2+"%的收银员,你敢挑战么?"//分享出去的描述
  }else{$(".state").addClass("show-fail");txt1 = "我是水货收银员,谁来替我报仇";share_img = "ico_share_fail.jpg"share_txt = "我用微信扫码刷卡,60秒收银"+val+"单,被全球"+(100.00-txt2)+"%的收银员打败/(ㄒoㄒ)/~~,谁来替我报仇"}
}

总结

第一次完整开发一个小游戏,虽然不难,但也是折腾了好几天,以上一点想法,水平有限,不足之处,欢迎大家拍砖~

最后感谢前端大猫的大力协助~

作者:白树

出处:http://peunzhang.cnblogs.com/

【原】我是超级收银员,你敢来挑战吗相关推荐

  1. 『设计模式』就因为多收了我2块5,我追着收银员问是不是不懂设计模式--策略模式

    23种设计模式+额外常用设计模式汇总 (持续更新) 今天去超市买东西,买了50多块钱的东西,然后收钱的时候他多收了,明明会员要打白金会员打9折,黄金会员95折,我是白金会员因该是9折. 我问她:&qu ...

  2. 超市收银软件测试自学,pos前台收银员培训 免费超市收银软件 视频教程

    作为一个超市店铺收银员,特别是一个新手人员,在刚开始的时候,由于对收银软件不甚了解,常常在使用收银软件的时候,觉得很困惑,不知道如何下手开始.本文以星宇免费超市收银软件为例,一步步教您从安装.设置.入 ...

  3. 【详细讲解】某书店有一个收银员该书店最多允许n个购书者进入。将收银员和购书者看作不同的进程,其工作流程如下图所示。利用PV操作实现该过程,设置信号量S1,S2和Sn,初值分别为0,0,n.则图中a1

    某书店有一个收银员该书店最多允许n个购书者进入.将收银员和购书者看作不同的进程,其工作流程如下图所示.利用PV操作实现该过程,设置信号量S1,S2和Sn,初值分别为0,0,n.则图中a1和a2应填入( ...

  4. 收银员英文缩写_如何在没有收银员的苹果商店购买东西

    收银员英文缩写 If you visit an Apple Store in the hopes of buying a new iPhone, iPad, or MacBook, you have ...

  5. 在宜家兼职收银员创收

    十年前大学毕业之后留在了沈阳市工作,那时候和朋友特别喜欢逛宜家,就为了去吃牛肉丸和一块钱的冰淇淋!有一天发现一家张贴一个招聘兼职收银员的广告,时薪9.5元!我和朋友就报名面试了! 宜家是瑞典的企业,需 ...

  6. Callnovo与Freshii合作推出的北美餐饮业颠覆性解决方案-远程真人视频收银员

    新闻:Callnovo与Freshii合作推出了北美餐饮业颠覆性解决方案-远程真人视频收银员(Remote Cashier).颠覆性的远程真人视频收银员(Remote Cashier)解决方案在加拿大 ...

  7. AI收银员火了 阿里云AI产品体系首次全方位公开

    昨天,刚刚上任的AI收银员就让阿里云官抖收获了第一条10万+,嗯就是下面这个视频. 人类在点餐速度上输给了AI,面对每秒速5个字的点单需求:"五个巧克力.两个香草拿铁,巧克力加奶油--&qu ...

  8. 现在连收银员也要考试了吗?

    小编这里指的收银员是指收银员审核员哦!那么什么是收银员审核员呢?收银审核员简单来说就是核对人员,保证资金安全的人员.那跟普通的收银员有什么区别吗? 收银员指超市,商场,宾馆,酒店等经营场所给顾客结账的 ...

  9. [差分约束] AcWing-393 雇佣收银员 AcWing-2128 狡猾的商人 AcWing-3265 再卖菜

    差分约束的大概样子 (大概) 差分约束一般是由特殊的n元一次不等式组组成的,它包含N个变量X1-Xn和M个约束条件,而且每个约束条件都是由两个变量做差组成的,形如,其中的ck是常数,它需要我们找到一组 ...

最新文章

  1. form表单提交编码的问题
  2. intellij idea 生成可执行jar 运行提示没有主清单属性
  3. KafKa-----acks参数对消息持久化的影响
  4. tessorflow基本语法
  5. webstorm和intellij idea下如何自动编译sass和scss文件
  6. windows server2008无法将本地文件复制到远程计算机,windows2008/2012无法从本地复制文件到远程服务器处理方法...
  7. 电子工程师,学会阅读Datasheet很重要!
  8. 不同映射方式下cache的失效率_详解发动机在不同工况下的喷油量控制方式
  9. Spark : DNS resolution failed for url in bootstrap.servers xx:9092
  10. gis 空间分析 鸟类栖息地选取_GIS空间分析专题一:鸟儿栖息地查找
  11. C++ public、protected、private 继承方式的区别
  12. poj 1503 Integer Inquiry (高精度运算)
  13. Windows环境下用nmake编译libevent
  14. Markdown学习笔记
  15. Cacti auth.php,linux下cacti的搭建之详细过程!
  16. 量子力学奇妙之旅-算符和电子自旋
  17. 第二十章 指针 二 为指针分配和释放空间(转)
  18. 读书笔记--《Effective C#》总结
  19. 小米笔记本windows插入电源无法充满电问题处理
  20. 观影指南(使用java语言模拟实现观影指南. 实现添加电影,查看电影列表,分类查看电影列表,显示人气最高的电影)

热门文章

  1. python读取txt文件到excel
  2. 面试题:网页突然加载不出来了
  3. 利用cookie进行登录
  4. 1秒钟带你读懂WAF的技术导向和天御的防御机制
  5. windows 10 优化 (另一篇windows7优化的基础上 补充)
  6. 国浩视点 | 互联网数据中心(IDC)与智算中心的发展趋势及行业监管
  7. 【Matlab学习手记】简单的印章提取
  8. Guitar Pro8免费吉他曲谱mySongBook
  9. 认清隐匿性抑郁症的5个信号,别让病情恶化
  10. P1019 [NOIP2000 提高组] 单词接龙