青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 96  文章 - 255  trackbacks - 0
<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

E-mail:zbln426@163.com QQ:85132383 長(zhǎng)期尋找對(duì)戰(zhàn)略游戲感興趣的合作伙伴。

常用鏈接

留言簿(21)

隨筆分類

隨筆檔案

SDL相關(guān)網(wǎng)站

我的個(gè)人網(wǎng)頁(yè)

我的小游戲

資源下載

搜索

  •  

積分與排名

  • 積分 - 494450
  • 排名 - 39

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

作者:龍飛

        SDL創(chuàng)建多線程的函數(shù)SDL_CreateThread()所調(diào)用的是函數(shù)指針,這意味著我們不可以傳入(非靜態(tài))成員函數(shù)的指針。關(guān)于兩種函數(shù)指針我們之前已經(jīng)討論過(guò):函數(shù)指針與成員函數(shù)指針,我們可以有兩種方法能讓具有普通函數(shù)指針(函數(shù)指針以及靜態(tài)成員函數(shù)指針)的函數(shù)調(diào)用類的私有成員,一是友元函數(shù),另外就是靜態(tài)成員函數(shù)。而能夠受到類私有保護(hù)的,只有靜態(tài)成員函數(shù)。所以,我們可以通過(guò)靜態(tài)成員函數(shù)調(diào)用一個(gè)對(duì)象數(shù)據(jù)的形式,實(shí)現(xiàn)對(duì)于創(chuàng)建多線程函數(shù)的封裝。
        另外,我們希望測(cè)試在主線程中讀寫線程數(shù)據(jù)的效果,所以添加了兩個(gè)方法show() 和reset(),多線程演示的類源代碼如下:
#include <iostream>
#include 
"SurfaceClass.hpp"

class AmnArg
{
private:
    
int beginX;
    
int beginY;
    
int endX;
    
int endY;
    
const ScreenSurface& screen;
    
//
    static int amn(void* pThat);
public:
    AmnArg(
int begin_x, int begin_y, int end_x, int end_y, const ScreenSurface& _screen);
    SDL_Thread
* createThrd();
    
void show() const;
    
void reset();
};
其中SurfaceClass.hpp請(qǐng)參考:
http://m.shnenglu.com/lf426/archive/2008/04/14/47038.html
實(shí)現(xiàn)函數(shù)如下:
#include "amn.hpp"

AmnArg::AmnArg(
int begin_x, int begin_y, int end_x, int end_y, const ScreenSurface& _screen):
beginX(begin_x), beginY(begin_y), endX(end_x), endY(end_y), screen(_screen)
{}

SDL_Thread
* AmnArg::createThrd()
{
    
return SDL_CreateThread(amn, (void*)this);
}

void AmnArg::show() const
{
    std::cout 
<< "Now x at: " << beginX << std::endl;
}

void AmnArg::reset()
{
    beginX 
= 0;
}

int AmnArg::amn(void* pThat)
{
    AmnArg
* pData = (AmnArg*)pThat;
    PictureSurface stand(
"./images/am01.png", pData->screen);
    stand.colorKey();
    PictureSurface bg(
"./images/background.png", pData->screen);

    
const int SPEED_CTRL = 300;
    
int speedX = (pData->endX - pData->beginX) / SPEED_CTRL;
    
int speedY = (pData->endY - pData->beginY) / SPEED_CTRL;

    
for ( int i = 0; i < SPEED_CTRL; i++ ){
        pData
->beginX += speedX;
        pData
->beginY += speedY;
        bg.blit(pData
->beginX, pData->beginY, pData->beginX, pData->beginY, stand.point()->w, stand.point()->h, 22);
        stand.blit(pData
->beginX, pData->beginY);
        pData
->screen.flip();
        SDL_Delay(
10);
    }

    
return 0;
}
最后,我們修改了主演示程序,并測(cè)試了show()和reset()的效果。我們可以看到,直接修改線程數(shù)據(jù)的reset()的結(jié)果也是不可預(yù)知的,所以,我們似乎更應(yīng)該通過(guò)改變線程“流”的效果,而不是直接對(duì)數(shù)據(jù)進(jìn)行修改。這個(gè)我們以后再討論了。
#include "SurfaceClass.hpp"
#include 
"amn.hpp"

int game(int argc ,char* argv[]);
int main(int argc ,char* argv[])
{
    
int mainRtn = 0;
    
try {
        mainRtn 
= game(argc, argv);
    }
    
catch ( const ErrorInfo& info ) {
        info.show();
        
return -1;
    }
    
catch ( const char* s ) {
        std::cerr 
<< s << std::endl;
        
return -1;
    }
    
    
return mainRtn;
}

