软件工程俄罗斯方块
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程实验报告课程名称:软件工程
计算机科学与技术学院
目录
软件名称:俄罗斯方块
1.软件定义. . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
a)问题定义. . . . . . . . . . . . . . . . . . . . . . . . . . .3
b)可行性研究. . . . . . . . . . . . . . . . . . . . . . . . . .3
c)需求分析. . . . . . . . . . . . . . . . . . . . . . . . . . .4
i.设计棋盘 . . . . . . . . . . . . . . . . . . . . . . . . .5
ii.设计棋子 . . . . . . . . . . . . . . . . . . . . . . . . .6 iii.按键功能设置(上下左右). . . . . . . . . . . . . . . . . . . .7 iv.棋子落下的动画实现以及越界检测. . . . . . . . . . . . . . . .9 v.More functions . . . . . . . . . . . . . . . . . . . . . .11 2.俄罗斯方块的DFD图 . . . . . . . . . . . . . . . . . . . . . . .12 3.需求分析建模–数据字典. . . . . . . . . . . . . . . . . . . . . .13 4.代码. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
俄罗斯方块
1.编译环境
Codeblocks编译器用C语言在window8下
2.软件定义
a)问题定义
额,俄罗斯方块不用定义了吧。。相信大家都知道。
俄罗斯方块(Tetris, 俄文:Тетрис)是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克
谢·帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是
移动、旋转和摆放游戏自动输出的各种方块,使之排列成完
整的一行或多行并且消除得分。由于上手简单、老少皆宜,
从而家喻户晓,风靡世界。
2014年2月22日,英国心理学家发现,减肥者通过玩俄罗斯方块,可以降低对富含脂肪的食物和零食的心理需求;
尝试戒烟者的烟瘾也能得到遏制。
b)可行性研究
俄罗斯方块是曾经风靡全球的一款游戏。如今看来,虽然与其他手游相比,编码简单,但对于现阶段的我们,还是有
一定的难度,因而做出俄罗斯方块的代码,是一个很能锻炼
自我的任务,因此我选择了写俄罗斯方块。
通过大一对C语言和这学期数据结构的学习,已经基本掌握了俄罗斯方块编程的需要,因此是可行的。
c)需求分析
•设计棋盘
•设计棋子
•按键功能设置(上下左右)
•棋子落下的动画实现以及越界检测
软件设计1.设计棋盘
设计出棋盘的高和宽:
#define CHESS_WIDTH 12*2
#define CHESS_HIGHT 1
出来的效果应该是这样的:
2.设计棋子
用一个二维数组表示棋子:
x,y (4,1)
char a[4][4]
a[0][0]=1,a[0][1]=1,a[1][0],a[1][1]=1;
出来的效果:
3.按键功能设置(上下左右,暂停)
按键功能分别由下面几个函数实现:
void ClearChess(chess_data chess) 清屏
void MoveDown(chess_data* Chess) 下移
void MoveLeft(chess_data* Chess) 左移
void MoveRight(chess_data* Chess) 右移
然后这儿呢,会出现一个bug,即出现越界现象,所以需要写函数来判断是否越界。
4.棋子落下的动画实现以及越界检测
越界检测:
int CheckLeftBorder(chess_data Chess)
检查左右边界
int CheckDownBorder(chess_data Chess)
检查下边界
5.More functions
•游戏难度控制
•添加声音效果
•还未研发出来….
俄罗斯方块的DFD图第0层:
第1层:
需求分析建模–数据字典
数据流名:玩家可用键
说明:玩家在玩游戏是可以用到的键
数据流来源:玩家
数据流去向:系统处理
数据流组成:Y/N + 上下左右
数据元素词条
Y/N= “Y”“N”
上下左右= “↑”“↓”“←”“→”
程序代码
#include
#include
#include
#include
#include
#include
#include "hello.h"
#include
#include
#include "gameproc.h"
//#define var 333;
//移动光标位置
void gotoxy(int x,int y)
{
COORD xy;
HANDLE hstdout;
hstdout=GetStdHandle(STD_OUTPUT_HANDLE);
xy.X=x;
xy.Y=y;
SetConsoleCursorPosition(hstdout,xy);
//CloseHandle(hstdout);
}
void fillchar(char a,int charlen)
{
COORD xy={0};
HANDLE hstdout;
long byw;
hstdout=GetStdHandle(STD_OUTPUT_HANDLE);
FillConsoleOutputCharacter(hstdout,a,charlen,xy,&byw);