1,本来我想先把游戏传上来的,但是审核没通过.只好连源码一块传上来.
2,游戏没有完成,有些选项不能用,我现在还在陆续的写.
3,代码虽然有点乱但是新手看看还是蛮有意思的.
4,图形引擎部分用的是DirectDraw但是我已经尽量把它分离出来了.
5,gif 和 png 图片解码我是在网上搜的,其余部分多数都是自己写的.
6,如果你要编译需要下载dx8.0sdk(可以在GameRes.com下载精简版的).
7,我用的是vc6.0的编译器但我在vc2008 devc++都测试过可以编译的.
8,里面有我编译好的可执行文件.完全仿照fc游戏三国志-中原之霸者.(鼠标操作)
9,程序里面有一些内存泄露.但不会引起系统错误.
10,最重要的一点,你可以看一看真正的业余程序员写的程序.源码下载地址:
http://download.csdn.net/source/2530808

解决方案 »

  1.   

    dx8.0sdk下载地址:
    http://resource.gameres.com/dx81.zip
      

  2.   

    还有我在LaoDen发布的开源的跨平台编译器上(我不知道怎样称呼)也测试过可以编译.
    可能需要设置afxres.h的包含路径.
      

  3.   

    我没有在里面加入声音但用过DirectMusic你就会知道加入声音太简单了.
      

  4.   

    up....
    请问楼主 怎么配置啊
    我直接 打开工作空间 然后加添加了  那个 lib
    可是还有错误啊
           c:\documents and settings\lin\桌面\sg100708\sg100708\directdraw.h(13) : see declaration of 'tagDXSURFACE'
    我用 的 d3d 9.0的
      

  5.   

    //这两行你改了没有?
    #pragma comment(lib, "C:\\Program Files\\dx8sdk1\\lib\\dxguid.lib  ")
    #pragma comment(lib, "C:\\Program Files\\dx8sdk1\\lib\\ddraw.lib  ")
      

  6.   


    //还有必须包含d3d 9.0中的ddraw.h,vc6.0中的那个太老了.
      

  7.   


    //还有必须先包含d3d 9.0中的ddraw.h,vc6.0中的那个太老了.
    -----------------------------------------------------------
    这个是  自己#include <ddraw.h>吗
      

  8.   

    //找到这三行
    #pragma comment(lib, "C:\\Program Files\\dx8sdk1\\lib\\dxguid.lib ")
    #pragma comment(lib, "C:\\Program Files\\dx8sdk1\\lib\\ddraw.lib ")
    #include <ddraw.h>
    //改成
    #pragma comment(lib, "dxguid.lib ")
    #pragma comment(lib, "ddraw.lib ")
    #include "ddraw.h"
    //然后在dx9.0sdk中找到ddraw.h,dxguid.lib,ddraw.lib这三个文件
    //把它们复制到和工作空间就是和sanguo.dsw在一个目录下就ok了.其余就不用管了.
      

  9.   

    //限制移动武将的数量&&城堡内必须留有一名武将
    if (s_CityIte->GetSelectManCount()MaxMoveManCount
    ||s_CityIte->IsSelectAllMan())
    {
    s_CityIte->SwitchSelectCurrentMan();
    }
    //有错误改成
    if (s_CityIte->GetSelectManCount()MaxMoveManCount
    ||!s_CityIte->IsSelectAllMan())
    {
    s_CityIte->SwitchSelectCurrentMan();
    }
      

  10.   

    DX9.0 里已经没有DDRAW了,微软已经把它整合到D3D里。所以上面的某童鞋无法编译
      

  11.   

    在VC6.0中编译只是缺少DDRAW.LIB,DDRAW.H,DXGUID.LIB这三个文件,如果在VC2010中编译连DDRAW已经是最新版的了.我在上面给出DX8.0SDK的下载地址了(只有10兆),DX9.0SDK也可以编译的.
    再次声明:这有游戏没有完成,严格的说完成度不到百分之十.里面的代码也不是十分的整洁大约有4000行代码,50个左右的文件,个人感觉唯一值得赞赏的地方就是框架打造的还不错,虽然文件多但是每个文件都有各自的用途,尽量避免了相互牵扯.是按照场景来划分的,如果大家有兴趣可以很轻松的加入自己的代码,里面的一些BUG可以很轻松的修正,鼠标操作也能够很容易的一直成为键盘版的,你现在看到的是我修改了无数次才是现在的这个样子,初期的代码直接没法看.里面的一些非常有意思的功能是很多初学者都想了解的.里面的DIRECTDRAW引擎可以做成库文件也就是说C语言也能用.我花了很长时间优化<查看武将>选项,尽量使动画平滑运行.我在主循环里面使用了Sleep(1),这样在单核的计算机里面图像的FPS只能达到60左右,如果加入一些线程还能高一些.里面大多数代码都没有什么技术含量,即使这样仍然花费了我很长的时间.虽然网上有谣言说win7已经不再支持DIRECTDRAW但这个游戏我在win7中测试过确实能运行没问题的,很多人可能觉得DIRECTDRAW已经过时了,应该直接搞D3D,但我个人能力有限而且我也觉得大多数程序员能把DIRECTDRAW搞精通就很不错了.游戏里面的大多数图片是在神农氏之祖的百度空间里面下载的.
      

  12.   

    包含了图形引擎?  还是指的使用的ddraw,那与引擎的概念还是有差别的
      

  13.   

    你好,我下载的你这个程序,直接在VC6.0下面编译,出现了93 error(s), 0 warning(s)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    e:\sg\sg100708\directdraw.h(14) : error C2146: syntax error : missing ';' before identifier 'pdds'
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'LPDIRECTDRAWSURFACE7' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'pdds' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(62) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    e:\sg\sg100708\directdraw.h(272) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    e:\sg\sg100708\basic.cpp(151) : error C2039: 'pdds' : is not a member of 'tagDXSURFACE'
            e:\sg\sg100708\directdraw.h(13) : see declaration of 'tagDXSURFACE'
    e:\sg\sg100708\basic.cpp(151) : error C2660: 'ConvertGDIColor' : function does not take 2 parameters
    e:\sg\sg100708\basic.cpp(154) : error C2039: 'pdds' : is not a member of 'tagDXSURFACE'
            e:\sg\sg100708\directdraw.h(13) : see declaration of 'tagDXSURFACE'
    e:\sg\sg100708\basic.cpp(154) : error C2660: 'ConvertGDIColor' : function does not take 2 parameters
    e:\sg\sg100708\basic.cpp(155) : error C2039: 'pdds' : is not a member of 'tagDXSURFACE'
            e:\sg\sg100708\directdraw.h(13) : see declaration of 'tagDXSURFACE'
    e:\sg\sg100708\basic.cpp(155) : error C2660: 'ConvertGDIColor' : function does not take 2 parameters
    Com00.cpp
    e:\sg\sg100708\directdraw.h(14) : error C2146: syntax error : missing ';' before identifier 'pdds'
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'LPDIRECTDRAWSURFACE7' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'pdds' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(62) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    e:\sg\sg100708\directdraw.h(272) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    Com1_.cpp
    e:\sg\sg100708\directdraw.h(14) : error C2146: syntax error : missing ';' before identifier 'pdds'
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'LPDIRECTDRAWSURFACE7' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'pdds' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(62) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    e:\sg\sg100708\directdraw.h(272) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    Com1_1.cpp
    e:\sg\sg100708\directdraw.h(14) : error C2146: syntax error : missing ';' before identifier 'pdds'
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'LPDIRECTDRAWSURFACE7' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'pdds' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(62) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    e:\sg\sg100708\directdraw.h(272) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    Com1_2.cpp
    e:\sg\sg100708\directdraw.h(14) : error C2146: syntax error : missing ';' before identifier 'pdds'
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'LPDIRECTDRAWSURFACE7' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'pdds' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(62) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    e:\sg\sg100708\directdraw.h(272) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    Com1_3.cpp
    e:\sg\sg100708\directdraw.h(14) : error C2146: syntax error : missing ';' before identifier 'pdds'
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'LPDIRECTDRAWSURFACE7' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'pdds' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(62) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    e:\sg\sg100708\directdraw.h(272) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    Com1_5.cpp
    e:\sg\sg100708\directdraw.h(14) : error C2146: syntax error : missing ';' before identifier 'pdds'
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'LPDIRECTDRAWSURFACE7' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'pdds' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(62) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    e:\sg\sg100708\directdraw.h(272) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    Com2_.cpp
    e:\sg\sg100708\directdraw.h(14) : error C2146: syntax error : missing ';' before identifier 'pdds'
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'LPDIRECTDRAWSURFACE7' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'pdds' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(62) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    e:\sg\sg100708\directdraw.h(272) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    Com2_1.cpp
    e:\sg\sg100708\directdraw.h(14) : error C2146: syntax error : missing ';' before identifier 'pdds'
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'LPDIRECTDRAWSURFACE7' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(14) : error C2501: 'pdds' : missing storage-class or type specifiers
    e:\sg\sg100708\directdraw.h(62) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'
    e:\sg\sg100708\directdraw.h(272) : error C2061: syntax error : identifier 'LPDIRECTDRAWSURFACE7'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~这是怎么回事啊?请指教