Nel programma che ho realizzato (pallina ke rimbalza e ke bisogna colpire) ho creato tre form : ognuno corrisponde a una difficoltà diversa (facile, medio, difficile). Il form della difficoltà media mi funziona regolarmente (è il form originario, quello che ho creato x primo e dal quale ho sviluppato gli altri), mentre gli altri due nn funzionano. Inserisco il codice del form facile:
E' uguale a quello del form medio (ho fatto copia e incolla), ma non funziona. Ho impostato che quando carico il form, il timer è disattivato e c'è la scritta "Quando sei pronto premi una lettera" (label "premilettera"); quando si preme un tasto il timer si attiva e la scritta sparisce: questio ultimi due passaggi non li fa. Credo ci sia un problema con l'evento KeyDown del form. Mi aiutate? GRAZIE IN ANTICIPOcodice:Public Class formfacile Dim vel, vdir, hdir, i As Double Dim risp As Integer 'I commenti del codice principale (quello del Timerfac) son da riferirsi alla palla Private Sub Timerfac_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timerfac.Tick ball.Left = ball.Left + (hdir * vel) ball.Top = ball.Top + (vdir * vel) 'Rimbalza e accelera se colpisci il campo If ball.Left + ball.Width >= field.Left + field.Width Then hdir = -hdir vel = vel + 0.15 End If If ball.Top + ball.Height >= field.Top + field.Height Then vdir = -vdir vel = vel + 0.15 End If If ball.Top <= field.Top Then vdir = -vdir vel = vel + 0.15 End If 'Se passi sopra la racchetta: continua If ball.Left <= racchetta.Left + racchetta.Width Then If ball.Top + ball.Height <= racchetta.Top Then hdir = hdir vel = vel End If End If 'Se centri la racchetta: rimbalza, aggiungi 1pt e rimpicciolisciti 'Se centri la racchetta If ball.Left <= racchetta.Left + racchetta.Width Then If ball.Top + ball.Height >= racchetta.Top Then If ball.Top + ball.Height <= racchetta.Top + racchetta.Height Then 'Rimbalza hdir = -hdir 'Accelera If i < 25 Then vel = vel + 0.5 End If If i >= 25 Then vel = vel + 0.3 End If 'Aggiungi 1pt i = i + 1 End If End If End If 'Se passi sotto la racchetta: continua If ball.Left <= racchetta.Left + racchetta.Width Then If ball.Top >= racchetta.Top + racchetta.Height Then hdir = hdir vel = vel End If End If 'Se tocchi il bordo sinistro: fermati If ball.Left <= field.Left Then Timerfac.Enabled = False End If 'Quando ti fermi: appare MsgBox If Timerfac.Enabled = False Then risp = MsgBox("Il tuo punteggio è " & i & vbCrLf & "Vuoi rigiocare?", 4, "Fine partita") End If 'La racchetta non può uscire dal campo If racchetta.Top <= field.Top Then racchetta.Top = field.Top End If If racchetta.Top + racchetta.Height >= field.Top + field.Height Then racchetta.Top = field.Top + field.Height - racchetta.Height End If 'Fine codice istruzioni palla 'Se si isponde "Sì": rigioca [NON FUNZIONA] If risp = 6 Then End If 'Se si risponde "No": esci If risp = 7 Then End End If Label7.Text = vel Label2.Text = i End Sub Private Sub racchetta_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Q Or Keys.W Or Keys.E Or Keys.R Or Keys.T Or Keys.Y Or Keys.U Or Keys.I Or Keys.O Or Keys.P Or Keys.A Or Keys.S Or Keys.D Or Keys.F Or Keys.G Or Keys.H Or Keys.J Or Keys.K Or Keys.L Or Keys.Z Or Keys.X Or Keys.C Or Keys.V Or Keys.B Or Keys.N Or Keys.M Then Timerfac.Enabled = True premilettera.Visible = False End If 'Muovi palla con la tastiera If e.KeyCode = Keys.A Then racchetta.Top = racchetta.Top - 30 End If If e.KeyCode = Keys.Z Then racchetta.Top = racchetta.Top + 30 End If End Sub Private Sub formfacile_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load vel = 9 vdir = 1 hdir = 1 i = 0 Timerfac.Enabled = False End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 'Se si preme "Esci", il gioco finisce End End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Se si preme "Ricomincia", la palla viene riposizionata e si riparte Timerfac.Enabled = True ball.Location = punto.Location hdir = -hdir vdir = -vdir vel = 9 i = 0 End Sub End Class

Rispondi quotando