int game(int argc ,char* argv[])
{
    
//Create a SDL screen.
    const int SCREEN_WIDTH = 640;
    
const int SCREEN_HEIGHT = 480;
    
const Uint32 SCREEN_FLAGS = 0//SDL_FULLSCREEN | SDL_DOUBLEBUF | SDL_HWSURFACE
    const std::string WINDOW_NAME = "Amn Test";
    ScreenSurface screen(SCREEN_WIDTH, SCREEN_HEIGHT, WINDOW_NAME, 
0, SCREEN_FLAGS);

    PictureSurface bg(
"./images/background.png", screen);
    bg.blit(
0);
    screen.flip();

    AmnArg test1(
0250600250, screen);
    SDL_Thread
* thread1 = test1.createThrd();
    
    AmnArg test2(
004000, screen);
    SDL_Thread
* thread2 = test2.createThrd();

    SDL_Event gameEvent;
    
bool gameOver = false;
    
while ( gameOver == false ){
        
while ( SDL_PollEvent(&gameEvent) != 0 ){
            
if ( gameEvent.type == SDL_QUIT ){
                gameOver 
= true;
            }
            
if ( gameEvent.type == SDL_KEYDOWN ){
                
if ( gameEvent.key.keysym.sym == SDLK_ESCAPE ){
                    gameOver 
= true;
                }
                
if ( gameEvent.key.keysym.sym == SDLK_SPACE ){
                    test1.show();
                    test2.show();
                }
            }
            screen.flip();
        }
        SDL_Delay(
100);
    }

    SDL_KillThread(thread1);
    SDL_KillThread(thread2);

    
return 0;
}
posted on 2008-04-28 14:24 lf426 閱讀(2966) 評(píng)論(2)  編輯 收藏 引用 所屬分類: SDL入門教程

FeedBack:
# re: SDL入門教程(十三):3、封裝多線程  2008-05-01 14:28 func
完成之后,就出一份pdf文檔吧 :)  回復(fù)  更多評(píng)論
  
