ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:216.42KB ,
资源ID:19324865      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19324865.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++俄罗斯方块源码完整功能版Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++俄罗斯方块源码完整功能版Word文件下载.docx

1、voidplay();/开始游戏sets();/设置highscores();/排行榜copyright();/作者/功能mapsetup();/准备地图boolnewsqr();/放置方块,返回是否游戏结束intmove(intdirection);/移动方块,返回定义表movetomap();/把当前方块移动到地图上wholeline();/检查是否组成了一层,返回层数,-1表示没有deleteline(intwhich);/删除一行endup();/结束游戏,清理内存/显示show();/刷新画面showmenu(char*menu);/显示菜单/文件loadset();/加载设置sav

2、eset();/保存设置loadhs();/加载排行榜addscores(intscore,charname50);/增加一个分数,返回是否是高分savehs();/保存排行榜/坐标变换get(intx,inty);set(inty,intdate);/结构structxs,ys;/屏幕大小speed;/速度charsqr3,no3,frame3;/方块、空白处、边框的样式gameset;name50;score;rating10;/全局变量/变量int*map=NULL;/地图now44;/当前方块xnow,ynow;/当前位置guide;/分数/常量constshap744=/形状0,0,

3、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,;errword450=程序没能取得足够的内存,无法打开或找不到设置文件set.ini无法打开或找不到排行榜数据highscore.dat您设置的参数太大或者太小/控制台HANDLEhout;/控制台句柄COORDcurpos=0,0;/光标坐标/主函数main()start1:tryhout=GetStdHandle(STD_OUTPUT_HANDLE);/获取控制台句柄,以便移动光标srand(time(0);/用当前时间初始化随机数生成器/加载start

4、2:while(1)showmenu(俄罗斯方块n请选择菜单:n1.开始游戏n2.设置n3.排行榜n4.帮助n5.保存并退出n);switch(getch()case1:system(cls/play函数覆盖界面而不是清屏,所以需要先清屏break;2345/保存数据return0;catch(interrnum)/错误处理printf(o()o出错啦!n程序收到了一条错误信息,错误码是:%d(%s)n您可以联系我们解决这个问题。n,errnum,errworderrnum);n你可以选择以下操作:n1.重启程序n2.以默认设置重启程序n3.向设置和数据文件写入默认设置然后重启n4.退出ngo

5、tostart1;gameset.xs=20;gameset.ys=20;gameset.speed=100;strcpy(gameset.sqr,/无法直接给数组复制数据strcpy(gameset.no,strcpy(gameset.frame,i;for(i=0;i10;i+)strcpy(ratingi.name,未命名),ratingi.score=0;start2;ofstreamfout;fout.open(set.inifout20n20n100nn:;fout.close();fout.clear();highscore.datj;for(j=0;jj+)未命名n0ndefa

6、ult:-1;/返回异常退出play()/初始化/*for(inti=0;20;set(i,19,SQR);*/while(newsqr()/不断新建方块,直到返回NOwhile(move(DOWN)!=CANTMOVE)/每次向下移动方块,直到不能移动guide+=1;/向下移动一次加1分while(kbhit()/不断处理键盘,直到没有按键switch(getch()/获取按键wmove(UP);smove(DOWN);amove(LEFT);dmove(RIGHT);Sleep(gameset.speed);/延时/退出循环时无法向下移动,把当前方块移动到地图上line;while(li

7、ne=wholeline()!=-1);/不断检查是否出现整行,直到没有deleteline(line);/删除整行/无法新建方块,游戏结束return;/结束/函数定义mapsetup()map=newintgameset.xs*gameset.ys;/申请内存if(!map)/如果申请到0throwno_enough_memory;/抛出异常/初始化地图i,j;gameset.xs;gameset.ys;set(i,j,NO);guide=0;/分数清零y)if(y=0&xy0&*(map+y*gameset.xs+x)=date;/写入newsqr()4;i+)/检查下一个方块要出现的地

8、方是否有方块if(get(gameset.xs/2+i,0)=SQR)false;/有方块,创建失败which=rand()%7;/随机选择形状nowij=shapwhichij;/复制形状for(i=rand()%4;ii-)/旋转随机0-3次xnow=gameset.xs/2;/设置坐标ynow=-4;true;direction)x,y;/储存坐标偏移量switch(direction)UP:/上键是旋转newshap44;/储存旋转后的图形newshapij=nowj3-i;if(newshapij=true&get(xnow+i,ynow+j)=SQR)/对新图形碰撞检测CANTMO

9、VE;/不能旋转nowij=newshapij;/检测完毕,复制形状OK;DOWN:/先记录坐标的偏移量,确定没有碰撞以后移动x=0,y=1;LEFT:x=-1;y=0;RIGHT:x=1,y=0;if(nowij=true&get(i+x+xnow,j+y+ynow)=SQR)/如果和地图上的方块重合(边缘以外get函数也返回SQR,不必单独处理)/if(get(i+x,j+y)=SQR)/if(nowi+xj+y=SQR)/无法移动xnow+=x;/检测完毕,更改坐标ynow+=y;movetomap()guide+=10;/成功放置方块,加10分if(nowij=true)set(xno

10、w+i,ynow+j,SQR);/复制方块到地图wholeline()whole;/储存是否是整行j+)/for(i=0;whole=true;/假设是整行i+)/for(j=0;if(get(i,j)=NO)whole=false;/有空,不是整行if(whole)/是整行,返回/没找到整行,返回which)guide+=1000;/消方块,奖励分数for(i=which;=0;i-)set(j,i,get(j,i-1);/移动上面的所有方块,覆盖这一行。最上面虚拟成了空,不必特殊处理endup()deletemap;/清理内存while(kbhit()/清除所有未处理的按键getchar(

11、);游戏结束,请输入您的姓名:name50=nonamescanf(%s,&name0);/输入word1000;/储存格式化以后的字符串sprintf(&word0,游戏结束!nn您(%s)的积分是:%dnn%snn请按任意键继续,name,guide,(addscores(guide,name)?你进入了排行榜你没有进入排行榜);showmenu(&word0);getch();/显示排行榜show()SetConsoleCursorPosition(hout,curpos);/system(/光标移至左上角,覆盖之前的图案当前积分:%dn,guide);gameset.xs+2;i+)/输出上边框printf(gameset.frame);/左边框if(i=xnow&(xnow+4)&j=ynow&(ynow+4)/if(i(xnow+1)&(ynow+1)/在当前方块范围内if(nowi-xnowj-ynow=true)/如果有方块printf(gameset.sqr);elseif(get(i,j)=SQR)/如果地图有方块else/否则,空白printf(gameset.no);else/不在当前方块范围内,输出地图if(get(i,j)=SQR)/有方块else/否则,没方块/右边框和换行i+)/下边框menu)output100;/储存本行的文字g

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

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