Pelissä pompotellaan palloa kahden "mailan" välillä, peli on siis kahdelle pelaajalle, koska en jaksanut vääntää siihen tietokonepelaajaa. Pelin grafiikka on mustavalkoista karua ja palikkamaista. Peli ei välttämättä tottele näppäimistöä, mutta eipä sitä näppäimistön lukemista kovinkaan paljoa paremmin voi tehdä QB:lla, muitakin pikku bugeja voi löytyä.
'Jogen pikku peli :)
DECLARE SUB paivitaruutu ()
DECLARE SUB pyyhi ()
DECLARE FUNCTION tarkistapallo! ()
DECLARE SUB paivitainfo ()
RANDOMIZE TIMER
SCREEN 7 'menn??n grafiikkatilaan
DEF SEG = 0
POKE &H417, 1 'numlock pois
TYPE pallo
x AS SINGLE
y AS SINGLE
z AS SINGLE
END TYPE
TYPE maila
p AS SINGLE
x AS SINGLE
y AS SINGLE
END TYPE
DIM SHARED ball AS pallo
DIM SHARED pl(1) AS maila
CONST xkorj = 5 'asetetaan vakiot
CONST ykorj = 5
CONST pi = 3.141593
LINE (5, 5)-(315, 10), 15, BF 'piirret??n pelialue
LINE (5, 160)-(315, 165), 15, BF
DO
paivitainfo
ball.z = CINT(RND * 4) * pi / 2 + pi / 4 'pallon alkusuunta
ball.x = 155 'asetetaan alkuarvot
ball.y = 75
pl(0).x = 20
pl(0).y = 75
pl(1).x = 290
pl(1).y = 75
n72 = 0: n80 = 0: n30 = 0: n16 = 0 'nollataan n?pp?imet
paivitaruutu
LOCATE 5, 13: PRINT "Paina speissii"
DO
IF INP(&H60) = 1 THEN END 'odotetaan ett? painetaan speissi? tai esci?
LOOP UNTIL INKEY$ = " "
LOCATE 5, 13: PRINT STRING$(14, " ")
DO
pyyhi
n = INP(&H60) 'luetaan n?ppist? muuttujaan
turha$ = INKEY$
IF INP(&H60) = 1 THEN END 'katotaan onko n?pp?ini? pohjassa
IF n = 72 THEN n72 = -1
IF n = 80 THEN n80 = -1
IF n = 16 THEN n16 = -1
IF n = 30 THEN n30 = -1
IF n = 72 + 128 THEN n72 = 0
IF n = 80 + 128 THEN n80 = 0
IF n = 16 + 128 THEN n16 = 0
IF n = 30 + 128 THEN n30 = 0
IF n72 THEN pl(1).y = pl(1).y - 1 'liikutellaan mailoja
IF n80 THEN pl(1).y = pl(1).y + 1
IF n16 THEN pl(0).y = pl(0).y - 1
IF n30 THEN pl(0).y = pl(0).y + 1
IF pl(0).y > 144 THEN pl(0).y = 144 'tarkistetaan ett? mailat pysyv?t sallitulla alueella
IF pl(1).y > 144 THEN pl(1).y = 144
IF pl(0).y < 16 THEN pl(0).y = 16
IF pl(1).y < 16 THEN pl(1).y = 16
IF ball.z > 2 * pi THEN ball.z = ball.z - 2 * pi 'pidet??n pallon kulma sallituissa rajoissa
IF ball.z < 0 THEN ball.z = ball.z + 2 * pi
ball.x = ball.x + SIN(ball.z) * 2 'liikutetaan palloa
ball.y = ball.y + COS(ball.z) * 2
o = tarkistapallo
paivitaruutu
DO: LOOP UNTIL (INP(&H3DA) AND 8) <> 0 'hidastus
DO: LOOP UNTIL (INP(&H3DA) AND 8) = 0
LOOP UNTIL o <> 0
pyyhi
pl(o - 1).p = pl(o - 1).p + 1 'lis?t??n piseet
LOOP
SUB paivitainfo
LOCATE 23, 2: PRINT "Pelaaja 1:"; pl(0).p
LOCATE 23, 20: PRINT "Pelaaja 2:"; pl(1).p
END SUB
SUB paivitaruutu
LINE (ball.x - 2 + xkorj, ball.y - 2 + ykorj)-(ball.x + 2 + xkorj, ball.y + 2 + ykorj), 15, BF
LINE (pl(0).x - 2 + xkorj, pl(0).y - 10 + ykorj)-(pl(0).x + 2 + xkorj, pl(0).y + 10 + ykorj), 15, BF
LINE (pl(1).x - 2 + xkorj, pl(1).y - 10 + ykorj)-(pl(1).x + 2 + xkorj, pl(1).y + 10 + ykorj), 15, BF
END SUB
SUB pyyhi
LINE (ball.x - 2 + xkorj, ball.y - 2 + ykorj)-(ball.x + 2 + xkorj, ball.y + 2 + ykorj), 0, BF
LINE (pl(0).x - 2 + xkorj, pl(0).y - 10 + ykorj)-(pl(0).x + 2 + xkorj, pl(0).y + 10 + ykorj), 0, BF
LINE (pl(1).x - 2 + xkorj, pl(1).y - 10 + ykorj)-(pl(1).x + 2 + xkorj, pl(1).y + 10 + ykorj), 0, BF
END SUB
FUNCTION tarkistapallo
IF ball.y > 150 THEN 'jos pallo osuu alareunaan...
ball.y = ball.y - 1
ball.z = pi - ball.z
END IF
IF ball.y < 10 THEN 'jos pallo osuu yl?reunaan...
ball.y = ball.y + 1
ball.z = pi - ball.z
END IF
'jos pallo osuu mailaan...
IF ball.x > 285 AND ball.x < 290 AND ball.y > pl(1).y - 10 AND ball.y < pl(1).y + 10 THEN
ball.x = ball.x - 1
ball.z = 2 * pi - ball.z + (RND * .5 - .25)
END IF
'jos pallo osuu mailaan...
IF ball.x < 25 AND ball.x > 20 AND ball.y > pl(0).y - 10 AND ball.y < pl(0).y + 10 THEN
ball.x = ball.x + 1
ball.z = 2 * pi - ball.z + (RND * .5 - .25)
END IF
'jos pallo menee mailan ohi...
IF ball.x < 5 THEN tarkistapallo = 2
IF ball.x > 305 THEN tarkistapallo = 1
END FUNCTIONEipä vienyt paljon tilaa. Muutenkin hyvä esimerkki aiheesta.
Olin itsekin tehnyt joskus pongin, mutta siitä tuli liian hidas (olisi pitänyt korvata tekemäni pallo jonkinlaisella "asciipallolla")
perinteinen pong! cool!
Sikahyvä peli. Itse vähän parantelin koodia omalle koneelleni.
Ihan hyvä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.