Timer kontrola razlicita brzina na razlicitim racunarima

Timer kontrola razlicita brzina na razlicitim racunarima

offline
  • Pridružio: 26 Avg 2007
  • Poruke: 13

Izvinjavam se unapred ako ova tema postoji. pretrazio sam sve zive forume i nisam mogao da nadjem odgovor. Zapravo o cemu se radi:
napravio sam prostu igricu gde se dva shape-a krecu po formi klikom na odredjene dugmice (predstavljaju 2 tenka). Njihovo kretanje sam resio Timer kontrolom, medjutim, na mom racunaru se oni sporije krecu nego kod komsije, sto me cudi jer on ima slabiji racunar (ako je do toga?).
To ovako izgleda:

Private Sub gore_Timer()
Shape1.Top = Val(Shape1.Top) - 50
End Sub

Private Sub dole_Timer()
Shape1.Top = Val(Shape1.Top) + 50
End Sub

Private Sub levo_Timer()
Shape1.Left = Val(Shape1.Left) - 50
End Sub

Private Sub desno_Timer()
Shape1.Left = Val(Shape1.Left) + 50
End Sub

Interval svih Timera je 20 (nije 20s). Molim Vas pomozite mi kako da resim tu razliku u brzini.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Timer komponenta nije precizna.
Pride toga, moze postojati problem i sa FOR..NEXT petljama. Dok se petlja izvrsava moze doci do totalnog zauzeca threada, pa tajmer za to vreme bude blokiran.

Za vecinu programskih jezika postoje posebne komponente tipa sa preciznijim tajmerima. Vidi da li postoji neka takva i za VB.



offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Nista te ne sprecava da napravis time based kretanje. Kad god aplikacija nema nista drugo da radi (obrada ulaznih podataka, logika igre, crtanje...) ti izracunas koliko je vremena proslo od poslednjeg "besposlenog" stanja i pomeris objekte u manje ili vise u zavisnosti od proteklog vremena.

offline
  • Pridružio: 26 Avg 2007
  • Poruke: 13

Da li moze neko pojasnjenje za to time based kretanje. Meni je bitno da se ta dva objekta (shape1 & shape2) krecu uvek istom brzinom, tj. da njihovo kretanje ne zavisi od racunara vec da se na svakom racunaru krecu istom brzinom.

offline
  • Pridružio: 25 Maj 2007
  • Poruke: 114
  • Gde živiš: Novi Sad, Sombor

Mislim da ti ne treba toliko Timer-a.
Evo primer kako mozes resiti, slicno kao sto je rakao Srki. Bez obzira na interval Timer1 kretace se uvek istom brzinom, samo ce se menjati ucestalost iscrtavanja. Ako intervala i Timer-u na 20 ms imaces 50 iscrtavanja u sekundi.


  1. Dim Levo1 As Boolean
  2. Dim Desno1 As Boolean
  3. Dim Gore1 As Boolean
  4. Dim Dole1 As Boolean
  5. Dim Levo2 As Boolean
  6. Dim Desno2 As Boolean
  7. Dim Gore2 As Boolean
  8. Dim Dole2 As Boolean
  9. Dim x1 As Integer
  10. Dim x2 As Integer
  11. Dim y1 As Integer
  12. Dim y2 As Integer
  13. Dim Vreme As Double
  14. Dim Razlika As Integer
  15. Dim Brzina As Integer
  16.  
  17. Private Sub Form_Load()
  18.     Desno1 = True
  19.     Dole2 = True
  20.     Vreme = Timer
  21.     x1 = 1000
  22.     x2 = 2000
  23.     y1 = 200
  24.     y2 = 300
  25.     Brzina = 100
  26. End Sub
  27.  
  28. Private Sub Timer1_Timer()
  29.     Razlika = (Timer - Vreme) * Brzina
  30.     If Levo1 = True Then x1 = x1 - Razlika
  31.     If Levo2 = True Then x2 = x2 - Razlika
  32.     If Desno1 = True Then x1 = x1 + Razlika
  33.     If Desno2 = True Then x2 = x2 + Razlika
  34.     If Gore1 = True Then y1 = y1 - Razlika
  35.     If Gore2 = True Then y2 = y2 - Razlika
  36.     If Dole1 = True Then y1 = y1 + Razlika
  37.     If Dole2 = True Then y2 = y2 + Razlika
  38.     Shape1.Top = y1
  39.     Shape2.Top = y2
  40.     Shape1.Left = x1
  41.     Shape2.Left = x2
  42.     Vreme = Timer
  43. End Sub


U VB postoje i precizniji tajmeri od fu-je Timer koja ima preciznost na dve decimale (barem kod mene) ali je u ove svrhe, sasvim dovoljna.

offline
  • Pridružio: 26 Avg 2007
  • Poruke: 13

Karlose hvala ti puno na ovoj pomoci. Mislim da je ovo reseno. Proveravao sam sa komsijom i mislim da u istom trenutku dolaze do cilja(kako na njegovom tako i na mom racunaru).Jos jednom hvala puno na pomoci.

Ko je trenutno na forumu
 

Ukupno su 1206 korisnika na forumu :: 60 registrovanih, 4 sakrivenih i 1142 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Aleksa-, Arsenije, baltazar16, Belac91, blatruc82, bobomicek, Bojan198527, bojan_t, dankisha, delboy, Dolinc, Dovla 1980, draganca, eagle.rs, gagidjuric, ILGromovnik, jalos, Jezekijel, jna ratnik, Jose, Josef, JosipRi, Još malo pa deda, Kosmos Banja Luka, Kvazar, Langdorf, loon123, luka1978, Manjane, Mechanik, miki kv, mile33, minmatar34957, Miškić, mnn2, N.e.m.a.nj.a., pein, PMsnow, PrincipL, raptorsi, royst33, sixpac, sosko, sspp, stefanmpurtic, stegonosa, stokssone, suton, synergia, Tafocus, tamno.nebo, TheBeastOfMG, Toper, Tvrtko I, vidra1, Vojkan Petrovic, zafon031, zillbg, zlaya011, zmajognjeniivan