Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: FreeBASIC: Funktio-ongelma (FB)

jesse123 [19.04.2008 20:36:59]

#

Eli tehen ohjelmointiputkan ohjeiden mukaan tekstipohjaista peliä ja sen koodi on seuraavanlainen, siellä on ongelma ainokaisen funktion kanssa, joten voitteko auttaa?

Declare sub kartanpiirto ()' kartanpiirto aliohjelman lataus
declare sub karttap ()  ' kartan lataus
declare function haenappi (a as string) as string ' function haenappi lataus

DIM shared kartta(1 to 80, 1 to 35) as INTEGER ' Taulukon luonti
DIM x AS INTEGER,   y AS INTEGER
DIM shared ux as integer,   uy as integer
dim a as string

screenres 640, 400      ' näytön määritys

x = 40                     ' muuttujien arvojen laitto
y = 12
ux = x
uy = y

karttap ' kartan merkit

CLS                        ' Näytön tyhjäys

kartanpiirto               ' Kartta piiretään

DO

    LOCATE y, x            ' Hahmon kohta näytöllä y ja x arvot
    PRINT "O";             ' Tulostamme O-merkin (hahmo) ylämainittuun kohtaan

    a = haenappi

    Locate y, x            ' Ukon kohta kumitusta varten
    Print " ";             ' Ukko kumitetaan

    SELECT CASE a          ' näppäimet ja niiden toiminnot
        CASE "a"           ' Vasemmalle
            ux = x - 1
            uy = y
        CASE "a" + "w"     ' Vasempaan yläviistoon
            ux = x - 1
            uy = y - 1
        CASE "a" + "s"     ' Vasempaan alaviistoon
            ux = x - 1
            uy = y + 1
        CASE "d"           ' Oikealle
            ux = x + 1
            uy = y
        CASE "d" + "w"     ' Oikea yläviisto
            ux = x + 1
            uy = y - 1
        CASE "d" + "s"     ' Oikealle alaviistoon
            ux = x + 1
            uy = y + 1
        CASE "w"           ' Ylös
            ux = x
            uy = y - 1
        CASE "s"           ' Alas
            ux = x
            uy = y + 1
        case chr(27)       ' Sulje ohjelma
            END
    END select

    IF kartta(ux, uy) = 0 THEN      ' törmäystarkistus
        x = ux
        y = uy
    END IF

LOOP

SUB kartanpiirto    ' Kartanpiirto aliohjelma

    DIM i as integer            ' Muuttujat määritetään
    DIm i2 as integer
                                ' Kartan tarkistus
    for i2 = 1 to 35           ' y
        for i = 1 to 80        ' x
            locate i2, i
            if kartta(i, i2) = 1 then print "#";  ' tarkistaa kartan ja piirtää 1 kohtiin seinää
            if kartta(i, i2) = 2 then print "/";  ' tarkistaa kartan ja piirtää 2 kohtiin ovet (avonaiset
            if kartta(i, i2) = 3 then print "k";  ' tarkistaa kartan ja piirtää 3 kohtaan avaimen
        next i
    next i2

END sub

sub karttap   ' kartan teko aliohjelma

    kartta(10, 11) = 1
    kartta(10, 9) = 1
    kartta(10, 7) = 1
end sub

function haenappi(a as string) as string
    do
        a = inkey
    loop until a <> ""
    haenappi = a
end function

Eli ainokainen haenappi functio reistailee virhesanoma on seuraavanlainen

 error 1: Argument count mismatch in 'a = haenappi'

Toivoisin pikaista vastausta ja kiitos jo etukäteen kaikille vastanneille.

sqwiik [19.04.2008 21:05:46]

#

Virhe johtuu siitä, ettet anna funktiolle 'haenappi' tarvittavia parametreja... olet määritellyt sen niin että se vaatii parametrikeseen String-tyypin muuttujan - haenappi(a as String). Määrittele muuttuja a funrkion sisällä äläkä tuo sitä parametrina niin poistuu tuo vaiva;

function haenappi() as string
dim a as String
    do
        a = inkey
    loop until a <> ""
    haenappi = a
end function

jesse123 [19.04.2008 21:38:53]

#

Kiitoksia avusta

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta