植物大战僵尸怎么编程?

1.设计一个双人对战的植物大战僵尸,两人在一台电脑上玩。
植物方使用鼠标控制,基本上与原版的控制的方法一样。植物方获胜条件是打掉僵尸最后面的五个墓碑中的三个。僵尸方使用键盘控制,W控制僵尸选择光标的上移,S控制僵尸选择光标的下移,ENTER是僵尸选择的确认,方向键控制僵尸安放的位置,空格键是安放僵尸。僵尸方的获胜条件是与原版一样走到戴夫家里。
2.首先,根据我的设计,我把游戏分为几个元素:地图格子元素,卡片元素,僵尸元素,推车元素,僵尸方的墓碑靶子元素,植物的子弹元素,动画效果播放元素。其次,把游戏分为几个处理:子弹碰到僵尸处理,僵尸碰到植物处理,推车碰到僵尸处理,子弹碰到墓碑靶子处理等。每个处理完后立马接上动画播放效果。
3.植物元素和僵尸元素都是动态的,于是我想到了加载GIF。经过查找资料,找到了在VC6.0中用GDI 加载GIF的方法。
详见VC6.0使用GIF资料
资料和示例程序地址VC6.0加载GIF方法,示例程序
这是因为当数据量很大时,绘图可能需要几秒钟甚至更长的时间,而且有时还会出现闪烁现象,为了解决这些问题,可采用双缓冲技术来绘图。双缓冲即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度。双缓冲实现过程如下:
 (1)、在内存中创建与画布一致的缓冲区
(2)、在缓冲区画图
 (3)、将缓冲区位图拷贝到当前画布上
 (4)、释放内存缓冲区
 增加双缓冲后的示例程序地址双缓冲加载GIF程序结果
4.植物大战僵尸的地图中的草地是有一格一格的,于是可以建立一个二维数组的结构体,来表示地图上当前格子的状态。
5.植物与僵尸都有选择的卡片
植物有植物的卡片,僵尸有僵尸的卡片。每张卡片它们具有不同的属性,建立一个结构体。
6.每个僵尸都是一个独立的单元,包含着它的存活,位置等。我用的是一个结构体数组,其实可以用循环队列的。
7.这里其他元素是推车元素,僵尸方的墓碑靶子元素,植物的子弹元素。同理,它们有自己特性。
8.游戏处理
3.3.1子弹碰到僵尸处理
子弹是一个结构体数组,僵尸也是结构体数组,用两个for循环扫描这两个数组,当子弹的坐标与僵尸的坐标满足相碰关系时,子弹激活标志清零,即子弹消失,同时僵尸的生命值减一。直到僵尸清零,僵尸死亡。
3.3.2僵尸碰到植物处理
For循环扫描每个僵尸,通过僵尸的位置判断出它此时所对应地图上的前一个格子。通过当前格子的状态,判断接下来发生的事情。例如:格子里没植物,僵尸通过;僵尸碰到豌豆射手,坚果墙,向日葵就停下来开吃,同时,格子的生命值不停地减,直到吃掉植物,向前通行,当是撑杆僵尸有一个杆子,碰到它们后要跳过它们;僵尸碰到炸弹,窝瓜,食人花就被吃掉或炸死,同时播放动画效果。
3.3.3推车碰到僵尸处理
For循环扫描每个僵尸,当僵尸走到最左端的时候,激活推车的标志,并且推车向右行驶。推车在这条路上碰到僵尸,僵尸就死亡,当推车到达最右端时,推车死亡。

也许您对下面的内容还感兴趣:

