我是靠谱客的博主 无语发夹,最近开发中收集的这篇文章主要介绍用easy-x可视化窗口实现马踏棋盘,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • easy-x插件需要自己在官网下载(附上链接)
    https://easyx.cn/
  • 安装好插件后用vs2019打开
  • 然后话不多说,附上源码
#include <stack>
#include <iostream>
#include<time.h>
#include<graphics.h>
using namespace std;
struct node
{
	int x;
	int y;
};
IMAGE img1, img2;
int map[8][8] = { 0 };
int step[8][2] = { {-2,-1} ,{-2,1},{2,-1},{2,1},{-1,-2},{-1,2},{1,-2},{1,2} };
int visit[8][8] = { 0 };
bool bound(int x, int y) {
	if (x < 8 && x>=0 && y < 8 && y>=0 ) {
		return true;
	}
	return false;
}
void draw_number() {
	for (int i = 0; i < 8; i++) {
		for (int j = 0; j < 8; j++) {
			if (map[i][j] != 0) {
				//设置字体的颜色
				//当它行数加上列数为奇数的时候
				if ((i + j) % 2 == 1) {
					setbkcolor(RGB(143,89,45));
				}
				//当它行数加上列数为偶数的时候
				else {
					setbkcolor(RGB(224,204,171));
				}
				//把字体进行可视化
				char ch[10] = " ";
				sprintf_s(ch, "%d", map[i][j]);
				settextstyle(35, 20, "楷体");
				settextcolor(RGB(rand() % 256, rand() % 256, rand() % 256, ));
				outtextxy( 60+ 64.5 * j, 60 + 64.5 * i, ch);
			}
		}
	}
}
int find_path(int x,int y) {
	//设置随机数种子
	srand((unsigned)time(NULL));
	//用栈来储存结构体
	stack<node>s;
	node p;
	p.x = x;
	p.y = y;//初始化马的位置(x=1,y=0)
	s.push(p);
	visit[p.x][p.y] = 1;
	int num = 1;		//进行初始化
	map[p.x][p.y] = num;
	putimage(0, 0, &img1);
	draw_number();
	putimage(42 + 64.5 * p.y, 42 + 64.5 * p.x, &img2);
	Sleep(1000);
	while (!s.empty()) {
		int t = 0;	//逻辑判断,无路可走情况
		for (int i = 0; i < 8; i++) {
			p = s.top();
			node h = p;
			h.x = p.x + step[i][0];
			h.y = p.y + step[i][1];
			if (visit[h.x][h.y] == 0 && bound(h.x, h.y)) {//判断位置是否有效
				//可视化棋盘
				putimage(0, 0, &img1);
				draw_number();
				putimage(42 + 64.5 * h.y, 42 + 64.5 * h.x, &img2);
				s.push(h);
				//当马每踏过一个网格就把数字num+1
				num++;
				map[h.x][h.y] = num;
				visit[h.x][h.y] = 1;
				t = 1;
				//间隔一秒便于观察
				Sleep(500);
			}
		}
		if (t == 0) {
			s.pop();//走到尽头回溯
		}
	}
	return 0;
}
int main()
{
	//创建可视化窗户
	
	loadimage(&img1, "1.jpg");
	loadimage(&img2, "2.png");
	//开始马踏棋盘
	int x;
	int y;
	cout << "请输出马的初始位置:"<<endl;
	cin >> x;
	cin >> y;
	initgraph(600, 600);
	find_path(2,3);
	//结束时候的标志
	MessageBox(NULL, "马踏棋盘完成!", "消息", MB_OK);
	closegraph();
}

  • 资源文件是放到这个文件夹里的:
    在这里插入图片描述
  • 运行后结果是这样子的:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

最后

以上就是无语发夹为你收集整理的用easy-x可视化窗口实现马踏棋盘的全部内容,希望文章能够帮你解决用easy-x可视化窗口实现马踏棋盘所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部