软件工程实战(四)--- 俄罗斯方块的语句理解1.0

首先找到主函数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,今天先理解到这里!

原文地址:https://www.cnblogs.com/caocan702/p/5686835.html