2013-09-25 3 views
1

Я делаю анимацию катеров, перемещающихся с одной стороны формы окна на другую сторону, но я должен уведомить пользователя, когда лодка коснется края экран, потому что он выиграл. Кто-нибудь знает, как это сделать? Это то, что я до сих пор:Проверьте, находится ли анимация на краю экрана в winform

private void playerTimer_Tick(object sender, EventArgs e) 
    { 
     for (int i = 0; i < 6; i++) 
     { 
      if (PlayersActive[i]) 
      { 
       Players[i].Move(randomNumber.Next(3,10)); 
       //HERE IS WHERE I SHOULD CHECK TO SEE IF A BIKE HAS WON 
       //If player location is at the edge of the screen 

      } 
     } 
     this.Invalidate(); 
    } 

код для перемещения лодки:

private void GameForm_Paint(object sender, PaintEventArgs e) 
    { 

     Graphics g = e.Graphics; 

     // Set variables used to store logic to default values. 
     int playersStillRacing = 0; 


     for (int i = 0; i < 6; i++) 
     { 
      // Check to see if the current player is still racing. 
      if (playersRacing[i]) 
      { 
       // Incremement playersStillRacing. 
       playersStillRacing++; 

       // Set the playerPictureBox associated with this player to the new location 
       // the player is located at. 
       playerPictureBoxes[i].Image = Players[i].Image; 
       playerPictureBoxes[i].Left = Players[i].X; 
       playerPictureBoxes[i].Top = Players[i].Y; 


       g.DrawImage(playerPictureBoxes[i].Image, Players[i].X, Players[i].Y); 

      } 
     } 

    } 
+0

Он включает в себя длину вашего «байка», как вы визуализируете свой «байк» (используя какой-либо элемент управления напрямую или просто рисуете его?) –

+0

Чтобы нарисовать байк, я использую событие paint, а затем drawImage, потому что это image Я изменил размер изображения в Интернете. – Mirimari

+0

Как вы увеличиваете количество игроков [i] .X? Если вы берете значение Players [i] .X и ширину игроков [i] .Image, то вы сможете увидеть, приближается ли изображение к концу. – MasterXD

ответ

3

бы это сделать трюк? Я внесла некоторые изменения из новейшей информации, которую вы мне дали

private void playerTimer_Tick(object sender, EventArgs e) 
{ 
    for (int i = 0; i < 6; i++) 
    { 
     if (PlayersActive[i]) 
     { 
      Players[i].Move(randomNumber.Next(3,10)); 

      // EDIT BELOW in the if statement! 
      // if the edge of the picture touches the end of the screen. 
      if (Players[i].X + Players[i].Image.Width >= this.Width) 
       MessageBox.Show("Congrats! Player" + i.ToString() + "won!"); 

      //Players[i].X is the X cordinates(The length) from the left side of the winform. 
      //Players[i].Image.Width is the width of the picture ofcourse :D. 
      // if X cordinates + picture width is greater than or equal to screen width. YOU WON :D 
     } 
    } 
    this.Invalidate(); 
} 

Или вы хотите что-то еще?

+0

Что осталось и ширины? Я думаю, что так происходит, но мои переменные игроки - это массив с именами игроков. – Mirimari

+0

Тогда скажите, как вы перемещаете фотографии? Можете ли вы показать мне весь код? – MasterXD

Смежные вопросы