c语言源代码.doc

上传人:叶*** 文档编号:37576434 上传时间:2022-09-01 格式:DOC 页数:6 大小:22KB
返回 下载 相关 举报
c语言源代码.doc_第1页
第1页 / 共6页
c语言源代码.doc_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《c语言源代码.doc》由会员分享,可在线阅读,更多相关《c语言源代码.doc(6页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、#include #include#include #include #include#define N 4 int gridNN=0;int D=0;int M=2048;/显示 void showdata()int i,j;system(CLS);for(i=0;iN+2;i+)printf(%5c,+);printf(nn);for(i=0;iN;i+)printf(%5c,+);for(j=0;jN;j+) if(gridij!=0) printf(%5d,gridij);else printf(%5c, ); printf(%5c,+);printf(nn);for(i=0;iN+2

2、;i+)printf(%5c,+);printf(n);/判断是否有空位int isNotFull() int i,j,k=0;for(i=0;iN;i+)for(j=0;jN;j+)if(gridij=0)k=1; break;return k; /随机数字 void randomdata()int r,c,x; x = rand()%2*2+2;dor = rand()%N; c = rand()%N;while(gridrc!=0);gridrc=x;/获取最大值 int getMax() int i,j,max=0;for(i=0;iN;i+)for(j=0;jN;j+)if(maxg

3、ridij) max=gridij;return max; /移动相加,返回1表示有移动,返回0表示无移动 int add()int i,j,cr,w,F=0;if(D=1)/top for(i=1;iN;i+)for(j=0;j=1 & gridcrj!=0 ) if(gridcr-1j=0)/上方有空位,上移 gridcr-1j=gridcrj;gridcrj=0;F=1; else/上方无空位if(gridcr-1j=gridcrj& w=0)/相等,相加 gridcr-1j=gridcr-1j*2;gridcrj=0; w=1; F=1;else/不等break;cr-;if(D=2)

4、/down for(i=N-2;i=0;i-)for(j=0;jN;j+)cr=i;w=0;while(cr=N-2 & gridcrj!=0 ) if(gridcr+1j=0)/下方有空位,下移 gridcr+1j=gridcrj;gridcrj=0;F=1;else/下方无空位if(gridcr+1j=gridcrj & w=0)/相等,相加 gridcr+1j=gridcr+1j*2;gridcrj=0; w=1;F=1;else/不等break;cr+;if(D=3)/left for(i=0;iN;i+)for(j=1;j=1 & gridicr!=0 ) if(gridicr-1=

5、0)/左方有空位,左移 gridicr-1=gridicr;gridicr=0;F=1;else/左方无空位if(gridicr-1=gridicr & w=0)/相等,相加 gridicr-1=gridicr-1*2;gridicr=0;w=1;F=1;else/不等break;cr-;if(D=4)/right for(i=0;i=0;j-)cr=j;w=0;while(cr=N-2 & gridicr!=0 ) if(gridicr+1=0)/右方有空位,右移 gridicr+1=gridicr;gridicr=0;F=1;else/右方无空位if(gridicr+1=gridicr &

6、 w=0)/相等,相加 gridicr+1=gridicr+1*2;gridicr=0; w=1; F=1;else/不等break;cr+;return F; int getKey() int k=0; char c=getch(); if(c0) /c0为特殊键,还要再读下一个字节判断为何键 c=getch(); if(c=72) D=1; k=1;/top if(c=80) D=2; k=1;/down if(c=75) D=3; k=1;/left if(c=77) D=4; k=1;/right return k;/在数字全满下,检查是否还有合并的可能,有则返回1; int canA

7、dd()int i,j,k,F=0;for(i=0;iN;i+)for(j=0;jN-1;j+)if(gridij=gridij+1) F=1;for(j=0;jN;j+)for(i=0;iN-1;i+)if(gridij=gridi+1j) F=1;return F;main() char c;int mov,key,isf; printf(请输入游戏要拼凑的最大数字,例如32,64,128,.,2048:); scanf(%d,&M); /初次状态 srand(time(NULL); randomdata();/随机第一个数 randomdata();/随机第二个数 showdata();

8、 do key=getKey();/读取操作键 if(key=0) continue; /不是上下左右键,重新读取键盘 mov=add();/根据方向键合并相加,返回1表示有移动 if(mov=1) showdata();/显示 if(getMax()=M)/判断是否胜利 printf(你赢了!n);break; isf=isNotFull();/返回1表示还有空位 if(isf=1 & mov=1) /有空位且有移动再随机 randomdata();/再随机 showdata();/显示 if(isf=0)/没有空间则游戏结束 if(canAdd()=1)printf(请选择另一个方向滑动!n); else break; while(1);6 / 66 / 6

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com