本意还是想了解DirectX的,由于网上拿不到书的pdf文档,幸好有作者的源代码示例,想完整的看一下,基本的游戏需要的点.

下面直接以代码为例,仅用于帮助自身理解

http://www.programming2dgames.com/chapter2.htm

示例一:Hello World

创建了一个标准的Win32消息循环程序示例

示例二:Character Input

介绍了键盘输入消息WM_CHAR

        case WM_CHAR:               // a character was entered by the keyboard
switch (wParam) // the character is in wParam
{
case 0x08: // backspace
case 0x09: // tab
case 0x0A: // linefeed
case 0x0D: // carriage return
case 0x1B: // escape
MessageBeep((UINT) -1); // beep but do not display
return 0;
default: // displayable character
ch = (TCHAR) wParam; // get the character
InvalidateRect(hwnd, NULL, TRUE); // force WM_PAINT
return 0;
}

示例三:Keys Down

介绍了键盘消息

        case WM_KEYDOWN:                                // key down
vkKeys[wParam] = true;
switch(wParam)
{
case VK_SHIFT: // shift key
nVirtKey = GetKeyState(VK_LSHIFT); // get state of left shift
if (nVirtKey & SHIFTED) // if left shift
vkKeys[VK_LSHIFT] = true;
nVirtKey = GetKeyState(VK_RSHIFT); // get state of right shift
if (nVirtKey & SHIFTED) // if right shift
vkKeys[VK_RSHIFT] = true;
break;
case VK_CONTROL: // control key
nVirtKey = GetKeyState(VK_LCONTROL);
if (nVirtKey & SHIFTED) // if left control
vkKeys[VK_LCONTROL] = true;
nVirtKey = GetKeyState(VK_RCONTROL);
if (nVirtKey & SHIFTED) // if right control
vkKeys[VK_RCONTROL] = true;
break;
}
InvalidateRect(hwnd, NULL, TRUE); // force WM_PAINT
return 0;
break;

示例四:Prevent Multiple

使用Mutex实现单实例

bool AnotherInstance()
{
HANDLE ourMutex; // Attempt to create a mutex using our unique string
ourMutex = CreateMutex(NULL, true, "Use_a_different_string_here_for_each_program_48161-XYZZY"); if (GetLastError() == ERROR_ALREADY_EXISTS)
return true; // another instance was found return false; // we are the only instance
}

Programming 2D Games 读书笔记(第二章)的更多相关文章

  1. Programming 2D Games 读书笔记(第四章)

      示例一:Game Engine Part 1 更加完善游戏的基本流程 Graphics添加了以下几个方法,beginScene和endScene提高绘图,showBackbuffer去掉了clea ...

  2. Programming 2D Games 读书笔记(第六章)

      http://www.programming2dgames.com/chapter6.htm 示例一:Bounce 边界碰撞测试 velocity为移动的速度, 超过右边界,velocity.x为 ...

  3. Programming 2D Games 读书笔记(第五章)

      http://www.programming2dgames.com/chapter5.htm 示例一:Planet 真正示例的开始,首先是载入2张图片 1.Graphics添加了2个方法 load ...

  4. Programming 2D Games 读书笔记(第三章)

      示例一:DirectX Window Graphics类用于初始化Direct 3D 主流程: 仅需要粗体部分 try{ // Create Graphics object graphics = ...

  5. STL源码分析读书笔记--第二章--空间配置器(allocator)

    声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...

  6. Getting Started With Hazelcast 读书笔记(第二章、第三章)

    第二章 起步 本章就相当简单粗暴了,用一个个例子说明hazelcast怎么用. 1.map,set,list这些集合类都是开箱即用的,只要从Hazelcast的实例中获取一份就行. 2.增加了Mult ...

  7. Java Concurrency in Practice 读书笔记 第二章

    第二章的思维导图(代码迟点补上):

  8. Spring 3.x 实践 第一个例子(Spring 3.x 企业应用开发实战读书笔记第二章)

    前言:工作之后一直在搞android,现在需要更多和后台的人员交涉,技术栈不一样,难免鸡同鸭讲,所以稍稍学习下. 这个例子取自于<Spring 3.x 企业应用开发实战>一书中的第二章,I ...

  9. javascript 数据结构和算法读书笔记 > 第二章 数组

    这章主要讲解了数组的工作原理和其适用场景. 定义: 一个存储元素的线性集合,元素可以通过索引来任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量. javascript数组的特殊之处: jav ...

随机推荐

  1. E1. Array and Segments (Easy version)(暴力) && E2. Array and Segments (Hard version)(线段树维护)

    题目链接: E1:http://codeforces.com/contest/1108/problem/E1 E2:http://codeforces.com/contest/1108/problem ...

  2. TCP/UDP区别&&心跳包机制【转】

    转自:https://www.jianshu.com/p/6d93a3c21c34 UDP:用户数据报协议:主要用在实时性要求比较高的以及对质量相对较弱的地方.但是面对现在高质量的线路不会容易丢包,除 ...

  3. [转]mitmproxy套件使用攻略及定制化开发

    mitmproxy是一款支持HTTP(S)的中间人代理工具.不同于Fiddler2,burpsuite等类似功能工具,mitmproxy可在终端下运行.mitmproxy使用Python开发,是辅助w ...

  4. 【译】ASP.NET Identity Core 从零开始

    原文出自Rui Figueiredo的博客,原文链接<ASP.NET Identity Core From Scratch> 译者注:这篇博文发布时正值Asp.Net Core 1.1 时 ...

  5. google地图的url参数

    Google Maps Intents for Android The Google Maps app for Android exposes several intents that you can ...

  6. node.js express开发web问题

    1.新建的layout.ejs,在里面使用了<%= title %>,但是在运行时提示title is not defined. 将title改为<%= locals.title % ...

  7. Error updating database. Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String异常处理

    问题原因:Mybatis中对于时间参数进行比较时的一个BUG. 如果拿传入的时间类型参数与空字符串‘‘进行对比判断则会引发异常.,所以应该去掉该判断, 只保留非空判断就正常了 <if test= ...

  8. 【最简单的方法】js判断字符串是否为JSON格式(20180115更新)

    前言 针对 “js判断字符串是否为JSON格式” 这个问题,在网上查了许多资料,都没找到自己想要的答案. 但是看到这个帖子<js判断字符串是否为JSON格式>后,突然灵光一闪,想到一种很简 ...

  9. P1270 【“访问”美术馆】

    $\large{\text{一千个Oier程序中有一千种树形DP}}$ 思路都差不多的,但是每个人都有自己的状态定义与转移 不妨定义$dp[i][j]$表示,在$i$子树内,偷$j$张画,且不考虑根到 ...

  10. 【OpenCV for Android】Android Studio JNI和NDK配置及采坑记录

    在配置好Android studio的OpenCV环境后,我们就可以通过Java代码调用OpenCV的API了,但是在通常情况下,用Java代码编写图像处理算法的运行效率是没有C++代码高的,在应用层 ...