Visualizzazione dei risultati da 1 a 8 su 8

Visualizzazione discussione

  1. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Non per demoralizzarti ma ho l'impressione che tu stia sbagliando approccio in tutti i sensi.

    Punto primo:
    L'algoritmo che stai usando ha sicuramente qualche difetto. Se è frutto di un tuo personale lavoro e lo stai facendo a motivo di studio, ti consiglierei piuttosto di partire da qualcosa di già sviluppato e funzionante, in modo da capirne i meccanismi di funzionamento ed eventualmente procedere poi alle tue modifiche/personalizzazioni/implementazioni.

    Vedi ad esempio qualche tutorial come questo:
    https://developer.mozilla.org/en-US/..._off_the_walls

    Nota che si tratta di un gioco ispirato al classico "breakout"; quel tutorial ha 10 step che illustrano lo sviluppo fino ad ottenere un gioco completo, ma ho linkato il 3° che riguarda la parte in cui si deve determinare la collisione della pallina con i limiti dell'area di gioco e quindi il rimbalzo nel verso opposto (che è ciò che stai cercando di ottenere).


    Punto secondo :
    A prescindere dallo sviluppo in sé, il modo che stai usando per determinare possibili "bug" nel codice è alquanto impreciso perché non può darti conferma sulla causa del malfunzionamento.

    Stranamente invece, non viene eseguita l'istruzione if (y>= 550 || y<=10){dy=-dy}, cioè se
    (y>= 550 || y<=10) è true non sia dy=-dy, ma dy resta dy.
    Per controllare quanto ho detto, in alto ho scritto in due caselle di testo i valori di y(top) e della condizione true o false di (y>= 550 || y<=10).
    Tu stai semplicemente monitorando il risultato di quella condizione (che restituisce un valore corretto) e da questo hai arbitrariamente determinato che la precedente condizione non viene eseguita. In realtà stai tralasciando quello che effettivamente deve essere considerato per capire se quella condizione è vista oppure no, che più che altro è ciò che sta al suo interno (la variabile dy).

    Sarebbe quindi più opportuno monitorare quella variabile (oltre al valore restituito dall'espressione nella condizione).

    Ti posso assicurare infatti che quella condizione sta funzionando e fa esattamente quello che gli hai detto di fare; per cui disapprovo la tua conclusione.

    Per farla semplice, puoi verificare inserendo una cosa del genere subito dopo quella stessa condizione:
    codice:
    console.log(dy)
    Controllando sulla console del tuo browser potrai verificare che il valore diventa negativo appena si verifica quella condizione.

    Tutto quindi funziona come tu gli hai detto di fare; ciò che hai affermato nell'oggetto della discussione non è corretto.

    Per il resto, quando dici che la condizione per dx viene eseguita ma stranamente non hai lo stesso risultato per dy, questo è legato al fatto che il valore di dy viene "alterato" da un'ulteriore espressione prima di quella condizione, a differenza del valore di dx che resta tale prima che sia eseguita la relativa condizione.

    Questa è l'espressione che stai usando per variare dy:
    codice:
    dy=dx*Math.tan(alfa*3.14159/180);
    Sinceramente non so a cosa ti serva messa lì; se infatti la tolgo mi pare che il tutto funzioni come dovrebbe

    In conclusione, stai sbagliando qualcosa da qualche parte nel tuo algoritmo, che non riguarda la condizione da te incriminata; per questo sarebbe meglio considerare di iniziare da un qualche tutorial (vedi punto primo), sempre che tu non lo abbia fatto e magari ti sei perso poi nella personalizzazione

    Perdona la divagazione, ma chiaramente i miei vogliono essere solo dei consigli, poi vedi tu come ritieni sia meglio procedere.

    Buon proseguimento.


    EDIT: scusami br1 non avevo visto il tuo intervento e che avevi già fornito la soluzione
    Ultima modifica di KillerWorm; 16-03-2018 a 18:32
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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.