该文章均为个人编写,如有错误,欢迎各位友友点评!

一个简单的小游戏,使用到指针及一二维数组,相关知识可访问:

指针:https://blog.csdn.net/qiu___nan/article/details/127054411。

数组:https://blog.csdn.net/qiu___nan/article/details/127144647。

完整代码如下:

#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
#include<math.h>
#include<time.h>
#include<iostream>
using namespace std;void print1(int *b,int (*g)[3]);
int move(int m,int (*g)[3],int*b,int*a);
void moveprint();
int print2(int f,int (*g)[3],int nullx,int nully);void moveprint(){cout<<"\t\t————————————\n";cout<<"\n\n\t\t\t移动失败!\n\n\n";cout<<"\t\t————————————\n";
}void print1(int *b,int (*g)[3]){int i,j,c=0;for(i=0;i<3;i++){for(j=0;j<3;j++){if(i==2&&j==2){g[i][j]=9;  }else{g[i][j]=b[c];//  cout<<g[i][j]<<"检测="<<b[c]<<" "<<c<<endl;c++;}}}cout<<"\t\t\t得出随机拼图如下:\n";cout<<"\t\t——————————————\n";cout<<"\t\t|\t┌──┬──┬──┐         |\n";cout<<"\t\t|\t│ "<<b[0]<<"│ "<<b[1]<<"│ "<<b[2]<<"│         |\n";cout<<"\t\t|\t├──┼──┼──┤         |\n";cout<<"\t\t|\t│ "<<b[3]<<"│ "<<b[4]<<"│ "<<b[5]<<"│         |\n";cout<<"\t\t|\t├──┼──┼──┤         |\n";cout<<"\t\t|\t│ "<<b[6]<<"│ "<<b[7]<<"│ "<<" "<<"│         |\n";cout<<"\t\t|\t└──┴──┴──┘         |\n";cout<<"\t\t——————————————\n";}
int print2(int f,int (*g)[3],int nullx,int nully){cout<<"\t\t————————————\n";cout<<"\t\t\t移动成功,拼图如下:\n";cout<<"\t\t\t┌──┬──┬──┐\n";for(int i=0;i<3;i++){for(int j=0;j<3;j++){if(j==0) {if(g[i][j]!=9) cout<<"\t\t\t│ "<<g[i][j];else cout<<"\t\t\t│ "<<" ";}else if(j==1){if(g[i][j]!=9) cout<<"│ "<<g[i][j];else cout<<"│ "<<" ";}else{if(g[i][j]!=9) cout<<"│ "<<g[i][j]<<"│ \n";else cout<<"│ "<<" "<<"│ \n";}}if(i==0) cout<<"\t\t\t├──┼──┼──┤\n";else if(i==1) cout<<"\t\t\t├──┼──┼──┤\n";  else    cout<<"\t\t\t└──┴──┴──┘\n";}cout<<"\t\t————————————\n";if(f==0&&nullx==2&&nully==2) {cout<<"\t\t————————————\n";cout<<"\n\n\t\t\t拼图完成,恭喜通关!\n\n\n";cout<<"\t\t————————————\n";return 1;} else{return 0;}
}int move(int m,int (*g)[3],int*b,int *a){int i=0,j=0,x=0,y=0,nullx=0,nully=0,flag=0;for(i=0;i<3;i++){for(j=0;j<3;j++){if(g[i][j]==m){x=i;y=j;//cout<<"检测xy"<<x<<" "<<y;//cout<<"检gxy"<<g[i][j];//cout<<"检m"<<m;break;}}}for(i=0;i<3;i++){for(j=0;j<3;j++){if(g[i][j]==9){nullx=i;nully=j;// cout<<"检测nxy"<<nullx<<" "<<nullx;// cout<<"检gnxy"<<g[i][j];break;}}}flag=0;if(nullx==0&&nully==0){if(x==0&&y==1) flag=1;if(x==1&&y==0) flag=1;}else if(nullx==0&&nully==2){if(x==0&&y==1) flag=1;else if(x==1&&y==2) flag=1;}else if(nullx==2&&nully==0){if(x==1&&y==0) flag=1;else if(x==2&&y==1) flag=1;}else if(nullx==2&&nully==2){if(x==1&&y==2) flag=1;else if(x==2&&y==1) flag=1;}else if(nullx==1&&nully==1){if(x==0&&y==1) flag=1;else if(x==1&&y==0) flag=1;else if(x==2&&y==1) flag=1;else if(x==1&&y==2) flag=1;//   cout<<"检flg"<<flag;//cout<<"检x"<<x;//cout<<"检y"<<y;}else if((nullx==1&&nully==0)||(nullx==1&&nully==2)){if((x==nullx+1||x==nullx-1)&&y==nully) flag=1;if(x==1&&y==1) flag=1;}else if((nullx==0||nullx==2)&&nully==1) {if((y==nully+1||y==nully-1)&&x==nullx) flag=1;if(x==1&&y==1) flag=1;}int X=x;int Y=y;//cout<<"检测"<<flag;if(flag==1){//cout<<"检X"<<X;//cout<<"检Y"<<Y;int T1=g[x][y];//8int T2=g[nullx][nully];//9//cout<<"检gxy"<<T1;//cout<<"检gnxny"<<T2;
int t1,t2;//g[x][y]=9,g[nx][ny]=8t1=x;t2=y;
//cout<<"检t1"<<t1;//cout<<"检t2"<<t2;
x=nullx;y=nully;
nullx=t1;nully=t2;//交换下标
//cout<<"检nx"<<nullx;//   cout<<"检ny"<<nully;g[x][y]=T1;//8g[nullx][nully]=T2;//9//cout<<"检gxy"<< g[x][y];//cout<<"检gnxy"<< g[nullx][nully];
int c=0;int C=0;
for(i=0;i<3;i++){for(j=0;j<3;j++){//cout<<"检g"<<g[i][j];}}int f=0,v=0;for(i=0;i<3;i++){for(j=0;j<3;j++){if(g[i][j]!=a[v]&&g[i][j]!=9){//不相同 ////cout<<"检gij"<<g[i][j]<<" "<<a[v];f=1 ;break;}else if(g[i][j]!=9&&g[i][j]==a[v]){//cout<<"检f"<<f<<" "<<v;v++;
}}}int z=print2(f,g,nullx,nully);return z;
}
else{moveprint();
}
}int main(){int i,j;int flag=0,rc=0,count=0,r;srand((unsigned)time(NULL));int* a=new int[8];int (*g)[3]=new int[3][3];for(i=1;i<=8;i++)//数列a {a[i-1]=i;//cout<<"检a"<<i-1<<" "<<i;}int* b=new int[8];while(count<8){//随机b r=rand()%8+1;flag=0;for(j=0;j<8;j++){if(b[j]==r){//已存在 flag=1;}}if(flag!=1){b[count]=r;count++;   }} int s;cout<<"\t\t\t请按①进入游戏\n";cin>>s;if(s==1) {print1(b,g);
}else{cout<<"\t\t\t已经退出!\n";
}
int m,n;
int Z=0;while(1) {if(Z!=1){cout<<"\t\t\t请输入需要移动的数字\n";cin>>m;Z=move(m,g,b,a);//cout<<"检Z"<<Z;
}else{break;
}
}}

代码运行如下:

关于9宫格拼图,C++相关推荐

  1. 基于canvas+uniapp的9宫格拼图游戏组件

    基于 canvas+uniapp 的 9 宫格拼图游戏 涉及到的 canvas 基础知识 创建画布 <canvas id="'c1'"></canvas> ...

  2. JavaScript经典进阶:javascript – 9宫格 – 拼图

    项目地址:javascript – 9宫格 – 拼图 总体思路 切图 ==>打乱顺序 ==>拖拽实现数据交换 实现过程中,遇到的问题 数据随机排序方法 Array.sort( functi ...

  3. 基于Canvas的N宫格拼图

    最近使用Canvas实现了一个N宫格拼图的游戏,感觉效果还是很不错的,不过我还是觉得九宫格就好了,太多了反而就复杂了.这里我就主要讲述九宫格的实现过程,其它的只是把数据结构扩大一下了. 实现效果 图片 ...

  4. 十六宫格拼图(A*/IDA*)(曼哈顿距离)

    传送门 迭代加深:通过单纯的深度优先搜索无法找出初始状态到最终状态的最短路径,但是重复进行限制最大深度的深度优先搜索(深度受限搜索)却可以.简单来说,就是在循环执行深度受限搜索的过程中逐步增加限制值l ...

  5. 使用自动化处理某手游四宫格拼图问题

    今天玩游戏的时候碰到个四宫格的小游戏,想试试能不能通过自动化的方式自动完成. 游戏本身逻辑很简单,就是四个小块拼成一个完整图案,但让它自动点击完成的话,这个思考的过程比较有意思. 游戏图: 初始四个无 ...

  6. IDA*算法解十六宫格拼图问题

    IDA*算法, ID(Iterative Deepening)指的是迭代加深. 它的思想是重复进行限制最大深度的深度优先搜索(此限制从某个最小值遍历到最大值), 也称为深度受限搜索. 一般情况下, 为 ...

  7. A*算法实现9宫格拼图游戏最优解

    目标:用A*算法解决拼图的最优路径解 A*算法介绍 ​A* (A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是许多其他问题的常用启发式算法. 在计算机科学中,A*算法作为Dij ...

  8. 【java】16宫格拼图游戏项目

    这个游戏虽然不是很难,但是从中能帮我巩固很多多东西,比如接口的实现.类的继承等这些java面向对象的特点知识我都在写这个项目的过程中有了更深的理解. 这个游戏的机制就是监听到键盘中的上下左右方向键来对 ...

  9. html编写四宫格展示图片,七彩色图片排版工具一键制作四宫格图片教程

    七彩色图片排版工具是一款好用的图片排版工具.我们可以使用七彩色图片排版工具将电脑中的图片进行一键一键排版: 进入下载七彩色图片排版工具 2.1 官方版 大小:3.36 MB 日期:2019/2/25 ...

最新文章

  1. 准备换工作了,有2家公司都有吸引的地方,帮忙抉择下
  2. 学好python工资一般多少钱-学会Python后,月薪40k是什么水平?
  3. 【mysql】str_to_date()字符串转化为日期类型
  4. 武汉国家光电实验室计算机考研,2018年华中科技大学武汉国家光电实验室408计算机学科专业基础综合之计算机操作系统考研基础五套测试题...
  5. 垃圾分类毕设java程序_垃圾“拍一拍”,分类不用愁!生活垃圾分类查询小程序上线啦...
  6. Android样式开发--selector
  7. excel 表生成insert语句。
  8. 用Python开始机器学习(2:决策树分类算法)
  9. 稳压二极管型号对照表
  10. JAD文件各属性解释
  11. 【VFB】复制VB代码(VB与FB的差异)(VFB教程3-6)
  12. Node.js+Express+MongoDB 建站实例
  13. 【贪玩巴斯】一文通过操作实例——学会 知网专业检索 2022年3月21日
  14. 【论文笔记】基于深度学习的视觉检测及抓取方法
  15. Redis(八):zset/zadd/zrange/zrembyscore 命令源码解析
  16. 综合布线(楼栋)材料清单
  17. FreeNAS 0.72 安装 mldonkey 3.0.6
  18. 血气方刚的年轻小伙竟去做家政小哥,是怎样成功逆袭转行的
  19. 输入自变量范围matlab,matlab已知约束条件求自变量范围
  20. 蚁剑加密 WebShell 过杀软

热门文章

  1. 联想手机android在哪里,目前唯一一只支持北斗三号信号系统的联想Z6青春版实力在哪?...
  2. 3dMax DTS Exporter附带说明文档
  3. 三星s6 显示无服务器,科普小米手机无服务怎么办及三星S6来电报号功能开启方法...
  4. Redis系列-第四篇持久化与事务
  5. java获取抓包数据中的data_【成都】金数据 | 前端、测试、高级Java、Ruby等岗位热招中!...
  6. 使用OpenGL挑战抖音蓝线特效
  7. Python竟然能监控抖音?这也太刺激了!
  8. 固定资产计提折旧方法
  9. 2011年度-平滑过渡
  10. GAN图像生成-pyotrch