SDL入门教程第5章.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SDL入门教程第5章

接下來呼叫 CMySDLApp 的成員函式 SetScreen(),譬如: int main( int argc, char* argv[] ) { CMySDLApp myApp; myApp.InitializeSDL(); myApp.SetScreen(); // 其他項目 } SetScreen() 將選擇 640x480 的視窗為螢幕物件。你可以用以下的方式將螢幕設成 1024x768 的視窗: myApp.SetScreen(new CScreen(1024,768,0, SDL_SWSURFACE | SDL_ANYFORMAT)); CScreen 建構函式的宣告如下: CScreen::CScreen (int width, int height, int bpp, Uint32 flags); 其中的參數意義和 SDL_SetVideoMode() 相同。 最後呼叫 CMySDLApp 的成員函式 Run(),譬如: int main( int argc, char* argv[] ) { CMySDLApp myApp; myApp.InitializeSDL(); myApp.SetScreen(); // 其他項目 myApp.Run(); return EXIT_SUCCESS; } 範例: 加入事件的處理 (oosdl07.cpp) class CMySDLApp : public CSDLApp { protected: virtual bool InitializeApp (); virtual bool AppMain (); // Events virtual void OnKeyDown (const SDL_keysym keysym); virtual void OnKeyUp (const SDL_keysym keysym); private: CSurface background, ball; int ball_x, ball_y; int ball_xvel, ball_yvel; int ball_speed, ball_speed_inc; }; bool CMySDLApp::InitializeApp () { background.LoadImage(bg.png); ball.LoadImage(ball.png); ball.SetColorKey(0, 0, 0); ball_x = (SCREEN_WIDTH - BALL_WIDTH) /2; ball_y = (SCREEN_HEIGHT - BALL_HEIGHT) /2; ball_xvel = 0; ball_yvel = 0; ball_speed = 1; ball_speed_inc = 0; background.Show(0, 0); ball.Show(ball_x, ball_y); return true; } inline void restrict (int x, int min, int max) { if (x min) x = min; else if (x max) x = max; } bool CMySDLApp::AppMain () { if (ball_speed_inc != 0) { ball_speed += ball_speed_inc; if (ball_speed 1) ball_speed = 1; } if (ball_xvel != 0 || ball_yvel !=0) { int x_old = ball_x, y_old = ball_y; ball_x += ball_xvel; ball_y += ball_yvel; restrict(ball_x, 0, SCREEN_WIDTH - BALL_WIDTH); restrict(ball_y, 0, SCREEN_HEIGHT - BALL_HEIGHT); if (ball_x != x_old || ball_y != y_old) { background.Show(0, 0); ball.Show(ball_x, ball_y); } } return true; } void CMySDLApp::OnKeyDown (const SDL_keysym keysym) { switch (keysym.sym) { case SDLK_UP: ball_yvel = -ball_speed;

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档