??xml version="1.0" encoding="utf-8" standalone="yes"?>久久亚洲精品视频,精品久久久无码中文字幕天天,人妻无码αv中文字幕久久琪琪布http://www.shnenglu.com/Geek/category/12671.html/*c/c++ 法 |络 游戏~程*/ /*coding无难事,只怕有心h*/zh-cnThu, 10 Jun 2010 08:14:34 GMTThu, 10 Jun 2010 08:14:34 GMT60C++复习Q一Q?/title><link>http://www.shnenglu.com/Geek/archive/2010/06/09/117504.html</link><dc:creator>Geek.tan</dc:creator><author>Geek.tan</author><pubDate>Wed, 09 Jun 2010 14:25:00 GMT</pubDate><guid>http://www.shnenglu.com/Geek/archive/2010/06/09/117504.html</guid><wfw:comment>http://www.shnenglu.com/Geek/comments/117504.html</wfw:comment><comments>http://www.shnenglu.com/Geek/archive/2010/06/09/117504.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Geek/comments/commentRss/117504.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Geek/services/trackbacks/117504.html</trackback:ping><description><![CDATA[<p>1。C++提供了用关键字enumQstructQunion和class建立用户自定义数据类型。和c一Pc++中的枚D也用关键字enum声明Q但是,与c不同的是Qc++声明的枚举是一U新的数据类型?br>      Ex·  <br>   <img style="display: none;" id="Code_Closed_Image_326801" onclick="this.style.display='none'; document.getelementbyid('code_closed_text_326801').style.display="'none';" document.getelementbyid('code_open_image_326801').style.display="'inline';" document.getelementbyid('code_open_text_326801').style.display="'inline';"" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img style="display: inline;" id="Code_Open_Image_326801" onclick="this.style.display='none'; document.getelementbyid('code_open_text_326801').style.display="'none';" getelementbyid('code_closed_image_326801').style.display="'inline';" getelementbyid('code_closed_text_326801').style.display="'inline';"" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11">         <span style="display: inline;" id="Code_Open_Text_326801"><span style="color: #0000ff;">enum</span> Boolean {FALSE,TRUE};<br><span style="color: #0000ff;">                   struct</span> Name<br>               {<br>                               <span style="color: #0000ff;">char</span> first [10];<br>                <span style="color: #0000ff;">char</span> last[10];<br>               };<br>                  union Number<br>                {<br>                               <span style="color: #0000ff;">int</span> i;<br>                               <font color="#0000ff">float </font> j;<br>                 };</span></p> <p><span style="display: inline;">      建立三种用户自定义数据类型,q三U自定义cd的标记名分别为BooleanQName和Number。可以用q些标记名声明变量?br>      Ex.<img id="Code_Closed_Image_69815" onclick="this.style.display='none'; document.getelementbyid('code_closed_text_69815').style.display="'none';" document.getelementbyid('code_open_image_69815').style.display="'inline';" document.getelementbyid('code_open_text_69815').style.display="'inline';"" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img style="display: none;" id="Code_Open_Image_69815" onclick="this.style.display='none'; document.getelementbyid('code_open_text_69815').style.display="'none';" getelementbyid('code_closed_image_69815').style.display="'inline';" getelementbyid('code_closed_text_69815').style.display="'inline';"" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><br>           <span style="display: none;" id="Code_Open_Text_69815">Boolean done=FALSEQ?br>           Name   studentQ?br>           Number xQ?/span></span></p> <p>2。如果C函数原型的圆括号中什么也没有Q编译器׃查参C不对参数个数和类型做M假定Q在调用该函数是Q给函数传递Q何参数编译器都不会报错?/p> <p>3。函数参数列表中用const限定W说明不能再函数中修改传递给函数的参数。const限定W还有一些其他用法。例如声明常量指针:<br>              <span style="color: #0000ff;">int</span> *<span style="color: #0000ff;">const</span> iPTR=&intger;<br>q条语句把iPtr声明为指向一个整数的帔R指针。iPtr所指向的值可以修改,但是不能把iPtr指向其他内存单元?br>             <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> *iPtr=&intgerQ?br>q条语句把iPtr声明为指向整数常量的指针。iPtr所引用的g能修改,但是可以吧iPtr指向其他内存单元?/p> <p>4。默认参数必L函数参数列表中的最双的参数?/p> <p>5。单目运符Q:Q)能够使程序访问与作用域内局部变量同名的全部变量?/p> <p>6。C++和C对函数名的处理方式不同,所以试图把C代码和C++代码q接Ӟ在C中编译的函数不能?br>C++识别。要通知~译器一个或多个已经在C中编译,像下面写出其函数原型Q?br><span style="color: #0000ff;">extern</span> “C” 函数原型   <span style="color: #008000;">//单个函数</span><br><br><span style="color: #0000ff;">extern</span> “C”<span style="color: #008000;">//多个函数</span><br>{<br>   函数原型<br>}<br>q些声明通知~译器指定的函数不在C++中编译,因此不对q接说明中列出的函数名编码。这些函数能够得到正的q接?br></p> <p><br> </p><img src ="http://www.shnenglu.com/Geek/aggbug/117504.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Geek/" target="_blank">Geek.tan</a> 2010-06-09 22:25 <a href="http://www.shnenglu.com/Geek/archive/2010/06/09/117504.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《WINDOWS 游戏~程大师技巧》学习笔?-windows~程模型结http://www.shnenglu.com/Geek/archive/2010/03/27/110661.htmlGeek.tanGeek.tanSat, 27 Mar 2010 02:24:00 GMThttp://www.shnenglu.com/Geek/archive/2010/03/27/110661.htmlhttp://www.shnenglu.com/Geek/comments/110661.htmlhttp://www.shnenglu.com/Geek/archive/2010/03/27/110661.html#Feedback0http://www.shnenglu.com/Geek/comments/commentRss/110661.htmlhttp://www.shnenglu.com/Geek/services/trackbacks/110661.html 

      “Windows~程像去见牙科ȝQ虽然明明知道最自己是有益处的,可还是没人喜ƢL扄包R?#8221;记得很早的时候,看了一下MFCQ还Ҏ不知道窗口啊Q按钮啊Q菜单啊Q现在读q一章才看到的Windows的真面目了?/p>

     1. 传说中的“匈牙利符可C法”Q早有耳闻此法Q但未曾一见啊Q最是头痛的属看帮助文的Q尤其是MSDN了,不过要想阅读Microsoft的一些代码,q真的懂此法呀?br>                                   
