小球进蓝洞(运算符重载)

该博客介绍了小球进蓝洞的游戏,涉及运算符重载在游戏逻辑中的应用。游戏要求在n*m的矩阵中,通过调整三角形块使小球从红洞出发并最终进入蓝洞。文章详细阐述了如何使用C++定义基类CPoint、CHole、CTriangle和CBall,并重载运算符以实现三角形块的旋转和小球的碰撞计算。此外,还讨论了游戏类的设计和深度优先搜索(DFS)的解题策略。
摘要由CSDN通过智能技术生成

小球进蓝洞(运算符重载)

题目描述

小球进蓝洞游戏是指在n*m(n,m取值在2到10之间)的方阵中,设置红洞、蓝洞和若干绿色三角形块,调整绿色三角形块,使小球从红洞洞口方向出发,经三角形块斜边反射,不断改变前行方向,最终从蓝洞洞口方向进入蓝洞。例如:下图左图的初始游戏布局中,调整三角形块如右图所示,小球将沿蓝色虚线进入蓝洞。
在这里插入图片描述
红洞,蓝洞洞口位于方块的右、上、左、下四个方位之一,分别用数字0、1、2、3表示。例如:上图红洞洞口在方块的右边,用0表示。蓝洞洞口在方块的下方,用3表示。
单击三角形块可调整其方向,变化顺序如图(a)-(d)(分别用数值1-4表示)的顺序,在四个方向中不断循环。例如:单击上图左图中三角形块三次,即变为上图右图中的三角形块。
在这里插入图片描述
小球从红洞出发,直线前行,碰到三角形块的边则改变前行方向。小球改变路线的规则为:小球碰到直角边,则沿原方向的反方向前行,如下图左边的直线所示;小球碰到斜边,则沿90度改变前行方向,如下图右边的两条直线所示(直线的箭头方向可改变,从水平右边进入,变为向上前行)。

在这里插入图片描述

红洞、蓝洞、小球、三角形块都可以用x,y坐标加方向表示,定义基类CPoint类:属性:x,y,dir(方向),方法:带参构造,x,y,dir的公有访问接口,重载输出,输出x,y,dir。其它方法可根据需要自行添加。

定义CHole类:公有继承CPoint类。其它方法可自行添加。

定义三角形块CTriangle类:公有继承CPoint类。新增方法:重载前++,实现单击三角形块按上图(a)-(d)顺序调整三角形块方向。其它方法可自行添加。

定义CBall类:公有继承CPoint类。新增方法:重载*=,实现小球与三角形块碰撞的功能(改变小球前行方向)。

定义游戏类:属性:方阵大小n,m; CHole对象红洞、蓝洞;三角形块个数k,三角形块对象数组(存储三角形块数据)。方法:构造函数,play实现游戏功能,设置三角形块的形状,使小球从红洞出发,进入蓝洞。重载输出,按三角形块的输入顺序输出调整后的各三角形块坐标和方向。

主函数根据输入、输出编写。

假设n*m方阵左上角坐标为(0,0),右下角坐标为(n-1,m-1)。

输入

测试次数t
方阵大小n m
红洞坐标 洞口方位
蓝洞坐标 洞口方位
三角形块个数m
m行,每个一个三角形块数据:坐标 方向

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值