已阅读5页,还剩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;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(maxgridij) 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)/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=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 & 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 canAdd()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(); 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) /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临床口腔医生考试题库及答案2025版
- 2025年软件开发与项目管理能力考核试卷及答案解析
- 智能充电桩互联协议
- 二年级下数学教案长方形的认识-冀教版
- 期货市场中的收益率曲线变化分析
- 2025年国家安全知识竞赛试题含答案
- 2025年CAAC无人机执照理论复习考试总题库及参考答案
- 几百几十加、减几百几十(教学设计)-2024-2025学年三年级上册数学人教版
- 2025年药品不良反应上报培训试题及答案
- 消防知识培训试题及答案
- 员工工作责任心培训-课件
- 《第13课 分解问题步骤》教学设计教学反思-2023-2024学年小学信息技术浙教版2023三年级上册
- 大型方格沉井施工方案
- 2025年大学《电缆工程-电缆电气性能测试》考试备考题库及答案解析
- GB/T 21782.8-2025粉末涂料第8部分:热固性粉末贮存稳定性的评定
- 2025年咖啡产业咖啡产业数字化发展研究报告及未来发展趋势预测
- 经鼻高流量氧疗护理(2025版)
- 2025中国南水北调集团水网智慧科技有限公司秋季招聘14人笔试历年典型考点题库附带答案详解2卷
- 2025年上海市春考语文真题作文7篇范文:我们的劳动使大地改变了模样
- 护士3年服务协议书
- 2025中国铁路太原局集团有限公司招聘高校毕业生1014人(一)笔试历年典型考点题库附带答案详解2套试卷
评论
0/150
提交评论