Kirjautuminen

Haku

Tehtävät

Koodit: QB: Tasohyppely

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 SUB

Kommentit

tgunner [30.01.2008 10:38:40]

#

Hmm, milläs tätä itse pyörität? Minun QB valittaa ainakin "ON ERROR RESUME NEXT"-rivillä gotoa ja piirtofunktiossa laittomia funktiokutsuja.

nörtti [30.01.2008 11:36:06]

#

ON ERROR RESUME NEXT on QB 7.1 juttuja. Vanhemmissa se tehdään tällä tavalla.

ON ERROR GOTO hupsis

   'koodi

hupsis:
RESUME NEXT

Meitzi [31.01.2008 22:03:02]

#

Tai toinen vaihoehto on korjata virheet koodista.

Dude [31.01.2008 23:40:08]

#

Joo tää jäi vähä kesken ku ei oo ny huvittanu käyttää QBeetä ku mä oon innostunu PHPstä.

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta