GUI设计之马的遍历

本文探讨了在GUI设计中实现象棋马的遍历问题,通过图形界面展示马在N*N棋盘上按照'马走日'规则不重复地遍历每个位置。文章介绍了基本要求和扩展要求,包括设置憋马腿的棋子,并提供了GameFrame和GamePanel类的继承结构。同时,给出了马移动的坐标偏移和蹩脚点的坐标偏移数组,以及两个测试结果,展示了不同情况下马的遍历路径。
摘要由CSDN通过智能技术生成

@[TOC]GUI设计之马的遍历(5*5)

象棋中马遍历棋盘

【问题描述】
在N*N棋盘上,任意一个位置放置一个棋子马,要能选择一套合适的移动路线,按象棋中“马走日”的移动规则不重复地遍历棋盘上每一个位置点。
【基本要求】
用图形化的界面显示结果。
样例1:
在这里插入图片描述
在这里插入图片描述

样例2:
在这里插入图片描述
在这里插入图片描述

【扩展要求】
有兴趣的同学可在棋盘上设置一个或多个憋马腿的棋子,尝试遍历过程如何完善。

样例1:
在这里插入图片描述

样例2:
在这里插入图片描述
GameFrame类继承JFrame

import javax.swing.*;
public class GameFrame extends JFrame {
   
    public GameFrame(){
   
        setTitle("象棋中马的遍历");  //标题
        setSize(600,400);//窗口大小
        setResizable(false);//禁止改变窗口大小
        this.setLocationRelativeTo(null);// 居中展示窗口
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口终止程序
    }
    public static void main(String[] args) {
   
        GameFrame frame=new GameFrame();//窗口对象
        GamePanel panel=new GamePanel();//新建一个面板
        frame.add(panel);//添加面板到窗口
        frame.setVisible(true);//可见性

    }

}

GamePanel 继承 JPanel类

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class GamePanel extends JPanel {
   
    boolean one=false;
    /* 马走日字,可能到达的8个点相对当前点的偏移坐标 */
    static int dx[] = {
    1, 2, 2, 1, -1, -2, -2, -1 };
    static int dy[] = {
    2, 1, -1, -2, -2, -1, 1, 2 };
    /* 马走日字,8个蹩脚的点相对当前点的偏移坐标 */
    static int dx_obstacle[]={
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值