*  匈牙利符可C法前缀代码

前缀 数据cdQ基cdQ?/font>
c Char字符
by BYTE字节Q无W号字符Q?/td>
n Short短整数和整数Q表CZ个数Q?/td>
i int整数
xQy Short短整敎ͼ通常用于x和y坐标)
cxQcy short短整敎ͼ通常用于x和y的长度;c表示计数Q?/td>
b BOOLQ整敎ͼ
w UINTQ无W号敎ͼ和WORDQ无W号字)
l LONGQ长整数Q?/td>
dw DWORDQ无W号长整敎ͼ
fn 函数指针
s 字符?/td>
szQstr 以一个字节的0Q空|l止的字W串
lp 32位指?/td>
h ~号Q常用于表示Windows对象Q?/td>
msg 消息


*变量的命?/strong>

        变量的命名应用匈牙利W号表示法,变量可用上表中的前缀代码表示。另外,变量׃个或几个子名构成Ӟ每一个子名都要大写字母开头?br>             例如Q?nbsp;     char   *szFileName;   // a null terminated string
                                int      *lpiData;           //a 32-bit pointer to a int
                q有一点就是,全局变量以g_或g开头?/p>

*函数命名

        函数命名和变量命名规则相同,但是没有前缀。也是_只需要子名的W一个字母要大写?br>而且函数名中使用下划U是非法的。例如,下面的函数名表示是无效的匈牙利符可C法Q?br>                          int    Get_Pixel(int  ix,int  iy);

*cd和常量的命名

         所有的cd和常量都是大写的字母Q但名字中可以允怋用下划线?/p>

*cȝ命名

         所有c++的类必须使用大写的C为前~。类名字的每一个子名的W一个字母要大写?/p>

*参数的命?/strong>

            函数的参数命名和标准变量命名U定相同?/p>

    

