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 FUNCTION
Eipä 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.