关于9宫格拼图,C++

article/2025/9/28 2:08:48

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

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

指针: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;
}
}}

代码运行如下:

 


http://chatgpt.dhexx.cn/article/BpqJ0vxc.shtml

相关文章

html用九张图片做出九宫图,用ps如何将九张照片做成九宫格?

如何用PS将九张照片做成九宫格&#xff0c;并且随时可以更换呢。下面跟搞设计一起来做一下吧。 ↑ 首先准备好九张照片 ↑ 打开PS&#xff0c;新建一个1000x1000的文件 ↑ 选择矩形工具 ↑ 创建一个300x300的矩形 ↑ 随便填个颜色&#xff0c;把图层命名为1 ↑ 选择视图-新建参…

python将图片裁剪成九宫格

要求&#xff1a;将图片裁剪成九宫格&#xff0c;宫格图片位置打乱 思路&#xff1a; 判断该图片长宽是否能被3整除&#xff0c;不能需要对图片进行裁剪&#xff08;我的是边角裁剪&#xff09;双重for循环&#xff0c;根据步长对图片数组进行切片达到裁剪效果random.shuffle(…

html手机9张图片显示,怎么把一张图片分成9张(手机美图秀秀九宫格在哪)

手机拍照片咋做成九宫格&#xff1f;只需4步&#xff0c;这么发朋友圈真好看&#xff01; 国庆中秋双节已过&#xff0c;你拍了照片吗&#xff1f;很多朋友拍了照片后&#xff0c;喜欢发朋友圈分享。 今天教大家一招&#xff0c;让你发的朋友圈更好看&#xff0c;用手机就能完成…

九宫格拼图

九宫格拼图的实现&#xff1a; 效果为下图所示&#xff0c;实现拼图的完成&#xff0c;这里附上完整的代码&#xff0c;需要注意的是在产生随机的初始状态时&#xff0c;是随机两两交换&#xff0c;才能保证其一直是1-9的这样的情况&#xff0c;其他具体响应的设计在程序注释中…

Python切割九宫格图

Python切割九宫格图 朋友圈经常有人发九宫格图片&#xff0c;但那是使用特定的图片软件制成的或就是九章不同的照片本次我们用 Python 来制一张 九宫格主体是一个 3x3 的正方形矩阵 有9张对应的图片组成一般的软件&#xff0c;在遇到非矩阵型图片时难以完成重组&#xff0c;且…

边框图片_九宫格切图

边框图片 原理示意图&#xff1a; 九宫格切图法,保留四个角边框样式,拉伸平铺或环绕方式设置图片四条边.以达到边框样式相同大小可以改变的效果 组合写法&#xff1a; border-image: url("images/border.jpg") 167/20px round;拆分写法&#xff1a; border-image…

python和C++代码实现图片九宫格切图程序(附VS2015配置Opencv教程)

1、python代码实现图片分割成九宫格 需要包含的库&#xff0c;没有下载安装的&#xff0c;需要自己安装哦。 实现原理很简单&#xff0c;就是用PIL库不断画小区域&#xff0c;切下来存储成新的小图片。 假设每一个格子的宽和高分别是w、h&#xff0c;那么第row行&#xff08…

android九宫格切图,拼图九宫格切图app

拼图九宫格切图app是一款比较不错的手机九宫格照片编辑拼图软件&#xff0c;任意选择需要切割的图片&#xff0c;切割成九宫格拼图&#xff0c;轻松制作&#xff0c;喜欢发朋友圈的朋友们有福了&#xff0c;还可以自定义美化滤镜选择&#xff0c;添加文字&#xff0c;贴纸等&am…

赛效:电脑在线九宫格切图怎么制作?

九宫格切图的好处是提高作品的美观度&#xff0c;九宫格切图可以将原本散乱的图片元素进行有序的排列&#xff0c;使作品更具美感&#xff0c;提高观众的观赏体验。另外&#xff0c;还能增强作品的可读性&#xff0c;九宫格切图可以将作品中的主体与背景进行分离&#xff0c;使…

用canvas实现九宫格切图之手把手教学(uniapp+ts)

