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.


Dim Levo1 As Boolean Dim Desno1 As Boolean Dim Gore1 As Boolean Dim Dole1 As Boolean Dim Levo2 As Boolean Dim Desno2 As Boolean Dim Gore2 As Boolean Dim Dole2 As Boolean Dim x1 As Integer Dim x2 As Integer Dim y1 As Integer Dim y2 As Integer Dim Vreme As Double Dim Razlika As Integer Dim Brzina As Integer Private Sub Form_Load()     Desno1 = True     Dole2 = True     Vreme = Timer     x1 = 1000     x2 = 2000     y1 = 200     y2 = 300     Brzina = 100 End Sub Private Sub Timer1_Timer()     Razlika = (Timer - Vreme) * Brzina     If Levo1 = True Then x1 = x1 - Razlika     If Levo2 = True Then x2 = x2 - Razlika     If Desno1 = True Then x1 = x1 + Razlika     If Desno2 = True Then x2 = x2 + Razlika     If Gore1 = True Then y1 = y1 - Razlika     If Gore2 = True Then y2 = y2 - Razlika     If Dole1 = True Then y1 = y1 + Razlika     If Dole2 = True Then y2 = y2 + Razlika     Shape1.Top = y1     Shape2.Top = y2     Shape1.Left = x1     Shape2.Left = x2     Vreme = Timer 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 783 korisnika na forumu :: 8 registrovanih, 1 sakriven i 774 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: bladesu, DH, kikisp, Leonov, nemkea71, pacika, Rogan33, wolverined4