zoukankan      html  css  js  c++  java
  • 用原生javascript模拟经典FC游戏公路争霸

    #用原生javascript模拟经典FC游戏公路争霸
    
    前几天看了园子里面的随笔 [原生javascript开发仿微信打飞机小游戏](http://www.cnblogs.com/Mr-Nobody/p/3537718.html)一时兴起,自己也搞了一个小游戏,练习一下自己的js,dom及游戏编程的思维
    
    
    其中还参考了
    [另外一个汽车游戏](http://wd.jb51.net:81/200910/yuanma/car_game_js.rar)
    
    
    在此说一下过程中一些细节吧
    **油门**功能的实现是其中最大的难点,因为当你按住J键,J的keypress事件会一直持续,但再按其他键(如左右移动)时,相应的keydown事件会中断J的keypress,导致不能一直持续加油。不过在jb51中找到了一款类似游戏,DEMO后,发现能实现这个功能。
    于是下载源代码,直接全目录搜索`z`的ascii代码,很快就找到了它的解决方法:keydown的时候注册一个状态,keyup的时候改变,然后把要处理的事情都放在整个程序主体的setInterval中。这样整个问题就迎刃而解了。
    
    事后再想想,这个解决思路其实跟`node`的思路有点类似,不开多线程,而是把有的事情都放到一个队列中,CPU集中精力处理这个队列上的事情即可,回调函数执行完之后,又在队列中注册新的事件。
    
    
    经典FC游戏公路争霸原图:
    
    ![公路争霸](https://images0.cnblogs.com/blog/84053/201402/071935515502741.jpg)
    
    ![公路争霸](https://images0.cnblogs.com/blog/84053/201402/071935584536266.jpg)
    
    
    模拟游戏图:
    
    ![模拟经典FC游戏公路争霸](https://images0.cnblogs.com/i/84053/201403/022336453608672.jpg)
    
    
    [DEMO](http://p2227.github.io/demo/gameRoadFighter/?v=0.12)
    
    [CODE](https://github.com/p2227/demo/tree/gh-pages/gameRoadFighter)
    
  • 相关阅读:
    二进制位运算
    Leetcode 373. Find K Pairs with Smallest Sums
    priority_queue的用法
    Leetcode 110. Balanced Binary Tree
    Leetcode 104. Maximum Depth of Binary Tree
    Leetcode 111. Minimum Depth of Binary Tree
    Leetcode 64. Minimum Path Sum
    Leetcode 63. Unique Paths II
    经典的递归练习
    案例:java中的基本排序
  • 原文地址:https://www.cnblogs.com/p2227/p/3539851.html
Copyright © 2011-2022 走看看