Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - moto proiettile: distanza
Forum - C# / VB.NET - moto proiettile: distanza - Pagina 3

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:04
Giovedì, 17/06/2010
Codice sorgente - presumibilmente C# / VB.NET

  1. i += 0.15
  2.         if i = 0.15 then
  3.             attrad = Math.Atan((vely / velx))
  4.             att = attrad / Math.PI * 180
  5.             dist += ((vel ^ 2 * Math.Sin(2 * angr)) / g.Text)
  6.             dimax.Text = dist
  7.             altmax = Math.Abs((((vel ^ 2) * Math.Sin(angr) * Math.Cos(angr)) / g.Text) / 2)
  8.             almax.Text = altmax
  9.             temp += (2 * vel * Math.Sin(angr)) / g.Text
  10.             tem.Text = temp
  11.             start = proiettile.Left
  12.         end if



Hai messo un codice che deve essere eseguito una sola volta in un timer, con una condizione. Questo NON si deve fare. Scrivilo prima di avviare il timer. attrad e att non vengono usati. Poi sommi alla distanza la gittata: questo a cosa serve? Inoltre non tieni conto della posizione iniziale (nel codice non c'è menzione a nessuna textbox che indichi la posizione).

Codice sorgente - presumibilmente Plain Text

  1. proiettile.Top + proiettile.Height >= sfondo.Top


Questa condizione è verificata se il proiettile è nello sfondo... Sei sicuro che sia giusta?

proiettile.left raggiunge sfondo.width prima dell'effettiva fine dello sfondo, a meno che lo sfondo non abbia coordinata x=0 sul form. Non ti sembra più utile definire un paio di coordinate per questo proiettile invece che lavorare con quelle proprietà?
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim proX, proY As Int32
  2. proX = proiettile.Location.X - sfondo.Location.X
  3. proY = proiettile.Location.Y - sfondo.Location.Y


In questo sistema di riferimento, il punto (0,0) coincide con il vertice superiore sinistro dello sfondo, ed è coerente scrivere "If proX > sfondo.Width Then".

PM Quote
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Segnala al moderatore
Postato alle 17:26
Lunedì, 21/06/2010
Testo quotato

Postato originariamente da Il Totem:

Hai messo un codice che deve essere eseguito una sola volta in un timer, con una condizione. Questo NON si deve fare. Scrivilo prima di avviare il timer. attrad e att non vengono usati.


su questo devo darti ragione(sia sulla condizione sia su attrad e att)
att e attrad li avevo provati a usare per disegnare la parabola con graphics e non li ho più tolti
Testo quotato


Poi sommi alla distanza la gittata: questo a cosa serve? Inoltre non tieni conto della posizione iniziale (nel codice non c'è menzione a nessuna textbox che indichi la posizione).


sommando alla distanza la gittata posso fare più lanci in sequenza senza azzerrare la posizione iniziale...infatti se mi servisse calcolare la distanza raggiunta sparando tre volte: la 1° a 45° la 2° a 80° e la terza a 25 m/s anzichè 20, posso farlo senza preoccuparmi di segnarmi la distanza singola dei lanci su blocco note e fare la somma a mano...(c'è il pulsante per azzerare la posizione iniziale che azzera anche la distanza).

ho rimosso la funzione per cambiare la posizione iniziale del proiettile quando mi sono reso conto che avevo problemi non solo sulla distanza ma anche sull'altezza...
Testo quotato


Codice sorgente - presumibilmente Plain Text

  1. proiettile.Top + proiettile.Height >= sfondo.Top



Questa condizione è verificata se il proiettile è nello sfondo... Sei sicuro che sia giusta?


si, sfondo è la picturebox verde che simula il suolo,e non il cielo azzurro...(come sarebbe normale pensare)
Testo quotato


proiettile.left raggiunge sfondo.width prima dell'effettiva fine dello sfondo, a meno che lo sfondo non abbia coordinata x=0 sul form. Non ti sembra più utile definire un paio di coordinate per questo proiettile invece che lavorare con quelle proprietà?
In questo sistema di riferimento, il punto (0,0) coincide con il vertice superiore sinistro dello sfondo, ed è coerente scrivere "If proX > sfondo.Width Then".


lo sfondo ha proprio x=0 sul form.
scrivendo proiettile.left so bene a cosa mi riferisco... anche con proX lo saprei ma preferisco qualcosa di più diretto...

Ultima modifica effettuata da walker93 il 21/06/2010 alle 17:27
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo