2017-04-05 2 views
1

débutant, ne blâmez pas :), je suis actuellement le codage d'un jeu simple « pingpong » en C#, juste pour pratiquer un peu parce que c'est ma deuxième semaine d'apprendre cette langue. J'ai essayé de faire KeyEvents maintenant faire « picsSchlägerRechts » déplacer vers le haut et vers le bas, Wich a bien fonctionné, mais je ne parviens pas à faire une « restriction » pour elle de ne pas sortir de mon panneau. des idées?(C#) ne parvenez pas à imposer des restrictions pour déplacer l'objet

private static bool conditionUP ; 
    private static bool conditionDown ; 


    private void frmPingPong_KeyDown(object sender, KeyEventArgs e) 
    { 

     { 
      if (!(picSchlägerRechts.Location.Y == 0 && picSchlägerRechts.Location.Y == 249)) { 
       conditionDown = true; 
       conditionUP = true; 
      } 

      if (e.KeyCode == Keys.W && conditionUP == true) 
      { 
       picSchlägerRechts.Location = new Point(picSchlägerRechts.Location.X, picSchlägerRechts.Location.Y - ms); 


        if (picSchlägerRechts.Location.Y == 0) 
        { 
         conditionUP = false; 

        } 


      } 
      if(e.KeyCode == Keys.S && conditionDown == true) 
      { 
       picSchlägerRechts.Location = new Point(picSchlägerRechts.Location.X, picSchlägerRechts.Location.Y + ms); 

       if (picSchlägerRechts.Location.Y == 298) 
       { 
        conditionDown = false; 


       } 
      } 
+0

ce qui est 'ms'? au lieu de faire == utiliser quelque chose comme '<= 0' and '> = 249' –

+0

désolé, a oublié d'inclure cela, il est juste ma variable pour la movementspeed. –

+0

si votre movementSpeed ​​est réglé sur une variable qui Ignore 0 il ne sera jamais frappé votre condition de '== 0' utiliser juste' <= 0' à la place et peut-être logique même mettre que si l'emplacement moins la vitesse de déplacement est inférieur à 0 il suffit de le mettre à 0 à la place. –

Répondre

1

Vous pouvez essayer quelque chose comme ça pour qu'il vérifie pour vous assurer que votre Y ne va pas supérieur ou inférieur à max/min y

private void frmPingPong_KeyDown(object sender, KeyEventArgs e) 
{ 
    var maxY = 298; 
    var minY = 0; 

    if (e.KeyCode == Keys.W) 
    { 
     var newY = picSchlägerRechts.Location.Y - ms; 

     if (newY < minY) 
     { 
      newY = minY; 
     } 
     picSchlägerRechts.Location = new Point(picSchlägerRechts.Location.X, newY); 
    } 
    else if (e.KeyCode == Keys.S) 
    { 
     var newY = picSchlägerRechts.Location.Y + ms; 

     if (newY > maxY) 
     { 
      newY = maxY; 
     } 
     picSchlägerRechts.Location = new Point(picSchlägerRechts.Location.X, newY); 
    } 
} 
+0

A travaillé parfaitement, merci pour votre aide! –

+0

J'espère que vous comprenez pourquoi celui-ci fonctionne car il vérifie que le cas d'utilisation de la nouvelle valeur d'emplacement est supérieur ou inférieur au minimum et au maximum au lieu de vérifier cette valeur exacte. –

+0

J'ai parfaitement compris votre code après l'avoir relu 2-3 fois. –