C语言和DOTA

mym_cocacola 2016-05-08 12:13:26
加精
大家好,我是小毛施,最近写了一本书,叫《C语言和DOTA》。

喜欢玩游戏吗?想熟悉C语言吗?
这里有个小项目应该可以让你练练手,这个项目是用C来模拟DOTA里的一个场景。
《C语言和DOTA》这本书中会提到我做这件事的初衷,以及从设计到实现的整个过程,希望能让你一直保持轻松愉快的心情。
代码托管在github:
https://github.com/xiaomaoshi/dota

任何人都可以下载代码,之后可以在windows或者linux里运行它,若有好的想法都可以参与提交。
由于我的水平实在有限,书中或者程序中肯定会有缺陷和错误,若你找到了,请通知我。如果你有好的建议或者想法,也请告诉我。

我的博客是:
http://blog.csdn.net/mym_cocacola

书的地址:
http://download.csdn.net/detail/mym_cocacola/9513487

PS: 如果版主能帮忙置顶或者推荐的话,感激不尽。

谢谢各位。
...全文
3820 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
mym_cocacola 2016-05-17
  • 打赏
  • 举报
回复
引用 45 楼 ksx_120999 的回复:
是我的打开方式不对吗,就一个hello dota~
屏幕上只会打印hello dota。 如果你在linux下运行,所有的游戏细节都在日志里,log目录下的battle.log。 如果在windows下运行,看看你的工程目录下,是不是有battle.log。 谢谢你的支持。
ksx_120999 2016-05-17
  • 打赏
  • 举报
回复
是我的打开方式不对吗,就一个hello dota~
mym_cocacola 2016-05-17
  • 打赏
  • 举报
回复
引用 43 楼 hordemark 的回复:
==30276== Memcheck, a memory error detector ==30276== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==30276== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info ==30276== Command: ./fight ==30276== hello, dota! ==30276== ==30276== HEAP SUMMARY: ==30276== in use at exit: 136 bytes in 1 blocks ==30276== total heap usage: 955 allocs, 954 frees, 514,232 bytes allocated ==30276== ==30276== 136 bytes in 1 blocks are definitely lost in loss record 1 of 1 ==30276== at 0x4C29C4F: malloc (vg_replace_malloc.c:299) ==30276== by 0x40341B: find_enemy_area (dota_life.c:102) ==30276== by 0x403009: es_c (dota_es.c:305) ==30276== by 0x401B3F: default_skill (dota_operate.c:323) ==30276== by 0x403192: es_policy (dota_es.c:373) ==30276== by 0x4021E7: fsm_run (dota_fsm.c:103) ==30276== by 0x402272: dota_schedule (dota_frame.c:68) ==30276== by 0x4007C9: main (dota_battle.c:24) ==30276== ==30276== LEAK SUMMARY: ==30276== definitely lost: 136 bytes in 1 blocks ==30276== indirectly lost: 0 bytes in 0 blocks ==30276== possibly lost: 0 bytes in 0 blocks ==30276== still reachable: 0 bytes in 0 blocks ==30276== suppressed: 0 bytes in 0 blocks ==30276== ==30276== For counts of detected and suppressed errors, rerun with: -v ==30276== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
哈哈,非常感谢你。牛头大招技能找了一堆敌人之后,忘记了free,太大意了。 我已经改正提交了,自己也用valgrind跑了一下,OK了。 再次感谢。 ==3600== Memcheck, a memory error detector ==3600== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al. ==3600== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info ==3600== Command: ./fight ==3600== hello, dota! ==3600== ==3600== HEAP SUMMARY: ==3600== in use at exit: 0 bytes in 0 blocks ==3600== total heap usage: 809 allocs, 809 frees, 268,932 bytes allocated ==3600== ==3600== All heap blocks were freed -- no leaks are possible ==3600== ==3600== For counts of detected and suppressed errors, rerun with: -v ==3600== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
hordemark 2016-05-17
  • 打赏
  • 举报
