设为首页 加入收藏

TOP

Win32 SDK 打砖块游戏(一)
2013-02-08 14:31:29 】 浏览:2533
Tags:Win32  SDK  砖块 游戏

  前一阵子学习Win32 SDK 时自己写过一个拼图游戏作为练习,基本功能是都完成了,但到后来随着代码量的增多,代码的组织上有点混乱。考虑到是第一次独立用Win32 SDK编写程序,就先放过了。但总觉的不爽。

  最近看到一本名为《Windows 游戏编程(www.cppentry.com)大师技巧》的牛书,看到第一章打砖块的示例,欲效仿其组织代码的技巧,故将其源代码分拆成容易理解的若干部分,修改抄录于下,供他日重读或供无缘见到此书者查阅。

  程序版权归原作者所有,吾仅是学习模仿,不敢掠美。

  但源程序使用到了DirectX SDK,由于暂时不想涉及D3D,故改为用Win32 API 绘图。当然以后有空,或会学习一下DirectX SDK~

  我们需要的是下面几个功能:

  1)切换至任意图像模式

  2)在屏幕上绘制各种颜色的矩形

  3)获取键盘输入

  4)使用一些定时函数同步游戏循环

  5)在屏幕上画彩色字符串

  1. 程序主框架(原程序为全屏隐藏鼠标,为调试简单,暂时改为非全屏不隐藏鼠标)

  [cpp]

  /*

  * FreakOut.cpp (改编自《Windows 游戏编程(www.cppentry.com)大师技巧》第一章示例程序)

  * 2012-11-29

  */

  /* INCLUDES *****************************************************************************/

  #include <windows.h>

  /* DEFINES ******************************************************************************/

  // defines for windows

  #define WINDOW_CLASS_NAME   TEXT("WIN32CLASS")

  #define WINDOW_WIDTH        640

  #define WINDOW_HEIGHT       480

  // states for game loop

  #define GAME_STATE_INIT         0

  #define GAME_STATE_START_LEVEL  1

  #define GAME_STATE_RUN          2

  #define GAME_STATE_SHUTDOWN     3

  #define GAME_STATE_EXIT         4

  /* GLOBALS *******************************************************************************/

  HWND        main_window_handle  = NULL;             // save the window handle

  HINSTANCE   main_instance       = NULL;             // save the instance

  int         game_state          = GAME_STATE_INIT;  // starting state

  /* WINDPROC ******************************************************************************/

  LRESULT CALLBACK WindowProc(HWND    hwnd,

  UINT    msg,

  WPARAM  wparam,

  LPARAM  lparam)

  {

  // this is the main message handler of the system

  PAINTSTRUCT ps;

  HDC         hdc;

  switch (msg)

  {

  case WM_CREATE:

  {

  return 0;

  }

  case WM_PAINT:

  {

  hdc = BeginPaint(hwnd, &ps);

  EndPaint(hwnd, &ps);

  return 0;

  }

  case WM_DESTROY:

  {

  PostQuitMessage(0);

  return 0;

  }

  default:

  break;

  }

  return DefWindowProc(hwnd, msg, wparam, lparam);

  }

  

       

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇显示非模式对话框实例 下一篇将integer的bit位翻转

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目