作者cooper6334 (小恐龙)
看板GameDesign
标题Re: [请益] 请问使用C语言写俄罗斯方块
时间Tue Dec 15 11:33:38 2009
来分享一下我的做法好了
我用win32api来贴图
基本架构就是一个12x23的阵列(10*20+左右墙+底+生成方块的位置)
阵列内容有 状态 -1墙 0空 1正在操作 2定住的方快
颜色 根据方块种类而定
然後就是当状态!=0的时候就依颜色印出来
第0,1列是不印的,我拿来放刚生成的方块
每隔一小段时间就把状态是1的往下移,
直到下面一格不是空的,就把方块固定住并在最上面产生新的方块
移动也是把状态是1的往左或右移一格,除非要移的地方已经被占走了
删除的部份就设一个参数d=0,从底下往上搜,
假如碰到一整列满的就d++,其他的列就往下移d列
▓▓▓▓▓▓▓▓
▓ d=2,往下搬2列
▓▓▓▓▓▓▓▓▓▓
▓ d=2
▓▓▓▓▓▓▓▓ ▓
▓ d=1,往下搬1列 => ▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓
▓ d=1 ▓▓▓▓▓▓▓▓ ▓▓
▓▓▓▓▓▓▓▓▓ ▓ d=0 ▓▓▓▓▓▓▓▓▓ ▓
最麻烦的是旋转的部份,我的做法就是一格一格转
就看这方块转过去会占到那几格就一一转过去,
假如会碰到墙壁还要分成不同的状况来写
其实我主要是想看看大家旋转的部份怎麽处理
因为我觉得我这部份写得很囧,一开始没写好转一转还会飞天
我的写法有什麽问题都请多指教
--
我要以耍冷来对抗温室效应
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 112.104.57.123
1F:→ netsphere:可不可伸一下source code 12/15 16:26
2F:推 boyen3:我旋转跟你的写法一样 没写好方块常常会开花 XD 12/15 21:07
3F:→ Splash5:如果是用一格一格在转是很容易开发 但如果你把各种形状的 12/15 22:12
4F:→ Splash5:方块当作一个物件在变化 不是会比较简单吗 :-p.. 12/15 22:12
5F:→ Splash5:各个"正在下降"的方块 type = ?, state=? 12/15 22:14