time 
设为首页】【收藏本站
当前位置: 主页 > 程序设计 > C\C++\VC > C语言 > C语言写的俄罗斯方块程序

C语言写的俄罗斯方块程序

时间:2009-09-20 23:31 点击:4584次 字体:[ ]




  大概在最近两天之内编码完成,但此前一天开始构思。第一天晚上主要完成了方块旋转算法,第二天也就是今天加了消方块的处理算法。但是可能还有一些考虑不周的地方,比如,没有采用定时中断,而是图方便采用了和cpu频率有关的delay()函数来模拟时间间隔,这是需要改进的地方。
 
  其中的主要逻辑有:

    (1)由于c的随机性函数不好,所以每次游戏开始根据bios时间设置种子。
 
  (2)得分越高,方块下降速度越快(每200分为单位)。
 
  (3)每下落一个方块加1分,每消除一行加10分,两行加30分,三行加70分,四行加150分。初试分数为100分。
 
  游戏控制:up-旋转;空格-下落到底; 左右下方向键-控制方向。P-开始或暂停游戏。 ESC-退出。
 
  特点:

    (1)由于tc不支持中文,所以基本都是英文注释。
 
  (2)函数命名尽可能规范的表达其内部处理目的和过程。
 
  (3)代码加上注释仅有577行。(我下载过的两个俄罗斯方块代码一个在1087行,一个在993行,我的比它们代码少)。
 
  (4)除了消除空格时算法比较复杂,其他算法都比较简单易读。
 
  (5)绘图效率和局部代码效率扔有待提高。
 
  (6)FrameTime参数可能依据不同硬件环境进行具体设置,InitGame需要正确的TC路径。
 
  俄罗斯方块源于大约9年前上大一时的一个梦,我们在学习c语言时,我的同寝室友邀请我合作一起完成俄罗斯方块(课外作业性质),但是当时限于我们的水平比较菜和学习状态比较懒散,我们没有完成。大一的时候我在机房里无意发现别人留下的俄罗斯方块程序,运行,老师发现后激动的问我是我写的吗,我惭愧的摇摇头。那时看到别人做c的大程序深感羡慕(自己只是写几十行的程序)。数年后我仍然看到有不同样式的实现,但是我一直没有实现它,知道今天忽然有这个想法去做,算是弥补多年前的遗憾和心愿吧。

 /********************************/
/* Desc:    俄罗斯方块游戏                */
/* By:        hoodlum1980                */
/* Email:    jinfd@126.com            */
/* Date:    2008.03.12 22:30            */
/********************************/
#include <stdio.h>
#include <bios.h>
#include <dos.h>
#include <graphics.h>
#include <string.h>
#include <stdlib.h>
#define true         1
#define false         0
#define BoardWidth    12
#define BoardHeight     23
#define _INNER_HELPER /*inner helper method */
/*Scan Codes Define*/
enum KEYCODES
{
    K_ESC                =0x011b,
    K_UP                =0x4800,        /* upward arrow */
    K_LEFT            =0x4b00,
    K_DOWN            =0x5000,
    K_RIGHT            =0x4d00,
    K_SPACE            =0x3920,
    K_P                =0x1970
};



本文地址 : http://www.fengfly.com/plus/view-77334-1.html
标签: 俄罗斯方块 C语言编程
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:
本栏分类