回复
==30276== Memcheck, a memory error detector ==30276== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==30276== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info ==30276== Command: ./fight ==30276== hello, dota! ==30276== ==30276== HEAP SUMMARY: ==30276== in use at exit: 136 bytes in 1 blocks ==30276== total heap usage: 955 allocs, 954 frees, 514,232 bytes allocated ==30276== ==30276== 136 bytes in 1 blocks are definitely lost in loss record 1 of 1 ==30276== at 0x4C29C4F: malloc (vg_replace_malloc.c:299) ==30276== by 0x40341B: find_enemy_area (dota_life.c:102) ==30276== by 0x403009: es_c (dota_es.c:305) ==30276== by 0x401B3F: default_skill (dota_operate.c:323) ==30276== by 0x403192: es_policy (dota_es.c:373) ==30276== by 0x4021E7: fsm_run (dota_fsm.c:103) ==30276== by 0x402272: dota_schedule (dota_frame.c:68) ==30276== by 0x4007C9: main (dota_battle.c:24) ==30276== ==30276== LEAK SUMMARY: ==30276== definitely lost: 136 bytes in 1 blocks ==30276== indirectly lost: 0 bytes in 0 blocks ==30276== possibly lost: 0 bytes in 0 blocks ==30276== still reachable: 0 bytes in 0 blocks ==30276== suppressed: 0 bytes in 0 blocks ==30276== ==30276== For counts of detected and suppressed errors, rerun with: -v ==30276== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
silverbers 2016-05-16
  • 打赏
  • 举报
回复
感谢LZ分享~
karen990 2016-05-16
  • 打赏
  • 举报
回复
感谢LZ分享~
superlazybug 2016-05-12
  • 打赏
  • 举报
回复
mark 目测很屌的样子
天外怪魔 2016-05-12
  • 打赏
  • 举报
回复
Mark,回家看。
mym_cocacola 2016-05-12
  • 打赏
  • 举报
回复
引用 34 楼 chenlei19970308 的回复:
真棒!
Thanks,请多支持。
mym_cocacola 2016-05-12
  • 打赏
  • 举报