uniapp用canvas实现九宫格切图&#xff08;typescript&#xff09; 前言上传图片展示图片画布下载图片最终效果总结 前言 这几天工作比较轻松&#xff0c;所以就有时间发下呆&#xff0c;突然想起前段时间用了一个九宫格切图软件&#xff0c;所以就自己试着开发下&#xff0c;…

PS把图片切成九宫格

目录 PS把图片切成九宫格第一步&#xff0c;导入图片到PS第二步&#xff0c;设置裁剪第三步&#xff0c;导出第四步&#xff0c;效果图 PS把图片切成九宫格 PS把图片切成九宫格,把图片设置切片&#xff0c;不仅可以切成九宫格&#xff0c;也可以设置22&#xff0c;44&#xff0…

九宫格图片怎么操作?这里有你想要的方法

不知道平时小伙伴们在发朋友圈的时候有没有注意过很多人的朋友圈都会将很多图片拼起来&#xff0c;凑成九宫格图片来发送。这是因为朋友圈的限制&#xff0c;无法一次发完&#xff0c;每次最大上传只有9长照片。所以就有很多朋友一次拼齐9个图片在一起实现发布更多的图片&#…

html用九张图片做出九宫图,九宫切图软件 如何快速把照片做成九宫格切图

在微博时尚流行的图片展示上&#xff0c;九宫切图是当下最流行的一种&#xff0c;一张非常普通的照片经过了九宫切图软件的处理&#xff0c;变成非常漂亮的九宫图片&#xff0c;是不是美观大大提升了。尤其是在把自己自拍的照片做成九宫图展示&#xff0c;让人更有一种不一样的…

九宫格拼图怎么拼?分享两个简单的操作

日常生活中发朋友圈的时候&#xff0c;小伙伴是不是有很多照片想分享到朋友圈呢&#xff1f;但是因为朋友圈的限制&#xff0c;不能一次全发。有很多朋友发现很多朋友可以把一张图片剪成9格&#xff01;看起来很棒&#xff0c;那九宫格拼图怎么拼的呢&#xff1f;今天就和大家分…

unity的九宫格切割

我们新建Button&#xff0c;然后我们需要一张图片 修改图片类型如下&#xff1a; Editor GUI and Lagacy GUI适用于ngui&#xff0c;而Sprite适用于ngui 然后点击Sprite Editor&#xff0c;如果首次操作会报错&#xff0c;请按如下操作&#xff1a; 点击Package Manager-》将…

怎么制作九宫格切图?这两个方法非常简单

怎么制作出九宫格切图呢&#xff1f;相信大家在微信朋友圈看到过朋友发的九宫格切图照片&#xff0c;把一张照片切割成九份&#xff0c;然后按照一定的顺序发到朋友圈中&#xff0c;就会形成一个效果非常好的九宫格照片&#xff0c;我们自己也想发这种形式的朋友圈&#xff0c;…

matting之trimap生成_膨胀腐蚀

在抠图技术中三分图&#xff08;trimap)经常被用到&#xff0c;通常使用的方法是膨胀腐蚀(一般在去除噪声的时候先腐蚀再膨胀)。 1. import os import numpy as np import cv2def random_dilate(alpha, low1, high5, modeconstant):"""Dilation. erode"&…

抠图算法-Alpha Matting

目录 概述graph cutAlpha Matting 概述 对于抠图&#xff0c;比较简单的方法是图像分割&#xff0c;这是很老的方法&#xff0c;但这其实算不上真正意义的抠图&#xff0c;因为他的主要目的是用于图像之间块与块的分割。典型的就是grabcut算法&#xff0c;opencv上面有相应的优…

Background Matting V2 学习

论文&#xff1a; [2012.07810] Real-Time High-Resolution Background Matting (arxiv.org) GitHub项目源码&#xff1a;GitHub - PeterL1n/BackgroundMattingV2: Real-Time High-Resolution Background Matting 目录 论文学习 方法设计&#xff1a; 网络模型&#xff1a; 训…

matting系列论文笔记(三):Boosting Semantic Human Matting with Coarse Annotations

matting系列论文笔记&#xff08;三&#xff09;&#xff1a;Boosting Semantic Human Matting with Coarse Annotations 论文链接: CVPR2020 Boosting Semantic Human Matting with Coarse Annotations [1] 代码&#xff1a;暂无 文章目录 matting系列论文笔记&#xff08;三…