C俄罗斯方块源码完整功能版Word文档格式.docx

上传人:b****0 文档编号:13207360 上传时间:2022-10-08 格式:DOCX 页数:23 大小:216.45KB
下载 相关 举报
C俄罗斯方块源码完整功能版Word文档格式.docx_第1页
第1页 / 共23页
C俄罗斯方块源码完整功能版Word文档格式.docx_第2页
第2页 / 共23页
C俄罗斯方块源码完整功能版Word文档格式.docx_第3页
第3页 / 共23页
C俄罗斯方块源码完整功能版Word文档格式.docx_第4页
第4页 / 共23页
C俄罗斯方块源码完整功能版Word文档格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

C俄罗斯方块源码完整功能版Word文档格式.docx

《C俄罗斯方块源码完整功能版Word文档格式.docx》由会员分享,可在线阅读,更多相关《C俄罗斯方块源码完整功能版Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。

C俄罗斯方块源码完整功能版Word文档格式.docx

1

//碰撞检测

OK 

CANTMOVE 

//方向

UP 

DOWN 

LEFT 

2

RIGHT 

3

//错误码

no_enough_memory 

set_no_found 

dat_no_found 

error_argument 

//函数声明

//模块

void 

play();

//开始游戏

sets();

//设置

highscores();

//排行榜

copyright();

//作者

//功能

mapsetup();

//准备地图

bool 

newsqr();

//放置方块,返回是否游戏结束

int 

move(int 

direction);

//移动方块,返回定义表

movetomap();

//把当前方块移动到地图上

wholeline();

//检查是否组成了一层,返回层数,-1表示没有

deleteline(int 

which);

//删除一行

endup();

//结束游戏,清理内存

//显示

show();

//刷新画面

showmenu(char* 

menu);

//显示菜单

//文件

loadset();

//加载设置

saveset();

//保存设置

loadhs();

//加载排行榜

addscores(int 

score,char 

name[50]);

//增加一个分数,返回是否是高分

savehs();

//保存排行榜

//坐标变换

get(int 

x,int 

y);

set(int 

y,int 

date);

//结构

struct{

xs,ys;

//屏幕大小

speed;

//速度

char 

sqr[3],no[3],frame[3];

//方块、空白处、边框的样式

}gameset;

name[50];

score;

}rating[10];

//全局变量

//变量

int* 

map=NULL;

//地图

now[4][4];

//当前方块

xnow,ynow;

//当前位置

guide;

//分数

//常量

const 

shap[7][4][4]={//形状

{\

0,0,0,0,\

1,1,1,1,\

},\

0,1,1,0,\

0,1,1,1,\

0,0,1,0,\

1,0,0,0,\

1,1,1,0,\

0,0,0,1,\

0,1,0,0,\

}\

};

errword[4][50]={"

程序没能取得足够的内存"

"

无法打开或找不到设置文件set.ini"

无法打开或找不到排行榜数据highscore.dat"

您设置的参数太大或者太小"

//控制台

HANDLE 

hout;

//控制台句柄

COORD 

curpos={0,0};

//光标坐标

//主函数

main()

{

start1:

try

hout 

GetStdHandle(STD_OUTPUT_HANDLE);

//获取控制台句柄,以便移动光标

srand(time(0));

//用当前时间初始化随机数生成器

//加载

start2:

while

(1)

showmenu("

俄罗斯方块\n请选择菜单:

\n1.开始游戏\n2.设置\n3.排行榜\n4.帮助\n5.保存并退出\n"

);

switch(getch())

case 

'

1'

:

system("

cls"

//play函数覆盖界面而不是清屏,所以需要先清屏

break;

2'

3'

4'

5'

//保存数据

return 

0;

}

catch(int 

errnum)//错误处理

printf("

o(>

﹏<

)o 

出错啦!

\n程序收到了一条错误信息,错误码是:

%d(%s)\n您可以联系我们解决这个问题。

\n"

errnum,errword[errnum]);

\n你可以选择以下操作:

\n1.重启程序\n2.以默认设置重启程序\n3.向设置和数据文件写入默认设置然后重启\n4.退出\n"

goto 

start1;

gameset.xs=20;

gameset.ys=20;

gameset.speed=100;

strcpy(gameset.sqr,"

[]"

//无法直接给数组复制数据

strcpy(gameset.no,"

"

strcpy(gameset.frame,"

i;

for(i=0;

i<

10;

i++)

strcpy(rating[i].name,"

未命名"

),rating[i].score=0;

start2;

ofstream 

fout;

fout.open("

set.ini"

fout<

20\n20\n100[]\n 

\n:

;

fout.close();

fout.clear();

highscore.dat"

j;

for(j=0;

j<

j++)

未命名\n0\n"

default:

-1;

//返回异常退出

play()

//初始化

/*for(int 

i=0;

20;

set(i,19,SQR);

*/

while(newsqr())//不断新建方块,直到返回NO

while(move(DOWN)!

=CANTMOVE)//每次向下移动方块,直到不能移动

guide+=1;

//向下移动一次加1分

while(kbhit())//不断处理键盘,直到没有按键

switch(getch())//获取按键

w'

move(UP);

s'

move(DOWN);

a'

move(LEFT);

d'

move(RIGHT);

Sleep(gameset.speed);

//延时

//退出循环时无法向下移动,把当前方块移动到地图上

line;

while((line=wholeline())!

=-1);

//不断检查是否出现整行,直到没有

deleteline(line);

//删除整行

//无法新建方块,游戏结束

return;

//结束

//函数定义

mapsetup(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1