回复
引用 38 楼 zhao4zhong1 的回复:
推荐楼主一个软件SigZag:
        _-~~~~-                                         _
       -   @  @                /!_.-_|\                ||
      '         \              `-/_'--'            __./__\             
      |\      .. |             (_(o)\\\)          (_.(o)\\               , __  ,
\     ' . '\___/ ..             (||\\\\;_,          /__-`\\_             -/__\-
|\_  /    -____--//              /  _-".----.          \,\-,           .__O  ,;
 \ \/    .\\     \/            ./_-"  /o,--.o\         <_ -\           (___  ||
  \    .'  \\     |           /      |o (  ) o|         | , \              |=|`
   .   \  /'     |           !__,--.__\o `-'o/          | |  \          __/  \
     \   |       .'           |_-__--__`----'           | |__J         /,-`   |   ,
     _|  /-__-'/             __,/\_|\/\,                (     \           !    \  )\
    |   \     ) )__         (   `/_'`X_;                |      \._      _(_(   _=;_/
     \__/     |___/          `.____)____)               <_________\    <_<__-__;
哈哈,这个软件太搞笑了,后面可以考虑拿这个把日志打印成连环画。
mym_cocacola 2016-05-12
  • 打赏
  • 举报
回复
引用 36 楼 xuzzzhen123 的回复:
Mark,回家看。
引用 37 楼 superlazybug 的回复:
mark 目测很屌的样子
多谢支持,谢谢。
赵4老师 2016-05-12
  • 打赏
  • 举报
回复
推荐楼主一个软件SigZag:
        _-~~~~-                                         _
       -   @  @                /!_.-_|\                ||
      '         \              `-/_'--'            __./__\             
      |\      .. |             (_(o)\\\)          (_.(o)\\               , __  ,
\     ' . '\___/ ..             (||\\\\;_,          /__-`\\_             -/__\-
|\_  /    -____--//              /  _-".----.          \,\-,           .__O  ,;
 \ \/    .\\     \/            ./_-"  /o,--.o\         <_ -\           (___  ||
  \    .'  \\     |           /      |o (  ) o|         | , \              |=|`
   .   \  /'     |           !__,--.__\o `-'o/          | |  \          __/  \
     \   |       .'           |_-__--__`----'           | |__J         /,-`   |   ,
     _|  /-__-'/             __,/\_|\/\,                (     \           !    \  )\
    |   \     ) )__         (   `/_'`X_;                |      \._      _(_(   _=;_/
     \__/     |___/          `.____)____)               <_________\    <_<__-__;
mym_cocacola 2016-05-11
  • 打赏
  • 举报
回复
引用 30 楼 zhouxiaofeng1021 的回复:
可以写了 C语言 与外挂程序吗?
哈哈,我不会写外挂呀,sorry,还请多支持。
mym_cocacola 2016-05-11
  • 打赏
  • 举报
回复
引用 31 楼 henuyx 的回复:
[quote=引用 9 楼 mym_cocacola 的回复:] [quote=引用 6 楼 henuyx 的回复:] 大致浏览了一遍,很有意思,明早再运行一下程序看看效果。 对了,那个石头很多的名字,也很有意思...
谢谢你的支持,这对我来说很重要。 想了一会你说的石头很多的名字,你应该说的是杨石磊吧。他是我的大学好友之一,我的外号就是他取的。 这个程序运行后不会有华丽的效果,只有日志:-),希望你能在这里找到乐趣,have fun。[/quote] 纯linux开发者,所以呢,对这个日志的模式还是很有兴趣的! 编译的时候除了一点小报错。 bsc/dota_log.c line 44 这个可以va_list arg_list=NULL吗? 我将这个去掉了,一般不是指针,不会赋值NULL的吧。
引用 9 楼 mym_cocacola 的回复:
[quote=引用 6 楼 henuyx 的回复:] 大致浏览了一遍,很有意思,明早再运行一下程序看看效果。 对了,那个石头很多的名字,也很有意思...
谢谢你的支持,这对我来说很重要。 想了一会你说的石头很多的名字,你应该说的是杨石磊吧。他是我的大学好友之一,我的外号就是他取的。 这个程序运行后不会有华丽的效果,只有日志:-),希望你能在这里找到乐趣,have fun。[/quote] 作为一格纯linux开发,对日志这种方式还是有特别浓厚的情结的。 不过编译的时候,出现一个小问题。 bsc/dota_log.c:44: error: invalid initializer va_list arg_list = NULL; 这个东西应该是个void* ,不知为何出这种编译错误。 可以加一些执行参数 将结果打印到终端 设置回合时间,可以看到每个回合英雄的释放技能或者普通攻击 这样可以看到三个英雄在互殴...[/quote] 报这个错可能跟linux的版本有关系吧,我这边是ubuntu 12.04,倒是不报这个错。 在2.4内核里va_list 好像是char *,书里有提到,去掉初始化也没关系,每个变量都初始化是华为的硬性规范,一时没改掉。 你这个想法很好啊,输出到屏幕很直观,结果呈现的话也能更好一些。 是两个英雄和一个野怪,半人马是野怪,哈哈。
Heart09 2016-05-11
  • 打赏
  • 举报
回复
引用 9 楼 mym_cocacola 的回复:
[quote=引用 6 楼 henuyx 的回复:] 大致浏览了一遍,很有意思,明早再运行一下程序看看效果。 对了,那个石头很多的名字,也很有意思...
谢谢你的支持,这对我来说很重要。 想了一会你说的石头很多的名字,你应该说的是杨石磊吧。他是我的大学好友之一,我的外号就是他取的。 这个程序运行后不会有华丽的效果,只有日志:-),希望你能在这里找到乐趣,have fun。[/quote] 纯linux开发者,所以呢,对这个日志的模式还是很有兴趣的! 编译的时候除了一点小报错。 bsc/dota_log.c line 44 这个可以va_list arg_list=NULL吗? 我将这个去掉了,一般不是指针,不会赋值NULL的吧。
引用 9 楼 mym_cocacola 的回复:
[quote=引用 6 楼 henuyx 的回复:] 大致浏览了一遍,很有意思,明早再运行一下程序看看效果。 对了,那个石头很多的名字,也很有意思...
谢谢你的支持,这对我来说很重要。 想了一会你说的石头很多的名字,你应该说的是杨石磊吧。他是我的大学好友之一,我的外号就是他取的。 这个程序运行后不会有华丽的效果,只有日志:-),希望你能在这里找到乐趣,have fun。[/quote] 作为一格纯linux开发,对日志这种方式还是有特别浓厚的情结的。 不过编译的时候,出现一个小问题。 bsc/dota_log.c:44: error: invalid initializer va_list arg_list = NULL; 这个东西应该是个void* ,不知为何出这种编译错误。 可以加一些执行参数 将结果打印到终端 设置回合时间,可以看到每个回合英雄的释放技能或者普通攻击 这样可以看到三个英雄在互殴...
zhouxiaofeng1021 2016-05-11
  • 打赏
  • 举报
回复
可以写了 C语言 与外挂程序吗?
mym_cocacola 2016-05-11
  • 打赏
  • 举报
回复
引用 27 楼 craboy1 的回复:
已fuck,sorry!是fork.
哈哈,谢谢,请多支持。
chenlei19970308 2016-05-11
  • 打赏
  • 举报
回复
真棒!
craboy1 2016-05-10
  • 打赏
  • 举报
回复
已fuck,sorry!是fork.
cattpon 2016-05-09
  • 打赏
  • 举报
回复
呵呵~很不错~
加载更多回复(23)

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