俄罗斯方块:win32api开发

这篇博客介绍了如何利用win32api来开发经典游戏俄罗斯方块,包括图形界面的创建和游戏逻辑的实现。
摘要由CSDN通过智能技术生成
本文简述一门课程,演示win32api开发俄罗斯方块的开发过程。假设学生学习过C语言,没学过或者学习C++不好,刚刚开始学习win32api程序设计,还不懂消息循环和注册窗口类。

  

最近的照片在这里 [http://www.douban.com/photos/album/132796665/] 和 [http://www.douban.com/photos/album/133241544/]。

1. 背景和原则

我这学期讲一门课,本科三年级,学生满员17人。一般接近满员,最低一次5人,那天据林同学说,其他的同学都去看足球赛了。

课程名字叫做算法与程序设计实践3。第一堂课我照例要解释:到了"3"这个阶段,就不讲算法了,只有实践。不过,后来看看算法也还是有一点应用,比如从一个线性表里删除符合条件的元素们,在线性表里查找符合条件的元素,这种难度的。

课是在机房上的,大部分时间学生和教师都看着显示,所以一学期下来,好多同学和我见面可能都不太认识。不过我们对代码的形成过程更熟悉一些。

我试图贯彻下述原则:学生应该看到教师编程的过程,而不仅仅是结果;学生应该看到在编辑器和编译器中的代码,而不是WORD或PPT里的;学生应该先学会临模教师的编程过程,而没有能力直接临模结果;学生甚至应该看到教师的错误及错误的解决过程、教师的无知及检索过程,学生不应该看到事先排练的完美的编程过程和全知全能的教师,那样的过程和专家,学生模仿时无从下手。

所以,我课前不准备,在课堂上无意犯各种错误--偶尔演示学生们容易犯的错误--及解决。在LOG文件中记录我们的计划和当前的进度,在画图里画下原型。

所以,我假装对某些API和函数不熟悉,演示在MSDN和互联网中查找手册和解决方案的步骤。单独做一些技术原型验证对API的调用结果的猜想,而不是在工程的过程中在项目代码中测试技术。有时,我知道问题在哪里,但是要先列出各种可能,然后一一验证猜想(而不是直接解决,这似乎是计算机本科生非常容易犯的错误,如果解决了就认定那是问题的原因)。除了这两点,其余的时间我应该尽可能诚实。

有时候,学生会告诉我哪里错了,先于我发现问题的原因。这令我享受这样的教学过程。

最终,我们--以我编码为主--实现了WIN32API开发的俄罗斯方块。

选择俄罗斯方块的原因,是因为小游戏的业务逻辑足够复杂,保证学生了解在相对复杂的业务逻辑时的面临的问题和编程行为与toy作品不同;所使用的到技术较少,避免过多的机制 (数据库、网络等)分散学生的注意力,保证学生把精力集中在对业务逻辑上。

选择win32api是课堂上投票的结果。选择C语言而没有使用C++有两个原因。一是学生的C++掌握通常并不熟练;二是我希望学生能在项目中发现面向对象的必要性和优点,而不是仅因为学习过哪些语言而在工程中选用;三是希望演示用C也可以实现基于对象的程序设计 (不是面向对象,不包括继承,仅包括方法与数据的内聚)。

2. 技术原型

涉及到的技术原型,要在工程开始前建立小项目,以验证对这些技术的掌握和对效果的猜想。

要实验的技术列表,来源于需求。我们先不写代码,口头描述需求,然后分解需求到所需的技术。这样就形成了技术列表。这个过程中,同时也形成了定义,包括名词和动词表。

这些技术原型也限定了除C语言以外需要掌握的技术,在这次开发当中。

技术原型包括:

* 使用GDI画图、擦除。用于画小块和移动小块。移动是根据视觉暂留在新的位置上画图,并把旧位置上的小块以底色重画。

* 键盘消息响应。用于在不暂停小块下落的情况下接受玩家通过按键操纵小块左移、右移、旋转、快速下落。

* 特定范围的随机数生成。用于在创建新的小块时
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值