修改成功 ——(C++编程)连续旋转变化的方阵类 ,在VS2019编译生成,正常运行了

 之前一篇,出现断点,百思之后发现是析构函数不能正常通过,也无解决之法,就干脆去掉了。

琢磨一番后,代码精减到了100行之内了,这样就更简洁明了。完整代码如下(编译环境:在VS2019):

//业余爱好,学过C语言,自学C++,自己琢磨尝试编小程序
//太多不懂的,工作之余,练习
//初学C++ 语言,学习创建一个方块类Square
//方块类成员函数Show()显示,Spin()旋转
//成员属性指向二维数组的指针
#include <iostream>
#include<Windows.h>
#include<conio.h> 
using namespace std;
#define MAX 4
//全局变量存放旋转后的临时方块,可以连续旋转操作
int	temp[MAX][MAX] = { 0 };

//方块类定义
class  Square
{
	
public:
	Square(int *); //构造函数
	void Show();   //显示方块
	void Spin();   //旋转方块
private:
	int squ[MAX][MAX] = {0};  //成员属性:指向二维数组的指针
};

	//构造函数 带指针的参数 
    
	Square::Square(int* a)
	{   //成员属性初始化
		for (int i = 0; i < MAX ; i++)
		for (int j = 0; j < MAX ; j++)	
				squ[i][j] = *a++;
    }

	//显示方块函数
	void Square:: Show()
	{
		int* h = &squ[0][0];
		for (int i =0; i < MAX * MAX;h++, i++)
		{
			if ( *h== 1) cout << "█";   //绘制图案
			else     cout << "  ";       //" ";
			if ((i + 1) % MAX == 0)  cout << endl;
		}
	
	
	}
	
	//旋转方块函数定义,带返回值
	void Square:: Spin()
	{
	
		for (int i = 0; i < MAX; i++)     //顺时针旋转90度
			for (int j = 0; j < MAX; j++)
				temp[j][MAX - 1 - i] = squ[i][j];

		for (int i = 0; i < MAX; i++)
			for (int j = 0; j < MAX; j++)
				squ[i][j] = temp[i][j];

	}

int main()
{
	int a[MAX][MAX] = { {0,1,0,0 },
						{0,1,1,0 },
						{0,1,0,0 },
						{0,0,0,0 }
	                   };
	
	
	//创建一个方块类对象sq 并构造函数初始化

	Square sq(&a[0][0]);

	cout << "初始的图:" << endl;
	sq.Show();    

	cout << "第一次旋转后的图:" << endl;
	sq.Spin();    
	sq.Show();

	cout << "第二次旋转后的图:" << endl;
	sq.Spin();
	sq.Show();

	cout << "第三次旋转后的图:" << endl;
	sq.Spin();
	sq.Show();
	cout << "按任意键退出" << endl;
	_getch();

	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值