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

首先找到主函数main()。在RussiaBlock里面。一开始就是初始化。所以看到init().

从Init.cpp的文件看,初始化

//打开配置文件 从中读取方块的形状
fp = fopen(".\rockshape.ini", "r") ;

用notepad++打开,发现是
990396-20160720005510560-1409679626.png

可调宽度的是,语句在前后加上尖括号<>
img src="http://images2015.cnblogs.com/blog/990396/201607/990396-20160720005510560-1409679626.png" width="400"/

主要是不同的方块的形状。有@的部分表示有方块,#则是没有。

今天理解的部分主要是这一段,如图
990396-20160720005736138-856307845.png

理解和分析:对于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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值