2.怎样创徏一个完全实用的WindowsE序Q也是那个我们l常见面的那个窗口。你只需要下面几步:
             1.创徏一个WindowscR?br>             2.创徏一个事件句柄或WinProc?br>             3.用Windows注册WindowscR?br>             4.用前面创建的WindowscdZ个窗口?br>             5.创徏一个能够从事g句柄获得或向事g句柄传递Windows信息的主事g循环?/font>

       2.1 Windowsc?br>              “ Windows中的每一个窗口、控件、列表框、对话框和小部g{等实际上都是一个窗口。区别它们的是定义它们的类。一个Windowscd是Windows能够操作的一个窗口类型的描述?#8221;
               “控制WindowscM息的数据l构有两个:WNDCLASS和WNDCLASSEX。WNDCLASS是比较古老的一个,可能不久废弃,因此我们应当使用新的扩展版WNDCLASSEX?#8221;

   typedef  struct   _WNDCLASSEX
{
UNIT              cbsize;
UINT              style;
WNDPROC  lpfnWndProc;
int                   cbClsExtra;
int                   cbWndExtra;
HANDLE       hInstance;
HICON          hIcon;
HCURSON  hCoursor;
HBRUSH      hbrBackground;
LPCTSTR     lpszMenuName;
LPCTSTR     lpszClassName;
HICON           hIconSm;
}WNDCLASSEX;
        创徏一个这Ll构Q然后就是填写里面所有的成员变量QWNDCLASSEX  winclass;
   2.2事g句柄
q里所说的句柄Qexent handlerQ就是当事g发生时Windows从主事g循环调用的回?br>函数。对于创建的M一个Windowsc,都有一个独立的事g句柄Q我们称呼它为WinProcQ当用户
和Windowsq行dӞ你的H口?或其他的应用E序H口产生事g和消息。所有的消息都进入一
个队列,而你的窗口的消息发送你的窗口专用队列中。然后主事g循环索这些消息,q且它们发
送到你的H口的WinProc中来处理?/pre>
WinProc原型Q?br>  LRESULT CALLBACK WindowProc( 
HWND hWnd,
UINT
uMsg,
WPARAM
wParam,
LPARAM
lParam );
    2.3注册Windowsc?br>     Windowscdl定义ƈ且存攑֜Windsclass中,必须新的类通知Windows。该功能通过
RegisterClassEx()函数实现Q用一个指向新cd义的指针来实现。如下:
RegisterClassEx(&winclass);
    2.4创徏H口
创徏H口使用CreateWindow()或CreateWindowEx()函数?/pre>
    2.5M件@?br>       shijianxunhuan 

                         while(TRUE)
                      {
                              // test if there is a message in queue, if so get it
                             if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
                            {
                                   // test if this is a quit
                                   if (msg.message == WM_QUIT)
                                   break;
                                
                                // translate any accelerator keys
                                  TranslateMessage(&msg);
                               
                                // send the message to the window proc
                                DispatchMessage(&msg);
                            } // end if
                         
                          // main game processing goes here
                          Game_Main();
                   } // end while



Geek.tan 2010-03-27 10:24 发表评论
]]>《WINDOWS游戏~程大师技巧》学习笔?-学v无http://www.shnenglu.com/Geek/archive/2009/12/27/104165.htmlGeek.tanGeek.tanSat, 26 Dec 2009 17:21:00 GMThttp://www.shnenglu.com/Geek/archive/2009/12/27/104165.htmlhttp://www.shnenglu.com/Geek/comments/104165.htmlhttp://www.shnenglu.com/Geek/archive/2009/12/27/104165.html#Feedback6http://www.shnenglu.com/Geek/comments/commentRss/104165.htmlhttp://www.shnenglu.com/Geek/services/trackbacks/104165.html

