我正在使用SFML库在C ++中制作一个Breakout游戏,我有一个“paddle”类和一个“ball”类,它们都在一个“游戏”类中更新和渲染,它使用一个渲染窗口来自“窗口”课程。
我的问题是,为了确定Ball对象是否与Paddle对象发生碰撞,我显然需要访问Paddle对象的x / y位置数据成员。我正在为每个对象使用更新(或刻度)函数,我不仅仅是将对Paddle对象的引用传递给Ball的更新函数。
实现我想要的功能的一般公认方法是什么?
这是我的Ball标题:
$this->findModel($v)
这是我的游戏更新功能:
$selectEmployee = "SELECT employeeId FROM employee WHERE status='ACTIVE'";
$queryEmployee = mysqli_query($conn, $selectEmployee);
if(mysqli_num_rows($queryEmployee) > 0){
while($employeeRow = mysqli_fetch_assoc($queryEmployee)){
$employeeId = $employeeRow['employeeId'];
$insert = "INSERT INTO attendace (employeeId, inTime, outTime, date)
VALUES ('$employeeId', '$inTime', '$outTime', '$date')";
$query = mysqli_query($conn, $insert);
}
}
答案 0 :(得分:1)
使用单独的对象实现更新球的算法。该对象知道您的所有数据:球和球,并计算新位置。
您可以将算法注入您的游戏类,该游戏类将保存指向界面的指针。这允许您在不改变Game,Ball或Paddle类的情况下更改算法。
答案 1 :(得分:0)
让你的Game
检查碰撞并妥善处理它们:
void Game::Update()
{
m_window.Update();
m_ball.Tick();
m_paddle.Tick();
if(areColliding(m_ball, m_paddle))
{
resolveCollision(m_ball, m_paddle);
}
}
在这种情况下,areColliding
和resolveCollision
可以是private
的{{1}}成员函数。