《程序设计应用基础》设计报告 俄罗斯方块
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《程序设计应用基础》课程设计报告
题目俄罗斯方块
学院
班级
组员姓名
学号
指导教师
《程序设计应用基础》课程设计计划书
俄罗斯方块
俄罗斯方块
摘要:俄罗斯方块是一款老少皆宜,悠闲生活的游戏,是一款电脑游戏机和掌上游戏机游戏,当我们工作累了,无聊的时候,都可以通过俄罗斯方块来进行放松,操作界面简洁美观,易于操作。程序用了条件、循环、结构体等知识点。可运用于小的管理软件。软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。通过对通讯录管理系统的设计,进一步理解和掌握C语言这门课程的知识点,能够熟练的调用各种函数,把各种C语句有机的结合起来,提高自己C语言程序设计的能力,为今后解决实际问题打下良好基础。
关键词:俄罗斯方块;结构体;条件语句;循环结构;指针
1引言
学习了C语言程序设计这门课程之后,使我对程序设计有了一定的了解,为了熟练掌握C 语言的语法特点、及其数据结构,提高自身编写程序的能力。通过课程设计实现理论知识与实际情况的结合,使所学知识能够在现实社会中起到一定的作用,防止所编写的程序脱离实际,让程序可以更好的发挥作用,以便减轻实际工作中所遇到的繁琐步骤,提高现实工作中的效率。此外通过课程设计提高逻辑思考能力和解决实际问题的能力。程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。俄罗斯方块程序是一款老少皆宜的游戏。通过程序设计,达到理论与实际应用相结合,提高对程序的分析能力,能够根据实际应用,初步实现系统功能模块及算法的设计,通过编程基本实现俄罗斯方块程序。
2设计方案
2.1设计思路
建立一个函数,用来添加、显示、删除、查询、修改等信息,完成通讯录的功能。主函数可以调用五个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、退出系统等功能。在主函数中可以以1、2、3、4、5、数字键分别可以执行某个功能模块
3程序设计与实施
3.1根据该流程图定义数据类型建立函数
typedef struct
{
char name[11]; //姓名
char score; //分数
char rank; //等级
}Person;
俄罗斯方块
3.2 主函数及其流程图
定义主函数main()和一系列的功能函数,只有通过这些函数才可实现程序的功能。每次使用都会调用主函数。主函数主要是利用功能函数对数据进行处理,流程图如下图3.1所示。
图3.1 main函数流程图
3.3其余各个功能函数及其流程图
图3.2 newblock函数调用流程图
图3.3 move函数的流程图
图3.4 check函数的流程图
俄罗斯方块4设计结果与分析
首先在头文件里将5种方块类型进行定义
将源程序编译、链接后生成可执行文件,运行该文件会看到如下图所示界面
然后会出现两个界面,
左边为游戏操作界面,
右面为内容显示界面,分别是下一个方块,分数,等级和操作说明
游戏开始时,程序会执行next_block随机形成方块
俄罗斯方块
在执行new_block将方块从next_block种取出,
取出后开始执行move函数,操作者对方块进行上下左右控制方块
move函数判断你是否按下,获得按下的键位的值(就是上下左右那个键),执行对应的游戏方向的控制
当方块运动时,draw_block会在指定位置画出方块
Check函数会检查方块是否还可以向下,当无法向下时,mark函数执行,方块固化
Check()会检查是否存在一行都是方的,如果是,clear_block会清除,同时会add_sorce(t),add_rank()
俄罗斯方块
5源程序
#ifndef BLOCK_H
#define BLOCK_H
#include
#define BLOCK_COUNT 5//方块种类
#define BLOCK_WEIGHT 5//方块宽度
#define BLOCK_HIGHT 5//方块宽度
#define UNIT_SIZE 20 //方块大小
int color[BLOCK_COUNT] = {
GREEN, CYAN, MAGENTA, BROWN, YELLOW
};
#define UP 72
#define LEFT 75
#define RIGHT 77
#define DOWN 80
#define SPACE 32
#define START_X 130
#define START_Y 30
#define minx 30
#define miny 30
int score = 0;//分数
int rank = 0;//等级
int Next_index = -1;//下一个方块
int Block_index = -1;//当前方块
int speed = 500;
int visit[30][15];
int Markcolor[30][15];//对应位置的颜色
typedef enum {定义一开方向
BLOCK_UP,
BLOCK_RIGHT,
BLOCK_DOWN,
BLOCK_LEFT
}BLOCK_Dir;
typedef enum {
MOVE_DOWN,
MOVE_LEFT,
MOVE_RIGHT
}MOVE_DIR;
int block[BLOCK_COUNT * 4][BLOCK_WEIGHT][BLOCK_HIGHT] = {四?种?形?态¬?
//|
{
0, 0, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 1, 0, 0,
0, 0, 1, 0, 0,
0, 0, 1, 0, 0
},
{
0,0,0,0,0,
0,0,0,0,0,
0,1,1,1,0,
0,0,0,0,0,
0,0,0,0,0