摘要:
alpha混合原理在前面介绍的示例程序中,绘制图形的颜色总是替换当前颜色缓冲区中存在的颜色,这样后面的物体总是覆盖在原有的物体上。但是当想要绘制类似于玻璃、水等具有透明效果的物体时,这种方法显然满足不了要求。通过定义一个表示物体半透明度的alpha值和一个半透明计算公式,可以将要绘制的物体颜色与颜色缓冲区中存在的颜色相混合,从而绘制出具有半透明效果的物体。Direct3D计算alpha颜色混合的方法如下:color = (RGBsrc* Ksrc) OP (RGBdst* Kdst)其中color表示alpha混合后的颜色值,RGBsrc表示源颜色值,即将要绘制的图元的颜色值;Ksrc表示源混 阅读全文
摘要:
如何组织编写模板程序前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。我在5年前开始使用模板,那时我看到了MFC的容器类。直到去年我还没有必要自己编写模板类。可是在我需要自己编写模板类时,我首先遇到的事实却是“传统”编程方法(在*.h文件声明,在*.cpp文件中定义)不能用于模板。于是我花费一些时间来了解问题所在及其解决方法。本文对象是那些熟悉模板但还没有很多编写模板经验的程序员。本文只涉及模板类,未涉及模板函数。 阅读全文
摘要:
【问题描述】马的遍历问题。在8×8方格的棋盘上,从任意指定方格出发,为马寻找一条走遍棋盘每一格并且只经过一次的一条路径。【初步设计】首先这是一个搜索问题,运用深度优先搜索进行求解。算法如下:1、输入初始位置坐标x,y;2、步骤 c: 如果c>64输出一个解,返回上一步骤c--(x,y) ← c计算(x,y)的八个方位的子结点,选出那此可行的子结点循环遍历所有可行子结点,步骤c++重复2显然(2)是一个递归调用的过程,大致如下:void dfs(int x,int y,int count){ int i,tx,ty;if(count>N*N) { output_so... 阅读全文
摘要:
#include <iostream.h>int board [8][8]={0};int Htry1[8]={-2,-1,1,2,2,1,-1,-2};int Htry2[8]={1,2,2,1,-1,-2,-2,-1};bool chech[8][8]={0};//标记位置是否已经被占用int n=1;//就算已走的步数void findway(int i,int j){for(int z=0;z<8;z++){if(i+Htry1[z]>=0&&i+Htry1[z]<8&&j+Htry2[z]>=0&&j 阅读全文
摘要:
#include <iostream.h>struct point{int x,y;//马的位置int dir;//这一次马行走的方向};struct stack{point p[64];//存储马的位置,方便回溯};int board [8][8];int Htry1[8]={-2,-1,1,2,2,1,-1,-2};int Htry2[8]={1,2,2,1,-1,-2,-2,-1};bool chech[8][8]={0};//标记位置是否已经被占用int main(){int i,j;int top=0;int z; cout<<"请输入马的初始位置& 阅读全文
摘要:
最近园子到处充斥着类似《告别程序员生涯,一点感慨,与诸君共勉》http://topic.csdn.net/u/20110331/00/37ad95f8-f559-497f-b527-191eb701ef77.html?99610《开发工程师人生之路(强烈推荐,分析的透彻!)》http://topic.csdn.net/u/20110323/16/16ebe2ac-bca5-49da-a050-45cf522a0828.html这样的文章。这些文章往往格调阴暗,无病呻吟,总是欲图从有限的,不愉快的个体经历得出规律性的,悲观的结论。最不可思议的是,即使这些缺乏基本文理逻辑的文章,往往能引来大批欢呼 阅读全文
摘要:
什么是LuaLua是具有简单数据描述的扩展编程语言(动态解析语言)。它提供了非常好的面向对象编程, 函数式编程(functional programming),数据驱动式编程(data-driven programming),它可以作为一个强大、轻量的脚本语言,供任何需要的程序使用。 Lua 以一个用 clean C 写成的库形式提供。(所谓 Clean C ,指的 ANSI C 和 C++ 中共通的一个子集)Lua例子(FOR 循环)for i=1,10 do -- the first program in every language io.write("Hello world, 阅读全文
摘要:
VS 2005环境下生成静态lib库及调用方法生成lib方法:步骤1:新建一个空项目,建一个头文件如Test.h#pragma once#ifdef __cplusplusextern "C" {#endifint GetMin(int a, int b);#ifdef __cplusplus}#endif//其实只要 int GetMin(int a, int b);这么一句语言也会通过,其他的语句仅仅表明一个头文件在很多情况下并不是这么简单的,会有很多的定义步骤2:新建一个源文件如Test.cpp#include "Test.h"int GetMin 阅读全文
摘要:
网上看到很多对游戏编程有兴趣的朋友都在说《DirectX 游戏开发终极指南》这本书的游戏项目无法编译通过,自己研究了一下,上网也看了好多提问,终于摸索出成功编译的方法,希望跟这些朋友一起分享一下,大家一起学习一起进步。下面开始正题:首先,必须在vs2003以上的环境建立工程,因为最新的dxsdk对vc6已经不支持了,而且《DirectX 游戏开发终极指南》游戏项目中要用到的directinput在vc6下也有错误。要编译通过随书附带的游戏项目示例程序,要用早期版本DX9。0c 因为最新版本的DX9已经没有directmusic了。而本书要用到。我用的是2006年的。好,下面开始新建一个项目,编 阅读全文
摘要:
其先序序列的第一个元素为根节点,接下来即为其左子树先序遍历序列,紧跟着是右子树先序遍历序列,故根节点已可从先序序列中分离。在中序序列中找到确定的根节点,根据中序遍历特性,在巾序序列中,根节点前面的序列即为左子树的中序遍历序列,根节点后面的即为右子树的中序遍历序列。由左右子树的中序序列长度,在该二叉树的先序序列中即可找到左右子树的先序序列的分界点,从而得到二叉树的左右子树的先序序列。递归实现:递归函数输入:二叉树的先序序列和中序序列;返回-、建好的二叉树的根节点。算法思想:1)若二叉树空,返回空;2)若不空,取先序序列第一个元素,建立根节点;3)在中序序列中查找根节点,以此确定左右子树的先序序列 阅读全文