Za lopticu sam iskoristio jos jedan shape sa imenom OBall.
OBall.Height=17
i
OBall.Width=17
---------------------------------------------------------
Loptica je objekat koji mora NON-STOP da se krece.
Za sada cemo se zadovoljiti sa CIK-CAK kretanjem loptice.
Ponovo koristimo GameClock, a ovaj put za kretanje OBall-a.
(Molio bih D.I.-a ili Krcka da me isprave, jer ce ako ovako nastavim
procedura MainLoop ostati prazna

!!!)
Ali dok ne dodje do ispravke †RADICEMO KAKO JA KAZEM, ILI VAS NECE BITI!!!†

Svejedno, jos jednom GameClock:
Da bi se loptica kretala u CIK-CAK putanji potrebno je NON-STOP smanjivati
(do gornje granice) .Top ili povecavati (do donje granice) .Top, povecavati .Left (do desne granice) ili smanjivati .Left (do leve granice).
Pocnimo od toga da se npr. OBall nalazi negde na sredini forme.
Moje koordinate za OBall su (174,293).
Prvo je npr. pokrecemo na dole-desno.
Potrebno je istovremeno povecavati .Top i .Left OBall-a i on ce se kretati
DOLE-DESNO. Povecavacemo ih za konstantnu vrednost(za sada).
Definisemo PROMENLjIVE u Option Explicit-u
Code:
Private BallXMove,BallYMove As Single
Private Racquet_Height As Integer
Private Score1 As Boolean
U inicijalizaciji:
Code:
BallYMove = 2
BallXMove = 2
Score = False
Znaci pomeranje na DOLE-DESNO:
Code:
OBall.Left = OBall.Left + BallXMove
OBall.Top = OBall.Top + BallYMove
Da se ne bi OBall kretao u nedogled, DOLE-DESNO, potrebno je postaviti prvo DONjU,a zatim i DESNU granicu kretanja. Svaka granica je jedan broj i potrebno je nakon povecanja(smanjenja) vrednosti .Left i .Top proveriti da li OBall nije presao preko granice.
Kada OBall.Top bude vece (ili jednako) od DONjE granice menjamo BallYMove:
Code:
BallYMove=-BallYMove
Slicnu proveru vrsimo za slucaj kada OBall.Top bude manje ili jednako od GORNjE
granice i tada takodje koristimo BallYMove=-BallYMove.
A dalje sledi provera da li je OBall presao desnu granicu i ako nije opet nastavljamo sa:
Code:
OBall.Left = OBall.Left + BallXMove
OBall.Top = OBall.Top + BallYMove
Ako jeste presao desnu granicu vrsimo proveru da li se u blizini nasao desni reket.
Code:
For Racquet_Height = 0 To 41
If OBall.Top = Round(RacquetRight.Top, 0) + Racquet_Height Then
GoTo Nastavi_Dalje
End If
Next Racquet_Height
Score1 = True
GoTo Restartuj
Zasto je bas zadnja vrednost koju promenljiva Racquet_Height uzima 41.
Pa ako spojite u jedno, onda se dobije:
Racquet_Height = 41, odnosno RacquetRight.Height je 41.
Pa da vidimo sta se ovde desava:
(Valjda zate kako radi For Next petlja?!)
OBall je presao desnu granicu i ako se njegov .Top nasao negde od
RacquetRight.Top do RacquetRight.Top + Racquet_Height onda se igra NASTAVLjA DALjE,ali uz promenu:
Code:
BallXMove = -BallXMove
sada se OBall krece "gore"- LEVO (Drugi smer!!!)
U slucaju da se nije nasao negde od RacquetRight.Top do
RacquetRight.Top + Racquet_Height 1. igrac je dobio poen, odnosno
po izlasku iz For...Next petlje Score1 postaje TRUE, sto se kasnije koristi
radi povecanja broja poen 1. igraca. Nakon ovoga izvrsava se deo koda koji
sve vraca na pocetak (SEM BROJA POENA

).
!!! NE ZELIM DA PISEM KOD ZA DRUGI SLUCAJ (ZA LEVI REKET), ALI GA ZATO VI NAPISITE
ANALOGNO OVOME !!!
={©IÂ}=
[Ovu poruku je menjao steewsc dana 18.07.2005. u 22:57 GMT+1]