- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这个游戏还没有完成,我已经创建了球击中棋盘的部分,但是玩起来有问题,那就是球卡在棋盘上了。为了更好地理解和理解我在下面附上了一张图片,请观看它并让我知道你对这个错误的看法。
public partial class PingPong : Form
{
public PingPong()
{
InitializeComponent();
timer1.Enabled = true;
timer1.Interval = 30;
}
int mx = 5;
int my = 5;
private void timer1_Tick(object sender, EventArgs e)
{
if (ball.Bounds.IntersectsWith(boardCenter.Bounds))
{
mx = mx * -1;
my = my * 1;
}
else if (ball.Location.Y >= this.ClientSize.Height - ball.Height)
{
mx = mx * 1;
my = my * -1;
}
else if (ball.Location.Y <= 0)
{
mx = mx * 1;
my = my * -1;
}
else if (ball.Location.X >= this.ClientSize.Width - ball.Width)
{
mx = mx * -1;
my = my * 1;
}
ball.Location = new Point(ball.Location.X + mx, ball.Location.Y + my);
}
private void PingPong_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up)
{
board.Location = new Point(board.Location.X, board.Location.Y - 4);
}
else if (e.KeyCode == Keys.Down)
{
board.Location = new Point(board.Location.X, board.Location.Y + 4);
}
}
}
最佳答案
在我看来(根据您提供的视频)您的逻辑实际上是正确的,问题看起来是球从后面击中板,因此在窗口左侧之间快速计算碰撞和电路板的背面。
您应该修改您的代码,以便在与板相同的 X 位置计算与窗口左侧的碰撞。例如,如果棋盘 X 位置固定在距屏幕左侧 20 处,则使小球与窗口左侧的碰撞发生在 20 处,这样小球将永远无法到达董事会。 (同样的原理适用于屏幕右侧和第二个板)。
关于c# - 将球卡在棋盘上(乒乓球比赛),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36638424/
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
编辑 2: Pastebin link to the full ball, bat, and AIbat classes. 编辑:我已经更新了 turbo 代码,只是对其进行了更好的评论。我也有一个链
我一直在研究乒乓球着色,并认为在我上一个问题之后我已经破解了它。但是,随着对着色器的进一步了解,看起来虽然我能够在 FBO A 和 FBO B 上运行着色器,但 A 的输出并未用作 B 的源。换句话说
我是编程新手。基本上刚刚完成了几个教程和准系统说明。我想编写 pong 代码让自己开始尝试自己做一些事情,但我遇到了一些障碍。出于某种原因,我生成的球根本不会与我的玩家 1 Racket 互动,但它会
我是一名优秀的程序员,十分优秀!