• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            3D FPS

            1234567890

              C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              57 Posts :: 2 Stories :: 57 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(10)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            #

            C++ 想寫(xiě)些高深的 不過(guò)我不會(huì)
            呀 寫(xiě)些入門(mén)級(jí)的 充充數(shù)
            stl 里面有個(gè)算法的 sort

            大概是用那個(gè)partion sort 算法吧 其實(shí)我不太清楚 根據(jù)OO 思想 不應(yīng)該去知道 對(duì)這個(gè)思想有保流

            使用上方便 放入起始的位置迭代器 然后再放入自己的函數(shù)對(duì)象就可以了

            寫(xiě)個(gè)示例:

            #include <stdio.h>
            #include <tchar.h>
            #include <algorithm>
            #include <iostream>
            #include <utility>
            #include <stdlib.h>
            #include <vector>

            template<int iType>
            struct mygreater
            {     
                bool operator()(const std::pair<int,float>  & _Left, const std::pair<int,float>  & _Right) const
                {   
                    if (iType == 1)
                    {
                        return (_Left.first > _Right.first);
                    }
                    else if (iType == 2)
                    {
                        return (_Left.second > _Right.second);
                    }
                    else
                    {
                         //error
                    }
                   
                }
            };

            void myprint(const std::pair<int,float>  & i)
            {
                std::cout<< i.first << " " << i.second << "\n";
            }

            int _tmain(int argc, _TCHAR* argv[])
            {
                std::vector<std::pair<int,float> > gVecpair;
                for (int i = 0; i <= 10; i++ )
                    gVecpair.push_back( std::make_pair( rand(),(float)rand()));
               
                std::for_each(gVecpair.begin(),gVecpair.end(),myprint);
                std::sort(gVecpair.begin(),gVecpair.end(),mygreater<1>( ));
                std::for_each(gVecpair.begin(),gVecpair.end(),myprint);

                std::cout<<"\n";

                std::sort(gVecpair.begin(),gVecpair.end(),mygreater<2>( ));
                std::for_each(gVecpair.begin(),gVecpair.end(),myprint);

                getchar();
                return 0;
            }


            posted @ 2009-01-12 00:12 DK_jims 閱讀(408) | 評(píng)論 (1)編輯 收藏

            想寫(xiě)一些東西
            雖然我并不是無(wú)東西好寫(xiě) 但我不想寫(xiě)
            近來(lái)發(fā)現(xiàn)自己邏輯能力太低 轉(zhuǎn)數(shù)不夠高
            好想找一些理由的
            可惜 低層開(kāi)發(fā)的都是高手
            我在邏輯開(kāi)發(fā)這個(gè)層 還是整理一下而已

            邏輯能力 通常來(lái)說(shuō)就是將一堆東西整理成一排的東西

            記起以前裝VC++6.0 我連C++語(yǔ)言都不知道是什么

            然后按下一步一步 竟然按出個(gè)窗口 神奇呀

            想想辦法提高自己的大腦轉(zhuǎn)數(shù)才行

            posted @ 2008-12-27 07:35 DK_jims 閱讀(129) | 評(píng)論 (0)編輯 收藏

            網(wǎng)上看看 windows7 差不多出來(lái)了

            vista 又過(guò)時(shí)羅

            快 時(shí)間 速度

            posted @ 2008-12-14 21:51 DK_jims 閱讀(112) | 評(píng)論 (0)編輯 收藏

            近來(lái)玩EMACS 文本編輯器

            不用用 就只用記事本功能

            寫(xiě)的時(shí)候 就CX CF 然后寫(xiě)文件名 FF

            寫(xiě)完?yáng)|西后 按CX CS CZ 好過(guò)引的一組 保存并最小化

            很好 這樣的組合 但是最小化后 我找不到如何重新喚醒這個(gè)ES的方法

            然后 我覺(jué)得 如果 最小化 再有一個(gè)全局的熱鍵 喚醒就好了

            于是 覺(jué)得這個(gè)隨便用VC寫(xiě)一下就可以了

            那就上網(wǎng)搜搜 汗 對(duì)windows api 不是驚人的明白 無(wú)法不網(wǎng)

            搜到是 reg??hot??key 然后看看
            想了一下 就找到ES窗口 然后注冊(cè)一個(gè)全局熱鍵給本地這個(gè)窗口 響應(yīng) 最大化ES的函數(shù) showwindow 這樣就OK啦

            咁我就用控制臺(tái)寫(xiě)了
            然后控制臺(tái)的窗口句柄 找不到 找到了一個(gè)Handle 未果

            放棄了 那用一個(gè)createwindow自己創(chuàng)建一個(gè)窗口算了

            代碼檢查出錯(cuò)基本上我無(wú) 我只是寫(xiě)寫(xiě)方便一下自己玩ES 不要學(xué)這樣無(wú)檢查性的代碼

            起碼我無(wú)檢查注冊(cè)熱鍵成不成功的

            有了這個(gè)exe

            按ALT + Z 就是喚醒ES的了

            跟Ctrl + Z 對(duì)應(yīng)一下
             
            然后覺(jué)得這個(gè)窗口陰住地方
            搞了個(gè)Ctrl + alt +shift +D 的隱藏這個(gè)東西 顯示也用這個(gè)鍵

            系統(tǒng)套盤(pán)那個(gè)不想搞 合適幾行代碼了事算了

            ES_now  

            2010_1115 更新
            http://m.shnenglu.com/Files/jimsmorong/esnow_bjam.rar

            代碼與EXE都在這里 
            posted @ 2008-12-06 23:56 DK_jims 閱讀(358) | 評(píng)論 (3)編輯 收藏

            近來(lái)做服務(wù)那邊

            網(wǎng)上搜到有個(gè) Ascent的開(kāi)源大項(xiàng)目不錯(cuò) 介紹大家看看 反正我無(wú)看懂 看了幾眼 就不看了 但我就是敢說(shuō)它不錯(cuò)

            關(guān)于Ascent 這個(gè)網(wǎng)址的人有研究 http://blog.csdn.net/yebeans/


            然后呢 聽(tīng)ES的浮夸 很過(guò)引 做個(gè)追星的人 ES

            嗯 有時(shí)又想想以前的歲月 覺(jué)得應(yīng)該研究下如何追星

            如何拜偶像


            想想下 應(yīng)該足夠證明我還是有思想 嗯哆了
            posted @ 2008-12-01 23:28 DK_jims 閱讀(134) | 評(píng)論 (0)編輯 收藏

            C#的委托看得我暈暈的 還有socket的東西有些不太明白 大學(xué)時(shí)寫(xiě)的東西 不知道怎么 硬是給我亂調(diào)試運(yùn)行得了 不過(guò)現(xiàn)在不知道了

            我發(fā)布的代碼本著完全不負(fù)責(zé)的發(fā)的 特別是這個(gè) 記得以前還有個(gè)mfc的 扔了不知道在哪里了
            /Files/jimsmorong/DK_Socket_v1.rar
            posted @ 2008-09-20 09:18 DK_jims 閱讀(183) | 評(píng)論 (1)編輯 收藏

            premake是lua創(chuàng)建項(xiàng)目管理文件用的

            可以自己寫(xiě)lua文件 現(xiàn)在好多開(kāi)源程序用這個(gè)構(gòu)建 我也自己寫(xiě)一個(gè)

            用批處理建文件結(jié)構(gòu)
            先點(diǎn)那個(gè)amake.cmd 然后就上一層目錄 就有一個(gè)文件夾的了 是DK_project文件夾

            里面的那個(gè)DK_project\project\build\premake里有幾個(gè)批處理 再點(diǎn)這個(gè)里面的amake就可以有sln文件出來(lái)的了 根據(jù)premake.lua決定羅 有時(shí)間大家看看 很過(guò)引的東西
            代碼在這里
            /Files/jimsmorong/DK_create_project.rar
            posted @ 2008-09-20 09:13 DK_jims 閱讀(936) | 評(píng)論 (0)編輯 收藏

            dxut 10里有sdkmesh網(wǎng)格文件格式 這個(gè)我再封閉一下 將大小中心點(diǎn)放進(jìn)去
            今年5月份寫(xiě)的一個(gè)作品
            以前做過(guò)一個(gè)蛇仔在地上轉(zhuǎn)圈子的 代碼寫(xiě)的自己也不想看了 將它放出來(lái)算了

            代碼在這里:
            /Files/jimsmorong/directx_snake.rar
            posted @ 2008-09-20 09:05 DK_jims 閱讀(193) | 評(píng)論 (0)編輯 收藏

            以前學(xué)lua寫(xiě)過(guò)用lua控制鍵盤(pán)mouse的

            然后近來(lái)無(wú)事做 閑 網(wǎng)上找到個(gè)鉤子程序 加入去 記錄下按鍵消息 然后寫(xiě)成lua文件 再執(zhí)行l(wèi)ua 就有按鍵精錄的效果了 不過(guò)時(shí)間器無(wú)寫(xiě)到 mouse也未寫(xiě) 簡(jiǎn)單只記錄鍵盤(pán) 隔一秒執(zhí)行一個(gè)按鍵

            代碼在這里:
            /Files/jimsmorong/kbhook.rar

            更新一下
            http://m.shnenglu.com/jimsmorong/archive/2013/05/11/200176.html
            posted @ 2008-09-20 09:01 DK_jims 閱讀(856) | 評(píng)論 (0)編輯 收藏

            1.2008/9/10 3:51:40

            2.glest再分析

            3.分析方法同表現(xiàn)形式都以文本來(lái)體現(xiàn)

            // 所以這個(gè)是main
            4.int glestMain(int argc, char** argv){

             MainWindow *mainWindow= NULL;
             Program *program= NULL;
             ExceptionHandler exceptionHandler;
             exceptionHandler.install();

             try{
              //配置文件的 程序開(kāi)啟的
              Config &config = Config::getInstance();

              showCursor(config.getBool("Windowed"));
              //創(chuàng)建一個(gè)程序
              program= new Program();
              //創(chuàng)建一個(gè)窗口 以程序指針?lè)旁诖翱诶?可以調(diào)用窗口內(nèi)的程序
              mainWindow= new MainWindow(program);

              //分析命令行 然后就根據(jù)程序設(shè)置窗口
              if(argc==2 && string(argv[1])=="-server"){
               program->initServer(mainWindow);
              }
              else if(argc==3 && string(argv[1])=="-client"){
               program->initClient(mainWindow, Ip(argv[2]));
              }
              else{
               program->initNormal(mainWindow);
              }

              //main loop
              while(Window::handleEvent()){
               program->loop();
              }
             }
             catch(const exception &e){
              restoreVideoMode();
              exceptionMessage(e);
             } 

             delete mainWindow;

             return 0;
            }

            5.體誤是窗口里有程序指針 程序里有窗口指針 兩個(gè)互相叼


            6.如是這樣 就是《配置,窗口,程序,錯(cuò)誤》這么4個(gè)類(lèi)
            所以一個(gè)一個(gè)分析

            -----------------我是頂頂頂頂?shù)姆指罹€------------------------


            7.MainWindow這個(gè)類(lèi)是把設(shè)置一個(gè)程序指針在里面 然后把消息交給程序處理 繼成那個(gè)WindowGl類(lèi)
             將消息交給程序 處理消息這個(gè)東西應(yīng)該在繼成的類(lèi)中
             因?yàn)槲覠o(wú)看見(jiàn)

            8.WindowGl這個(gè)類(lèi)繼成Window這個(gè)類(lèi)
             內(nèi)有一個(gè)ContextGl實(shí)例類(lèi) 還有3個(gè)方法initGl,makeCurrentGl,swapBuffersGl
             三個(gè)方法基本上就是ContextGl的方法 看來(lái)就真的是這樣的GL布局的Windows
             
             
            9.好 看window這個(gè)類(lèi) 基本上這個(gè)才真正的是一個(gè)window窗口了
             看看先 成員有好多 先看私有成員
              1.一個(gè)map 包窗口句柄與窗口指針 具體作用暫時(shí)不知道 應(yīng)該保存東西 就保存窗口的 的吧
              2.成員里有好多標(biāo)志的東西 還有好多屬性的東西 都是窗口的 關(guān)于大小 長(zhǎng)寬 全屏 句柄 設(shè)備DC
             好 看成員函數(shù)
              1.好多get set 應(yīng)該是成員屬性多吧
              2.重要的createWindow
                  registerWindow
                  LRESULT CALLBACK Window::eventRouter
                  Window::handleEvent
                   
              3.看得出像普通窗口一樣就設(shè)置回調(diào)消息函數(shù)
             OK 這個(gè)類(lèi)無(wú)繼成什么東西了 應(yīng)該是根的了
             
             
            10.看那個(gè)program吧


            -----------------可耕地可耕地枯無(wú)可奈何花落去 可耕地--------------

            11.Program竟然無(wú)繼成什么東西喔 用的是內(nèi)插的方法
              比較重要的 ProgramState *programState;
                    PerformanceTimer fpsTimer;
                    WindowGl *window;
                   
              成員函數(shù)有 1. initNormal(WindowGl *window);
                      initServer(WindowGl *window);
                       initClient(WindowGl *window, const Ip &serverIp);
                      
                    2.mouse key 的處理
                    3.init,loop,setState,setDisplaySettings
                    
            12.看那個(gè)initNormal吧
             void Program::initNormal(WindowGl *window){
             init(window);
             setState(new Intro(this));
            }

            13.好 看那個(gè)init(window)吧 我考 這么的長(zhǎng) 真長(zhǎng)呀 長(zhǎng)呀

            void Program::init(WindowGl *window){
             //最基本的要設(shè)置 的 窗口與配置啦
             this->window= window;
             Config &config= Config::getInstance();
             
               //set video mode設(shè)置顯示的模式
             setDisplaySettings();

             //window窗口的創(chuàng)建也是在這里的 暈死 程序走向也太那個(gè)了吧
             window->setText("Glest");
             window->setStyle(config.getBool("Windowed")? wsWindowedFixed: wsFullscreen);
             window->setPos(0, 0);
             window->setSize(config.getInt("ScreenWidth"), config.getInt("ScreenHeight"));
             window->create();
              
             //timers 時(shí)間的東西
             fpsTimer.init(1, maxTimes);
             updateTimer.init(GameConstants::updateFps, maxTimes);
             updateCameraTimer.init(GameConstants::cameraFps, maxTimes);

               //log start 日志的東西
             Logger &logger= Logger::getInstance();
             logger.setFile("glest.log");
             logger.clear();

             //lang 語(yǔ)言吧這里是語(yǔ)言吧
             Lang &lang= Lang::getInstance();
             lang.load("data/lang/"+ config.getString("Lang"));
               
             //render 渲染器的東西
             Renderer &renderer= Renderer::getInstance();

             window->initGl(config.getInt("ColorBits"), config.getInt("DepthBits"), config.getInt("StencilBits"));
             window->makeCurrentGl();
              
             //coreData, needs renderer, but must load before renderer init這時(shí)得到游戲的核心數(shù)據(jù)data
             CoreData &coreData= CoreData::getInstance();
                coreData.load();

             //init renderer (load global textures)OK這里渲染 是吧 應(yīng)該
             renderer.init();

             //sound 這里是聲音吧
             SoundRenderer &soundRenderer= SoundRenderer::getInstance();
             soundRenderer.init(window);
            }

            14.看那個(gè)setState吧 無(wú)意思 不解析
            void Program::setState(ProgramState *programState){
             
             delete this->programState;
             
             this->programState= programState;
             programState->load();
             programState->init();

             updateTimer.reset();
             updateCameraTimer.reset();
             fpsTimer.reset();
            }

            15.看這個(gè) 竟然有個(gè)MainMenu的東西 應(yīng)該是菜單的 不敢確定
            void Program::initClient(WindowGl *window, const Ip &serverIp){
             MainMenu* mainMenu= NULL;
             
             init(window);
             mainMenu= new MainMenu(this);
             setState(mainMenu);
             mainMenu->setState(new MenuStateJoinGame(this, mainMenu, true, serverIp));
            }

            16.看這個(gè) 嗯 loop吧 在這里 程序也基本上出來(lái)了 不也就是這樣的
            void Program::loop(){

             //render
             programState->render();

             //update camera
             while(updateCameraTimer.isTime()){
              programState->updateCamera();
             }

             //update world
             while(updateTimer.isTime()){
              GraphicComponent::update();
              programState->update();
              SoundRenderer::getInstance().update();
              NetworkManager::getInstance().update();
             }
             
             //fps timer
             while(fpsTimer.isTime()){
              programState->tick();
             }
            }

            ---------------------小結(jié)-----------------------
            看來(lái)全在program中調(diào)用成員來(lái)做 辛苦 窗口也放在了程序里了
            嗯 應(yīng)該就可以看其他的子模塊了 main好似已經(jīng)被我拆解了
            --------------------------------------------


            17.ProgramState 這個(gè)比較關(guān)鍵喔 是狀態(tài) 從字面上來(lái)理解 應(yīng)該要看看
            ProgramState竟然放了一個(gè)放一個(gè)program指針后 全是虛擬成員函數(shù) 看來(lái)是一個(gè)標(biāo)準(zhǔn)的東西

            18.看來(lái)main還未被我拆解喔

            19.那么我繼續(xù)
            這個(gè)是設(shè)置那個(gè)state的 好明顯是交給了programstate了
            void Program::setState(ProgramState *programState){
             
             delete this->programState;
             
             this->programState= programState;
             programState->load();
             programState->init();

             updateTimer.reset();
             updateCameraTimer.reset();
             fpsTimer.reset();
            }

            很有可能走去了這里 不過(guò)我還不清楚
            void Game::load(){
             Logger::getInstance().setState(Lang::getInstance().get("Loading"));
             
             //tileset
                world.loadTileset(gameSettings.getTilesetPath(), &checksum);

                //tech, load before map because of resources
                world.loadTech(gameSettings.getTechPath(), &checksum);

                //map
                world.loadMap(gameSettings.getMapPath(), &checksum);
            }

            20.暫時(shí)設(shè)置那個(gè)mian架構(gòu)是建立在那個(gè)嗯 之上的
            在一個(gè)state之下 有一些繼成 然后在繼成里做一些東西 再交給指定的工人做乜

             


            --------------我是不知道做什么的分割線-------------

            21.好吧 這個(gè)就當(dāng)是一個(gè)main的cpp吧


            2008/9/11 20:36:18
             

            posted @ 2008-09-20 08:57 DK_jims 閱讀(984) | 評(píng)論 (1)編輯 收藏

            僅列出標(biāo)題
            共6頁(yè): 1 2 3 4 5 6 
            蜜臀av性久久久久蜜臀aⅴ麻豆| 久久人人爽人人澡人人高潮AV| 日本WV一本一道久久香蕉| 精品久久久久久久国产潘金莲 | 97久久精品午夜一区二区| 久久99国产亚洲高清观看首页| 国产成人99久久亚洲综合精品| 亚洲国产成人精品女人久久久 | 色欲av伊人久久大香线蕉影院| 久久人爽人人爽人人片AV| 大香网伊人久久综合网2020| 久久这里的只有是精品23| 久久精品无码一区二区无码| 久久久久九国产精品| 久久婷婷五月综合色高清| 久久久久久无码国产精品中文字幕| 伊人久久大香线蕉综合影院首页| 国产精品成人久久久久三级午夜电影| 日韩中文久久| 久久99精品久久久久久秒播| 久久国产欧美日韩精品| 女同久久| 亚洲国产精品狼友中文久久久| 奇米综合四色77777久久| 午夜精品久久久久9999高清| 国产精品久久免费| 亚洲国产另类久久久精品黑人| 午夜视频久久久久一区| 久久播电影网| 久久av免费天堂小草播放| 亚洲伊人久久大香线蕉苏妲己| www久久久天天com| 无码伊人66久久大杳蕉网站谷歌| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 亚洲午夜久久久影院| 思思久久99热只有频精品66| 久久午夜综合久久| 亚洲欧美国产日韩综合久久| 天堂无码久久综合东京热| 亚洲人成无码久久电影网站| 一级a性色生活片久久无|