新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论.NET,C#,ASP,VB技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 Dot NET,C#,ASP,VB 』 → CIW版推箱子 (转载,VC++实现) 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 9628 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: CIW版推箱子 (转载,VC++实现) 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     goodtolove001 帅哥哟,离线,有人找我吗?天蝎座1985-10-24
      
      
      等级:大二(研究汇编)
      文章:52
      积分:230
      门派:XML.ORG.CN
      注册:2007/10/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给goodtolove001发送一个短消息 把goodtolove001加入好友 查看goodtolove001的个人资料 搜索goodtolove001在『 Dot NET,C#,ASP,VB 』的所有贴子 引用回复这个贴子 回复这个贴子 查看goodtolove001的博客楼主
    发贴心情 CIW版推箱子 (转载,VC++实现)

    这是一个Win版的推箱子,无聊之作.

    程序名称: CIW_BLUE版 推箱子(附加一个地图编辑器)
    实现语言: C++ & Win API

    因为里面用到了大量图片,如果你想要这个游戏的源代码就留下你的信箱,我会第一时间发给你的.

    程序代码简单介绍(程序分4个类):

    CTitle :  实现一些标题的移动(这个可有可没,美化而已)
    CMap   :  实现读取地图
    CPaint :  实现把画面呈现出来
    CMam   : 实现人物的移动,重新开始,悔棋,等

    还有一个可以编辑地图的程序,这里就不介绍了.

    下面是程序的入口函数:


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    我有个好的网址.里面有好多影视,图片之类的. http://www.goodtolove.com/

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/10/29 17:22:00
     
     goodtolove001 帅哥哟,离线,有人找我吗?天蝎座1985-10-24
      
      
      等级:大二(研究汇编)
      文章:52
      积分:230
      门派:XML.ORG.CN
      注册:2007/10/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给goodtolove001发送一个短消息 把goodtolove001加入好友 查看goodtolove001的个人资料 搜索goodtolove001在『 Dot NET,C#,ASP,VB 』的所有贴子 引用回复这个贴子 回复这个贴子 查看goodtolove001的博客2
    发贴心情 
    #include "CMap.h"
    #include "CMan.h"
    #include "CPaint.h"
    #include "CTitle.h"

    #include <windows.h>
    #include <cstdio>
    #include <ctime>


    ///////////////////////////////////   游戏主要变量初始化    ///////////////////////////////

    CMap map;
    int CMap::m_numOfMap = 0;
    CMan man(map);
    char *pRoleBmpStr[8] = {"bmp//人物左1.bmp", "bmp//人物左2.bmp", "bmp//人物右1.bmp", "bmp//人物右2.bmp", "bmp//人物上1.bmp", "bmp//人物上2.bmp", "bmp//人物下1.bmp", "bmp//人物下2.bmp" };
    CPaint paint("bmp//bg.bmp",pRoleBmpStr, "bmp//箱子.bmp", "bmp//格子.bmp", "bmp//空地.bmp", "bmp//围墙.bmp", "bmp//重合.bmp", "bmp//完成.bmp", "bmp//Win.bmp",30, 30 );
    CTitle title_1("bmp//c.bmp");
    CTitle title_2("bmp//i.bmp");
    CTitle title_3("bmp//w.bmp");
    CTitle title_4("bmp//title.bmp");

    ///////////////////////////////////  游戏主要变量初始化    ///////////////////////////////


    //////////////////////////////////      窗口函数声明     ////////////////////////////////

    ----------------------------------------------
    我有个好的网址.里面有好多影视,图片之类的. http://www.goodtolove.com/

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/10/29 17:23:00
     
     goodtolove001 帅哥哟,离线,有人找我吗?天蝎座1985-10-24
      
      
      等级:大二(研究汇编)
      文章:52
      积分:230
      门派:XML.ORG.CN
      注册:2007/10/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给goodtolove001发送一个短消息 把goodtolove001加入好友 查看goodtolove001的个人资料 搜索goodtolove001在『 Dot NET,C#,ASP,VB 』的所有贴子 引用回复这个贴子 回复这个贴子 查看goodtolove001的博客3
    发贴心情 
    ATOM MyRegisterClass(HINSTANCE hInstance);
    BOOL InitInstance(HINSTANCE, int);
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

    //////////////////////////////////      窗口函数声明     ////////////////////////////////

    /////////////////////////////////       窗口句柄声明      ////////////////////////////////

    HINSTANCE hInst;
    HWND hWnd;

    HWND hRestartBtn ;
    HWND hPreviousBtn;
    HWND hMapList;
    HWND hOpenMapBtn;
    HWND hOpenMapEditBtn;
    HWND hUpdateMapBtn;
    HWND hDeleteMapBtn;

    ////////////////////////////////         窗口句柄声明      ////////////////////////////////


    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {

    ----------------------------------------------
    我有个好的网址.里面有好多影视,图片之类的. http://www.goodtolove.com/

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/10/29 17:23:00
     
     goodtolove001 帅哥哟,离线,有人找我吗?天蝎座1985-10-24
      
      
      等级:大二(研究汇编)
      文章:52
      积分:230
      门派:XML.ORG.CN
      注册:2007/10/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给goodtolove001发送一个短消息 把goodtolove001加入好友 查看goodtolove001的个人资料 搜索goodtolove001在『 Dot NET,C#,ASP,VB 』的所有贴子 引用回复这个贴子 回复这个贴子 查看goodtolove001的博客4
    发贴心情 
    HDC hdc;
    MSG msg;

    srand( time(0) );
    paint.m_xOffsetOfPaint = 50;
    paint.m_yOffsetOfPaint = 68;

    map.ReadMap("map//1.map");
        man.GetXAndYOfMan(map);

    MyRegisterClass(hInstance);
    if (!InitInstance (hInstance, nCmdShow))  
    {
    return FALSE;
    }


        while( msg.message!=WM_QUIT )
        {
            if( PeekMessage( &msg, NULL, 0,0 ,PM_REMOVE) )
            {
                TranslateMessage( &msg );
                DispatchMessage( &msg );
            }
    else
    {
    paint.m_paintNow = GetTickCount();
    if( paint.m_paintNow - paint.m_paintPass > 20 )
    {
    hdc = GetDC(hWnd);
    paint.Paint(man, map, hdc );

    title_1.Move(hWnd, hdc );
    title_2.Move( hWnd, hdc );
    title_3.Move(hWnd, hdc );
    title_4.Move(hWnd, hdc );

    ReleaseDC(hWnd, hdc);
    }
    }
        }

    return msg.wParam;

    ----------------------------------------------
    我有个好的网址.里面有好多影视,图片之类的. http://www.goodtolove.com/

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/10/29 17:23:00
     
     goodtolove001 帅哥哟,离线,有人找我吗?天蝎座1985-10-24
      
      
      等级:大二(研究汇编)
      文章:52
      积分:230
      门派:XML.ORG.CN
      注册:2007/10/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给goodtolove001发送一个短消息 把goodtolove001加入好友 查看goodtolove001的个人资料 搜索goodtolove001在『 Dot NET,C#,ASP,VB 』的所有贴子 引用回复这个贴子 回复这个贴子 查看goodtolove001的博客5
    发贴心情 
    }


    ATOM MyRegisterClass(HINSTANCE hInstance)
    {
    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);  
    wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = (WNDPROC)WndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInstance;
    wcex.hIcon = NULL;
    wcex.hCursor = NULL;
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName = NULL;
    wcex.lpszClassName = "CIW";
    wcex.hIconSm = NULL;

    return RegisterClassEx(&wcex);
    }

    void Change(char* str)
    {
    for(int i=0; i < (int)strlen(str); i++)
    {
    if(str[i] >= 'A' && str[i] <= 'Z')
    {
    str[i] -= 'A' - 'a';
    }
    }
    }
    void AboutMe()
    {
    HWND h=FindWindowEx(NULL,NULL,NULL,"microsoft internet explorer") ;

        ShellExecute(h,"open","http://281011131.qzone.qq.com/",NULL,NULL,SW_SHOWNORMAL);
    }
    void ReadMapFile()
    {
    SendMessage(hMapList, CB_RESETCONTENT, 0, 0);
    WIN32_FIND_DATA fd;
        char myFileName[100];
    GetCurrentDirectory(100, myFileName);
    strcat(myFileName, "\\map\\*.*");
        HANDLE hFile = FindFirstFile(myFileName, &fd);
    char ch[4] = {0,0,0,0};
        do
    {
    if( fd.cFileName[0] != '.' )
    {

    if( fd.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY)
    {
    ch[0] = fd.cFileName[strlen(fd.cFileName) - 3];
    ch[1] = fd.cFileName[strlen(fd.cFileName) - 2];
    ch[2] = fd.cFileName[strlen(fd.cFileName) - 1];
    Change(ch);
    if(strcmp(ch, "map") == 0)
    {
    SendMessage(hMapList, CB_ADDSTRING, 0, (LPARAM)fd.cFileName);
    }
    }
    }
    }while( FindNextFile(hFile, &fd) );

    SendMessage(hMapList, CB_SETCURSEL, 0, 0);
    }

    void DeleteMapFile()
    {

    int index = SendMessage(hMapList, CB_GETCURSEL, 0, 0);
    if( index >= 0)
    {
    char selFile[100];
    char mapName[100];
    SendMessage(hMapList, CB_GETLBTEXT, index, (LPARAM)selFile);
    sprintf(mapName, "map\\%s", selFile);
    DeleteFile(mapName);
    ReadMapFile();
    }
    }
    BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
    {
    hInst = hInstance;

    hWnd = CreateWindow("CIW", "推箱子 CIW_BLUE 制作" ,WS_MINIMIZEBOX | WS_SYSMENU,
    500, 500, 300, 200, NULL, NULL, hInstance, NULL);

    if (!hWnd)
    {
    return FALSE;
    }

    MoveWindow(hWnd,100,50,780,585,true);
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
         
    hMapList =CreateWindow("COMBOBOX", NULL,  CBS_SORT | CBS_DROPDOWNLIST| WS_CHILD| WS_VISIBLE, 600, 110, 140, 500, hWnd, NULL, hInst, NULL);
    hRestartBtn  = CreateWindow("BUTTON", "重新开始", BS_DEFPUSHBUTTON |WS_CHILD | WS_VISIBLE, 600, 30, 100, 30, hWnd, NULL, hInst, NULL);
    hPreviousBtn = CreateWindow("BUTTON", "悔棋", BS_DEFPUSHBUTTON |WS_CHILD | WS_VISIBLE, 600, 70, 100, 30, hWnd, NULL, hInst, NULL);
    hOpenMapBtn = CreateWindow("BUTTON", "选择地图", BS_DEFPUSHBUTTON |WS_CHILD | WS_VISIBLE, 600, 150, 100, 30, hWnd, NULL, hInst, NULL);
        hOpenMapEditBtn = CreateWindow("BUTTON", "增加地图", BS_DEFPUSHBUTTON |WS_CHILD | WS_VISIBLE, 600, 180, 100, 30, hWnd, NULL, hInst, NULL);
    hDeleteMapBtn = CreateWindow("BUTTON", "删除地图", BS_DEFPUSHBUTTON |WS_CHILD | WS_VISIBLE, 600, 210, 100, 30, hWnd, NULL, hInst, NULL);

    ----------------------------------------------
    我有个好的网址.里面有好多影视,图片之类的. http://www.goodtolove.com/

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/10/29 17:24:00
     
     goodtolove001 帅哥哟,离线,有人找我吗?天蝎座1985-10-24
      
      
      等级:大二(研究汇编)
      文章:52
      积分:230
      门派:XML.ORG.CN
      注册:2007/10/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给goodtolove001发送一个短消息 把goodtolove001加入好友 查看goodtolove001的个人资料 搜索goodtolove001在『 Dot NET,C#,ASP,VB 』的所有贴子 引用回复这个贴子 回复这个贴子 查看goodtolove001的博客6
    发贴心情 
    ReadMapFile();
    AboutMe();
    return TRUE;
    }


    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {


        HDC hdc;
    switch (message)
    {
    case WM_KEYDOWN:

    if(wParam == VK_ESCAPE)
    {

    SendMessage(hWnd, WM_COMMAND, 0, (LPARAM)hRestartBtn);
    }

    hdc = GetDC(hWnd);
    man.GameLoop(map, wParam);

    if(man.IsWin(map ))     
    {
        man.m_direction = VK_DOWN;

    man.m_numOfMove = 0;
    InvalidateRect(hWnd, NULL, true);
    paint.WinPaint( hdc);
    PlaySound (TEXT ("Sound//Win.WAV"), NULL, SND_FILENAME | SND_ASYNC) ;
                Sleep(2000);

    int index = SendMessage(hMapList, CB_GETCURSEL, 0, 0);
    int allIndex= SendMessage(hMapList, CB_GETCOUNT, 0, 0);
    if( index + 1 < allIndex )
    {
    char selFileName[100];
    char mapName[100];
    SendMessage(hMapList, CB_GETLBTEXT, index + 1, (LPARAM) (LPCSTR)selFileName);
    sprintf(mapName, "map\\%s", selFileName);
    map.ReadMap(  mapName );
    man.GetXAndYOfMan(map);
    SetFocus(hWnd);
    SendMessage(hMapList, CB_SETCURSEL, index + 1, (LPARAM) (LPCSTR)selFileName);
    }
    else if(index + 1 == allIndex)
    {

    char selFileName[100];
    char mapName[100];
    SendMessage(hMapList, CB_SETCURSEL, 0, (LPARAM) (LPCSTR)selFileName);
    SendMessage(hMapList, CB_GETLBTEXT, 0, (LPARAM) (LPCSTR)selFileName);
    sprintf(mapName, "map\\%s", selFileName);
    map.ReadMap(  mapName );
    man.GetXAndYOfMan(map);
    SetFocus(hWnd);

    }
    else
    {
    man.Restart(map);
    man.GetXAndYOfMan(map);
    SetFocus(hWnd);
    }

    }

    ReleaseDC(hWnd,hdc);
    break;

    case WM_DESTROY:
    PostQuitMessage(0);
    break;

    case WM_COMMAND:

    if((HWND) lParam == hRestartBtn)
    {

    if(MessageBox(hWnd, "真的要重新开始吗?", "提示", MB_YESNO) ==IDYES)
    {
    InvalidateRect(hWnd, NULL, true);
    man.Restart(map);
    man.GetXAndYOfMan(map);
    SetFocus(hWnd);
    }

    }

    if((HWND) lParam == hPreviousBtn)
    {
    man.Previous(map);
    SetFocus(hWnd);
    }

    if((HWND) lParam ==hOpenMapBtn)
    {

    int index = SendMessage(hMapList, CB_GETCURSEL, 0, 0);
    if( index != -1 )
    {
    char selFileName[100];
    char mapName[100];
    memset(mapName, 0, 100);
    SendMessage(hMapList, CB_GETLBTEXT, index, (LPARAM) (LPCSTR)selFileName);
    sprintf(mapName, "map\\%s", selFileName);
    map.ReadMap(  mapName );

    SendMessage(hWnd, WM_COMMAND, 0, (LPARAM)hRestartBtn);
    SetFocus(hWnd);
    }
    }

    if((HWND) lParam ==hOpenMapEditBtn)
    {
    if(WinExec("推箱子地图制作.exe", SW_SHOW) == ERROR_FILE_NOT_FOUND  )
    {
    MessageBox(hWnd, "找不到地图编辑器,请确认和本程序在同个目录.", "错误提示", MB_OK | MB_ICONERROR);
    }

    }

    if((HWND) lParam ==hDeleteMapBtn)
    {
    if(MessageBox(hWnd, "真的要删除当前选择的这个地图吗?", "提示", MB_YESNO ) ==IDYES)
    {
    DeleteMapFile();
    SetFocus(hWnd);
    }
    }
    if( HIWORD(wParam) == CBN_SELCHANGE ||  HIWORD(wParam) ==CBN_KILLFOCUS)
    {
    SetFocus(hWnd);
    }

    if( HIWORD(wParam) ==CBN_SETFOCUS)
    {
    ReadMapFile();

    }

    break;

    case WM_RBUTTONDOWN:
    man.Previous(map);
    break;

    case WM_CLOSE:
    if(MessageBox(hWnd, "真的要退出游戏吗?", "提示", MB_YESNO ) ==IDYES)
    {
    ExitProcess(0);
    }
    break;
    default:
    return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
    }

    ----------------------------------------------
    我有个好的网址.里面有好多影视,图片之类的. http://www.goodtolove.com/

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/10/29 17:24:00
     
     goodtolove001 帅哥哟,离线,有人找我吗?天蝎座1985-10-24
      
      
      等级:大二(研究汇编)
      文章:52
      积分:230
      门派:XML.ORG.CN
      注册:2007/10/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给goodtolove001发送一个短消息 把goodtolove001加入好友 查看goodtolove001的个人资料 搜索goodtolove001在『 Dot NET,C#,ASP,VB 』的所有贴子 引用回复这个贴子 回复这个贴子 查看goodtolove001的博客7
    发贴心情 
    游戏的运行界面:
    http://hiphotos.baidu.com/ciw_blue/pic/item/5ae0c1af7b150dc77dd92ace.jpg
    地图编辑器运行界面:
    http://hiphotos.baidu.com/ciw_blue/pic/item/3fa5e6d45f25350aa08bb778.jpg

    ----------------------------------------------
    我有个好的网址.里面有好多影视,图片之类的. http://www.goodtolove.com/

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/10/29 17:26:00
     
     qdhqf 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:60
      门派:XML.ORG.CN
      注册:2007/12/11

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给qdhqf发送一个短消息 把qdhqf加入好友 查看qdhqf的个人资料 搜索qdhqf在『 Dot NET,C#,ASP,VB 』的所有贴子 引用回复这个贴子 回复这个贴子 查看qdhqf的博客8
    发贴心情 
    haha, 通过看别人的代码学的快些,
    能不能给我发一份啊
    qdhqf@163.com
    不胜感激!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/12/13 7:17:00
     
     forever1005 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:54
      门派:XML.ORG.CN
      注册:2008/3/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给forever1005发送一个短消息 把forever1005加入好友 查看forever1005的个人资料 搜索forever1005在『 Dot NET,C#,ASP,VB 』的所有贴子 引用回复这个贴子 回复这个贴子 查看forever1005的博客9
    发贴心情 可以将你的源代码发过来吗
    forever_1005@163.com 谢谢 一定带地图编辑器哦
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/3/25 10:55:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Dot NET,C#,ASP,VB 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/28 6:29:00

    本主题贴数9,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    3,070.313ms