首先找到主函数main()。在RussiaBlock里面。一开始就是初始化。所以看到init().
从Init.cpp的文件看,初始化
//打开配置文件 从中读取方块的形状
fp = fopen(".
ockshape.ini", "r") ;
用notepad++打开,发现是
可调宽度的是,语句在前后加上尖括号<>
img src="http://images2015.cnblogs.com/blog/990396/201607/990396-20160720005510560-1409679626.png" width="400"/
主要是不同的方块的形状。有@的部分表示有方块,#则是没有。
今天理解的部分主要是这一段,如图
理解和分析:对于p而言,设定了一个指针。
for循环是从指针的最后一位开始,往前递减,一直到第一位为止,跳出。
If 判断是在如有@的位置上,让1占有那个位置,表示标记。如果是#,直接不用执行if了,跳出。
难点在于,x|=y 意思是 x = x|y,这里就是16位的shapeBitsRet(16位的全零) 和 (unsigned int)1 << (&shapeStr[15]-p) 做或运算。
而括号里面的先算,就是1需要右移多少位,显然,也是递增的,当p从15减到1时,就是右移0位到15位。
OK,今天先理解到这里!