Visualizzazione dei risultati da 1 a 2 su 2

Discussione: C# Problema movimenti

  1. #1

    C# Problema movimenti

    Ciao,il problema è questo ho creato 3 form,nell'ultimo form (il terzo) c'è un button che si dovrebbe muovere secondo i movimenti che decide l'utente..quindi se l'utente preme la freccia verso sinistra il button si muove verso sinistra viceversa per la freccia destra.
    Questo però non accade e non capisco il perchè vi metto qui sotto il codice che ho usato:


    bool right;
    bool left;


    private void timer2_Tick(object sender, EventArgs e)
    {
    if (right == true)
    {
    panel1.Left += 9;


    if (left == true)
    panel1.Left -= 9;


    if (right == true)
    panel1.Left += 5;


    if (left == true)
    panel1.Left -= 5;
    }
    }


    private void Form3_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.Right)
    right = true;
    if (e.KeyCode == Keys.Left)
    left = true;


    if (e.KeyCode == Keys.Up)
    panel1.Top -= 9; // 9=è la velocità


    if (e.KeyCode == Keys.Down)
    panel1.Top += 5;


    if (e.KeyCode == Keys.Escape)
    this.Close();
    }

  2. #2
    Quote Originariamente inviata da Matt.all Visualizza il messaggio
    Ciao,il problema è questo ho creato 3 form,nell'ultimo form (il terzo) c'è un button che si dovrebbe muovere secondo i movimenti che decide l'utente..quindi se l'utente preme la freccia verso sinistra il button si muove verso sinistra viceversa per la freccia destra.
    Questo però non accade e non capisco il perchè vi metto qui sotto il codice che ho usato:


    bool right;
    bool left;


    private void timer2_Tick(object sender, EventArgs e)
    {
    if (right == true)
    {
    panel1.Left += 9;


    if (left == true)
    panel1.Left -= 9;


    if (right == true)
    panel1.Left += 5;


    if (left == true)
    panel1.Left -= 5;
    }
    }


    private void Form3_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.Right)
    right = true;
    if (e.KeyCode == Keys.Left)
    left = true;


    if (e.KeyCode == Keys.Up)
    panel1.Top -= 9; // 9=è la velocità


    if (e.KeyCode == Keys.Down)
    panel1.Top += 5;


    if (e.KeyCode == Keys.Escape)
    this.Close();
    }
    Ciao Matt.all,

    provo a dirti giusto due cose sul codice che hai postato.
    Vedi tu se poi riesci a raggiungere l'obiettivo che ti sei prefissato.

    Prova ad utilizzare un'unica variabile per pilotare il left/right. Ad esempio:
    codice:
    bool right;
    Nel handler dell'evento KeyDown le condizioni dovrebbero essere:

    codice:
    if (e.KeyCode == Keys.Right)
    {
    right = true;
    }
    if (e.KeyCode == Keys.Left)
    {
    right = false;
    }
    Nelle tue condizioni le variabili erano sempre e solo settate a true, e mai a false.

    Poi nel metodo timer2_Tick, non capisco perchè valuti le condizioni in maniera doppia.
    Potresti fare:

    codice:
    if (right)
    panel1.Left += 9;
    else
    panel1.Left -= 9;
    Non so se in questo modo riesci a fare ciò che dovevi.
    Fammi sapere se hai dei dubbi

    Ciao
    gio88oig

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.