0.2015
基本信息
SQL
$_GET
$_POST
$_COOKIE
包含文件
自动加载
  1. 模型: /www/wwwroot/www.lkshuangji.com/lecms/model/
  2. 视图: /www/wwwroot/www.lkshuangji.com/view/default3/wenda_show.htm
  3. 控制器: /www/wwwroot/www.lkshuangji.com/lecms/control/show_control.class.php
  4. 日志目录: /www/wwwroot/www.lkshuangji.com/log/
  5. 当前页面: /www/wwwroot/www.lkshuangji.com/index.php
  6. 当前时间: 2025-06-20 21:30:03
  7. 当前网协: 10.3.0.100
  8. 请求路径: /wenda/6253.html
  9. 运行时间: 0.2015
  10. 内存开销: 1.18 MB
  1. #0 [time:0.0002s] SELECT * FROM le_runtime WHERE k='cfg' LIMIT 1
  2. #1 [time:0.0003s] SELECT * FROM le_runtime WHERE k='cate_2' LIMIT 1
  3. #2 [time:0.0003s] SELECT * FROM le_cms_wenda WHERE id='6253' LIMIT 1
  4. #3 [time:0.0005s] SELECT * FROM le_user WHERE uid='1' LIMIT 1
  5. #4 [time:0.0009s] SELECT * FROM le_cms_wenda_data WHERE id='6253' LIMIT 1
  6. #5 [time:0.0004s] SELECT * FROM le_cms_wenda_views WHERE id='6253' LIMIT 1
  7. #6 [time:0.0040s] UPDATE LOW_PRIORITY le_cms_wenda_views SET views=views+1 WHERE id='6253' LIMIT 1
  8. #7 [time:0.0002s] SELECT * FROM le_cms_wenda WHERE id='6252'
  9. #8 [time:0.0002s] SELECT * FROM le_cms_wenda WHERE id='6254'
  10. #9 [time:0.0004s] SELECT * FROM le_kv WHERE k='navigate' LIMIT 1
  11. #10 [time:0.0002s] SELECT * FROM le_runtime WHERE k='c59abe1cc70bab90c2851d119a17f6fb' LIMIT 1
  12. #11 [time:0.0002s] SELECT * FROM le_cms_wenda_views WHERE id='69857' OR id='65511' OR id='70236' OR id='69086' OR id='6862' OR id='17874' OR id='6751' OR id='35653'
  13. #12 [time:0.0003s] SELECT * FROM le_cms_wenda WHERE id='69857' OR id='65511' OR id='70236' OR id='69086' OR id='6862' OR id='17874' OR id='6751' OR id='35653'
  14. #13 [time:0.0002s] SELECT * FROM le_cms_wenda WHERE id='84111' OR id='84110' OR id='84109' OR id='84108' OR id='84107' OR id='84106' OR id='84105' OR id='84104'
  15. #14 [time:0.0002s] SELECT * FROM le_category WHERE cid='1' OR cid='2'
  16. #15 [time:0.0006s] SELECT * FROM le_cms_wenda_tag WHERE tagid='27465' OR tagid='1276' OR tagid='16968' OR tagid='95301' OR tagid='18931' OR tagid='23726' OR tagid='55487' OR tagid='4' OR tagid='88837' OR tagid='12199' OR tagid='43067' OR tagid='48065' OR tagid='50022' OR tagid='19134' OR tagid='14440' OR tagid='8082' OR tagid='50047' OR tagid='36861' OR tagid='8014' OR tagid='68587' OR tagid='67267' OR tagid='9307' OR tagid='1766' OR tagid='78666' OR tagid='9833' OR tagid='38' OR tagid='76964' OR tagid='67639' OR tagid='46158' OR tagid='6146'
  17. #16 [time:0.0002s] SELECT * FROM le_cms_wenda_tag_data WHERE tagid='3522' AND id='72016' OR tagid='3522' AND id='64391' OR tagid='3522' AND id='61714' OR tagid='3522' AND id='59939' OR tagid='3522' AND id='59513' OR tagid='3522' AND id='52985'
  18. #17 [time:0.0007s] SELECT * FROM le_cms_wenda WHERE id='72016' OR id='64391' OR id='61714' OR id='59939' OR id='59513'
  19. #18 [time:0.0002s] SELECT * FROM le_cms_wenda_tag_data WHERE tagid='3522' AND id='72016' OR tagid='3522' AND id='64391' OR tagid='3522' AND id='61714' OR tagid='3522' AND id='59939' OR tagid='3522' AND id='59513' OR tagid='3522' AND id='52985'
  20. #19 [time:0.0002s] SELECT * FROM le_cms_wenda WHERE id='72016' OR id='64391' OR id='61714' OR id='59939' OR id='59513'
  1. #control => show
  2. #action => index
  3. #cid => 2
  4. #id => 6253
  5. #mid => 3
    1. #PHPSESSID => h8mukte2lcv4a43qsr2mu1asfp
    1. #0 /www/wwwroot/www.lkshuangji.com/index.php
    2. #1 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/xiunophp.php
    3. #2 /www/wwwroot/www.lkshuangji.com/lecms/config/config.inc.php
    4. #3 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/lib/base.func.php
    5. #4 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/lib/core.class.php
    6. #5 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/lib/debug.class.php
    7. #6 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/lib/log.class.php
    8. #7 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/lib/model.class.php
    9. #8 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/lib/view.class.php
    10. #9 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/lib/control.class.php
    11. #10 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/db/db.interface.php
    12. #11 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/db/db_pdo_mysql.class.php
    13. #12 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/cache/cache.interface.php
    14. #13 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/cache/cache_memcache.class.php
    15. #14 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/ext/network/Network__interface.php
    16. #15 /www/wwwroot/www.lkshuangji.com/lecms/config/plugin.inc.php
    17. #16 /www/wwwroot/www.lkshuangji.com/lecms/plugin/cms_shop/conf.php
    18. #17 /www/wwwroot/www.lkshuangji.com/lecms/plugin/editor_sd/conf.php
    19. #18 /www/wwwroot/www.lkshuangji.com/lecms/plugin/editor_um/conf.php
    20. #19 /www/wwwroot/www.lkshuangji.com/lecms/plugin/import_data/conf.php
    21. #20 /www/wwwroot/www.lkshuangji.com/lecms/plugin/le_auto_alias/conf.php
    22. #21 /www/wwwroot/www.lkshuangji.com/lecms/plugin/le_baidu_zz/conf.php
    23. #22 /www/wwwroot/www.lkshuangji.com/lecms/plugin/le_cha/conf.php
    24. #23 /www/wwwroot/www.lkshuangji.com/lecms/plugin/le_database/conf.php
    25. #24 /www/wwwroot/www.lkshuangji.com/lecms/plugin/le_drafts/conf.php
    26. #25 /www/wwwroot/www.lkshuangji.com/lecms/plugin/le_fragment/conf.php
    27. #26 /www/wwwroot/www.lkshuangji.com/lecms/plugin/le_hscode/conf.php
    28. #27 /www/wwwroot/www.lkshuangji.com/lecms/plugin/le_keywords_links/conf.php
    29. #28 /www/wwwroot/www.lkshuangji.com/lecms/plugin/le_links/conf.php
    30. #29 /www/wwwroot/www.lkshuangji.com/lecms/plugin/le_sitemaps/conf.php
    31. #30 /www/wwwroot/www.lkshuangji.com/lecms/plugin/le_sogou/conf.php
    32. #31 /www/wwwroot/www.lkshuangji.com/lecms/plugin/le_special/conf.php
    33. #32 /www/wwwroot/www.lkshuangji.com/lecms/plugin/le_spider/conf.php
    34. #33 /www/wwwroot/www.lkshuangji.com/lecms/plugin/le_tpl_edit/conf.php
    35. #34 /www/wwwroot/www.lkshuangji.com/lecms/plugin/models_filed/conf.php
    36. #35 /www/wwwroot/www.lkshuangji.com/runcache/misc.func.php
    37. #36 /www/wwwroot/www.lkshuangji.com/runcache/core_lang/zh-cn.php
    38. #37 /www/wwwroot/www.lkshuangji.com/runcache/lang/zh-cn.php
    39. #38 /www/wwwroot/www.lkshuangji.com/runcache/lecms_control/parseurl_control.class.php
    40. #39 /www/wwwroot/www.lkshuangji.com/runcache/lecms_model/runtime_model.class.php
    41. #40 /www/wwwroot/www.lkshuangji.com/runcache/lecms_control/show_control.class.php
    42. #41 /www/wwwroot/www.lkshuangji.com/runcache/lecms_control/base_control.class.php
    43. #42 /www/wwwroot/www.lkshuangji.com/runcache/lecms_model/urls_model.class.php
    44. #43 /www/wwwroot/www.lkshuangji.com/runcache/lecms_model/spider_model.class.php
    45. #44 /www/wwwroot/www.lkshuangji.com/runcache/lecms_model/category_model.class.php
    46. #45 /www/wwwroot/www.lkshuangji.com/runcache/lecms_model/cms_content_model.class.php
    47. #46 /www/wwwroot/www.lkshuangji.com/runcache/lecms_view/default3,wenda_show.htm.php
    48. #47 /www/wwwroot/www.lkshuangji.com/runcache/lecms_model/cms_content_data_model.class.php
    49. #48 /www/wwwroot/www.lkshuangji.com/runcache/lecms_model/cms_content_tag_model.class.php
    50. #49 /www/wwwroot/www.lkshuangji.com/runcache/lecms_model/user_model.class.php
    51. #50 /www/wwwroot/www.lkshuangji.com/runcache/lecms_model/cms_content_views_model.class.php
    52. #51 /www/wwwroot/www.lkshuangji.com/runcache/lecms_model/kv_model.class.php
    53. #52 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/ext/utf8.class.php
    54. #53 /www/wwwroot/www.lkshuangji.com/runcache/lecms_model/cms_content_flag_model.class.php
    55. #54 /www/wwwroot/www.lkshuangji.com/runcache/lecms_model/cms_content_tag_data_model.class.php
    56. #55 /www/wwwroot/www.lkshuangji.com/lecms/xiunophp/tpl/sys_trace.php
    1. #0 utf8 类