Я создаю захватывающую игру, в которой яйца отбрасываются. В моей панели подклассе, у меня есть этот кодПеремещение местоположения PictureBox с потоком
public void startGame()
{
Thread t = new Thread(new ThreadStart(game));
t.Start();
}
private void game()
{
bool run = true;
int level = 1;
while (run)
{
Egg egg = dropper.selectEgg();
int speed = dropper.getSpeed(level);
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate {
this.Controls.Add(egg);
egg.setInitialLocation(dropper.selectPosition());
int x = egg.Location.X;
int y = egg.Location.Y;
while (y <= 1000)
{
egg.setCurrentLocation(x, dropper.drop(egg, speed));
y = egg.Location.Y;
}
}));
}
else
{
this.Controls.Add(egg);
egg.setInitialLocation(dropper.selectPosition());
int x = egg.Location.X;
int y = egg.Location.Y;
while (y <= 1000)
{
egg.setCurrentLocation(x, dropper.drop(egg, speed));
y = egg.Location.Y;
}
}
Thread.Sleep(3000);
}
}
Яйцо является подклассом PictureBox, и я хочу, чтобы изменить его расположение на петле, так это выглядит, как яйца падают. Я использую подкласс EggDropper с помощью этого метода:
public int drop(Egg egg, int speed)
{
int y = egg.Location.Y;
y += speed;
return y;
}
но каким-то образом, я не вижу какой-либо из объектов яичные бросающих. Я предполагаю, что это проблема с потоком, обращающимся к подклассу PictureBox? Но я не могу найти какое-либо решение в Интернете.
спасибо, что заранее.
Извините, я немного смущен. В drop() я просто установил, чтобы он возвращал позицию y. И в игре(), где я добавил egg.setCurrentLocation(). Он все еще не работает. –
Можете ли вы изменить свой вопрос с помощью кода, который у вас есть сейчас? –
Отредактировано! Большое спасибо. –