l于{到在网上买?a >?/a>了,虽然q书时代有点老,但还是觉得还是有价|应该好好M读,仔细阅读当然是要做些W记啦?/p>

学习前的准备工作Q?br>    q本书的例子用的是VC++ 6.0+DirectX 7.0Q所以先得到|上下蝲DirectX 7.0 SDKQ?.0亦可Q,解压Q把Include 和lib 下的文g全部拯到Vc ++的对应目录下Q然后,我就试着~译了第一章的一个例子游?--打砖块的游戏Q发现连接不了外部文Ӟ无奈Q百度一下,原来q得对编译器做些工作Q在Project/Settings   /link     Object/library  d ddraw.lib dxguid.lib ?/p>

W一?学v无
    讲解游戏诞生的整个过E,Windows下面的游戏运行整个过E和游戏~程中的规范?br>   “ 一个简化游戏的l构Q第一步,初始?br>                                            W二步,q入游戏循环
                                            W三步:获得玩家的输入信?br>                                            W四步:执行人工和游戏逻辑
                                            W五步:渲染下一帧图?br>                                            W六步:同步昄
                                            W七步:循环
                                            W八步:关闭 ”
    啊哈原来一个游戏程序简单点是q样q行的,游戏也ƈ不是那么秘额?/p>

 另外的收获就是游戏编E一些规范和技巧:

        1.“你不应当在对q行旉或内存要求特别严格的代码D中式用高层API。特别是与游戏内循环有关的代码大多需要手工编写,否则游戏多半会遇C重的速度和性能的问题。当Ӟqƈ不一位着׃能信任DirectX{? APIQ因为DirectX的设计目的就是兼N性能?#8220;thin”原则。但通常来讲Q应当避免频J调用高层的函数?#8221;----q点是有点不太明白,作者是对API的性能不太信QQ还是另有原因,暂且攑֜q里Q等整体看完再研I之?/p>

       2.“不要x用全局变量?#8221;“׃参数要被压栈和出栈,执行q个函数体所需旉于调用函数所需的时_在这U情况下Q更好的Ҏ可以是设立一些全局变量Q然后再调用前进行赋g传递参?#8221;——时间是如此的重要!

       3.“使用内联函数”--呵呵Q这个上C++课时老师讲啦。虽然ɾ~译后的E序变大了,但却有效的提高运行速度?/p>

       4.“量使用32位的变量而不?位或16位变量?#8221;
      “struct   CPOINT
         { 
             short x,y;
             unsigned char c;
          } // end CPOINT”
          “注意Q定义这个结果看上去不错Q但实际q如此!首先Q结构本w是一?字节长的l构—?2*sizeof(short)+sizeof(char))=5 字节。这太糟了额Q由于没注意字节寚wQ内存寻址的时候会出大问题?#8221;——这点确实不知道Q标C?/p>

      5.“以类似RISC的方式来~程。换句话来说Q尽量简化你的代码,而不是是他更复杂?#8221;——以前一直想Q能一句完成,׃要写多几行,原来单句子,执行的更快?#8220;使用二进制移位运来q行乘数?的幂的简单整C法?#8221;

      6.“不要为简单的对象定义太多复杂的数据结构。链表结构很好用Q但q不意味着当你所需要的其实是大U有256个固定数l的时候,你也该用链?#8221;

      7.最后有一个小游戏Q但是我寚w面的撞法Q不太理解啊Q真是有炚w度啊?/p>


Geek.tan 2009-12-27 01:21 发表评论
]]>
þþþþþòҰ¸߳| 97þþƷ| ޹˾þۺ| þƵ| ˬݾþþۺ鶹| Ʒþþþþþþ| þ۲ӰԺѿҹɫ| þרƷ| þۺۺϾþúݺݺ97ɫ88| Բľþþþþ| þAV뾫Ʒ| ۺѾƷþþ| ޹Ʒһþhs| Ʒݾþþþø99 | vaþþþ| ƷþþþþӰԺ| þۺϹɫ88þþƷۺ | þþƷ˹ҹ| һŮȫƾþƬ| ݺݺɫۺϾþ| ŷһþþþþþôƬ| һձȾþۺ| ղƷþþһ| þô̫㽶av| ŷҹAŴƬþ| 99þùһ| ŷAŷaþ| þˬˬƬAV | Ʒþþþþ | þ㽶һëƬ| ƷŷþþӰ| vavavaþ| ޹Ʒľþþ| ˾þ111վ| Ʒþþ| þþþþþ99Ʒѹۿ| Ʒþþþ㽶| þþƷ9988| þùƷ͵99| ˳ɵӰվþ| ɫۺϾþ|