Kirjoittaja: Dude
Kirjoitettu: 30.01.2008 – 30.01.2008
Tagit: pelinteko, koodi näytille, peli, vinkki
Alunperin tämä oli UGL-grafiikkakirjastoon pohjautuva peli. Tästä nyt jäi se skrollaus, koska Quick Basicin PUT valittaa jos kuva menee näytön ulkopuolelle.
Näppäimet:
vasen ja oikea liikuttaa
shift hyppää
ctrl juoksee(super mariosta)
Hidastus, joka ei ole valmiiksi käytössä on soodan koodivinkistä.
DECLARE SUB Valmistele ()
DECLARE SUB PiirraLevu ()
DECLARE SUB pause (tickit)
'$STATIC
DIM x AS INTEGER, y AS INTEGER
DIM SHARED k(20, 5) AS INTEGER
DIM SHARED tile1(31, 31) AS INTEGER
DIM SHARED tile2(31, 31) AS INTEGER
DIM SHARED ukko(19, 19) AS INTEGER
DIM nap(1 TO 128) AS INTEGER
ON ERROR RESUME NEXT
SCREEN 7, , 1, 0
Valmistele
x = 1: y = 1
ilmassa = 1
FOR q = 0 TO 5
FOR w = 0 TO 19
READ k(w, q)
NEXT w, q
'pääluuppi
DO
CLS
a = INP(&H60) 'näppäinhandleri eräästä
IF a < 128 THEN nap(a) = 1 ELSE nap(a - 128) = 0
POKE &H1A, PEEK(&H1C)'koodivinkistä muokattuna
nul$ = INKEY$
PiirraLevu
PUT (x, y), ukko, PSET
IF nap(75) = 1 THEN x = x - 1
IF nap(77) = 1 THEN x = x + 1
IF nap(54) = 1 AND ilmassa = 0 THEN h = 80: ilmassa = 1
IF nap(75) = 1 AND nap(29) = 1 THEN x = x - 2
IF nap(77) = 1 AND nap(29) = 1 THEN x = x + 2
IF h > 0 THEN
y = y - 1
h = h - 1
ELSEIF POINT(x + 10, y + 21) = 0 THEN
y = y + 1: ilmassa = 1
ELSE
ilmassa = 0
END IF
IF x > 299 THEN x = 299
IF x < 0 THEN x = 0
IF y > 240 THEN END
IF y < 0 THEN y = 0
PCOPY 1, 0
'pause 'tähän voit laittaa pause-subilla hidastuksen
'kopioin sen soodan vinkistä
LOOP UNTIL nap(1)
DEF SEG
END
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
DATA 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
SUB PiirraLevu
DIM q AS INTEGER, w AS INTEGER
FOR q = 0 TO 5
FOR w = 0 TO 20
SELECT CASE k(w, q)
CASE 3: PUT (w * 32, q * 32), tile1, PSET
CASE 2: PUT (w * 32, q * 32), tile2, PSET
END SELECT
NEXT w
NEXT q
END SUB
SUB Valmistele
LINE (0, 10)-(31, 63), 2, BF 'piirretään
GET (0, 0)-(31, 31), tile1 'ja getataan
GET (32, 32)-(63, 63), tile2 'tilet
CIRCLE (160, 100), 10, 11 'ukolle
PAINT (160, 100), 11
LINE (163, 101)-(169, 103), 4
CIRCLE (160, 96), 2, 1 'sama
GET (150, 90)-(170, 110), ukko
CLS
END SUB
DEFINT A-Z
SUB pause (tickit)
'hypätään alimuistiin(vai mikä se nyt on toi 0)
DEF SEG = 0
'loopataan kunnes on venattu tarpeeksi
DO UNTIL TestiTikki > tickit
'IF LEN(INKEY$) THEN EXIT SUB 'unremmaa jos napin painalluksella häivytään
VikaTikki = Tikki
'haetaan nykyinen ticki
Tikki = PEEK(&H46C)
'PRINT Tikki 'unremmaa niin näät kuin tää toimii
'jos yks ticki mennyt niin setataan vähän
IF VikaTikki <> Tikki THEN testiTikki = TestiTikki + 1
LOOP
END SUBHmm, milläs tätä itse pyörität? Minun QB valittaa ainakin "ON ERROR RESUME NEXT"-rivillä gotoa ja piirtofunktiossa laittomia funktiokutsuja.
ON ERROR RESUME NEXT on QB 7.1 juttuja. Vanhemmissa se tehdään tällä tavalla.
ON ERROR GOTO hupsis 'koodi hupsis: RESUME NEXT
Tai toinen vaihoehto on korjata virheet koodista.
Joo tää jäi vähä kesken ku ei oo ny huvittanu käyttää QBeetä ku mä oon innostunu PHPstä.