# re: SDL入門教程(十三):3、封裝多線程 [未登錄] 2008-05-01 21:32 lf426
恩,謝謝支持。任重而道遠(yuǎn)啊……  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              欧美日韩精品一区二区天天拍小说 | 久久久亚洲影院你懂的| 国产在线观看91精品一区| 欧美在线播放| 亚洲图中文字幕| 夜夜爽www精品| 亚洲免费观看在线观看| 久久综合电影| 巨乳诱惑日韩免费av| 久久久青草婷婷精品综合日韩| 欧美一区二区三区在线播放| 亚洲永久免费视频| 亚洲一区二区三区精品视频| 亚洲作爱视频| 一本色道久久综合亚洲91| 午夜一级久久| 欧美三级视频| 欧美久久久久免费| 欧美精品二区三区四区免费看视频| 久久亚洲精选| 久久在线精品| 欧美精品一级| 久久久之久亚州精品露出| 久久久久久9999| 免费国产自线拍一欧美视频| 欧美华人在线视频| 欧美精品激情在线观看| 欧美另类人妖| 国产精品欧美久久久久无广告| 欧美日韩一区自拍| 午夜精品在线看| 亚洲欧美中文在线视频| 久久精品人人做人人爽电影蜜月| 久久久久国色av免费看影院| 久久免费一区| 日韩视频在线观看国产| 亚洲女女女同性video| 久久久国产视频91| 欧美国产视频一区二区| 国产精品嫩草99a| 国产一区二区三区四区三区四| 欧美日韩福利| 国产欧美精品国产国产专区| 在线 亚洲欧美在线综合一区| 亚洲精品男同| 一区二区三区日韩欧美| 黄色日韩网站| 国产视频丨精品|在线观看| 亚洲国产精品久久| 欧美一二区视频| 制服诱惑一区二区| 欧美理论电影网| 亚洲美女91| 亚洲激情图片小说视频| 久久久国产精品一区二区中文 | 欧美特黄一级大片| 亚洲毛片在线| 亚洲国产你懂的| 免费人成网站在线观看欧美高清| 国产在线欧美| 欧美日韩八区| 99国产精品私拍| 亚洲欧洲综合另类在线| 久久久久久久波多野高潮日日| 国产精品美女999| 亚洲欧美日韩综合| 亚洲一级电影| 国产欧美一区二区三区久久| 欧美一区二区高清在线观看| 亚洲一区二区在线| 欧美承认网站| 亚洲国产精品久久人人爱蜜臀| 久久免费99精品久久久久久| 亚洲风情在线资源站| 欧美激情第一页xxx| 欧美电影在线观看完整版| 亚洲精品中文字幕在线观看| 亚洲人人精品| 国产精品久久久久久久久免费 | 91久久久久久久久久久久久| 亚洲成色www8888| 亚洲精品一级| 欧美视频在线免费| 欧美一区二区精美| 久久精品免费电影| 亚洲日本中文字幕区| 亚洲精品国产精品国自产观看浪潮| 欧美日韩理论| 久久精品免费播放| 欧美.日韩.国产.一区.二区| 亚洲手机在线| 欧美一区二区三区视频免费播放| 伊人久久大香线蕉av超碰演员| 最新国产乱人伦偷精品免费网站| 欧美日韩一级片在线观看| 性欧美暴力猛交另类hd| 久久久青草婷婷精品综合日韩| 亚洲伦理中文字幕| 亚洲欧美成人精品| 91久久久精品| 欧美一区二区在线免费观看| 亚洲国产精品va在线看黑人| 亚洲手机在线| 亚洲国产一区在线观看| 亚洲欧美中日韩| 亚洲六月丁香色婷婷综合久久| 亚洲一区二区综合| 亚洲精选视频免费看| 久久国产高清| 亚洲一区二区三区视频| 久久婷婷国产综合国色天香| 亚洲欧美日韩精品久久亚洲区 | 欧美一进一出视频| 欧美久久久久久久久| 美女国产一区| 国内精品久久久| 国产精品99久久久久久久女警| 亚洲国产精品成人久久综合一区| 亚洲专区在线| 亚洲午夜一二三区视频| 欧美国产亚洲另类动漫| 美女诱惑一区| 一区二区三区在线观看欧美| 亚洲在线观看视频网站| 欧美风情在线观看| 国产欧美精品一区二区三区介绍| 亚洲国产美女久久久久| 精品999在线播放| 亚洲自拍偷拍福利| 亚洲自拍三区| 国产精品超碰97尤物18| 亚洲裸体在线观看| 亚洲激情在线观看视频免费| 久久久999精品| 久久一区二区三区超碰国产精品| 国产精品入口尤物| 亚洲一区精品在线| 欧美一区二区免费观在线| 国产精品日韩一区二区| 夜夜爽av福利精品导航| 亚洲深夜福利网站| 欧美午夜免费影院| 亚洲香蕉在线观看| 午夜精品久久久久久久久| 国产精品啊v在线| 亚洲一区图片| 久久精品一区二区三区四区 | 欧美夜福利tv在线| 久久精品噜噜噜成人av农村| 黄色一区二区在线| 久久久久久一区| 欧美激情视频网站| 日韩视频在线一区二区| 欧美日韩国产va另类| 一本久道综合久久精品| 亚洲欧美日韩网| 国内精品久久久久久久影视蜜臀| 久久精品国产精品 | 国产精品久久久久一区二区| 亚洲视频一区二区| 久久av最新网址| 久久gogo国模裸体人体| 久久久久久综合| 亚洲福利视频一区二区| 欧美激情日韩| 亚洲欧美资源在线| 男人的天堂亚洲| 亚洲调教视频在线观看| 国产女主播一区| 久久综合狠狠| 9l视频自拍蝌蚪9l视频成人 | 日韩亚洲在线观看| 久久久久成人精品| 中文日韩欧美| 国内精品美女在线观看| 欧美夫妇交换俱乐部在线观看| 亚洲制服少妇| 亚洲国产日韩欧美在线动漫| 午夜激情综合网| 亚洲人成网站影音先锋播放| 国产精品久在线观看| 久久综合精品国产一区二区三区| 日韩视频一区二区三区在线播放免费观看 | 国产精品爽黄69| 香蕉av777xxx色综合一区| 亚洲第一成人在线| 久久精品国产77777蜜臀| 亚洲精品视频在线| 国产一区二区三区黄视频| 欧美视频一区在线| 模特精品在线| 久久gogo国模裸体人体| 亚洲视频在线观看| 亚洲国产一区在线观看| 久久一区视频| 欧美一区国产二区| 亚洲伊人伊色伊影伊综合网| 亚洲日本一区二区三区| 黄色成人在线观看| 国产亚洲一区二区三区在线观看|