Olen tässä rakentelemassa QB:llä peliä (nimeä ei vielä mietitty), jossa pitäisi pystyä ampumaan jonkin sortin "ohjus", niin että se näkyisi, viholliseen painamalla vaikkapa CTRL. Itse aloittlevilla QB- taidoillani en sellaista saa oikein kunnolla aikaiseksi :-( , joten voisinko saada vähän apua?
Osaan minä kyllä muuta QB:llä tehdä, mutta tämä tuli vain mieleen, viikon pohdiskelun jälkeen tosin...
Siis mikä osio tuossa tuottaa ongelmia? Ohjuksen koordinaattien laskeminen, ohjuksen ja vihollisen törmäyksen tunnistaminen, ohjuksen piirtäminen ruudulle (onko käytössä grafiikka vai tekstitila)?
Moikka gamehouse!
Tutki sitä ilmaisen QBASIC:n (DOS) mukana tulevaa apinajuttua niin eiköhän ala ballistiset kuviot hahmottua...
No, ainakin ohjuksen koordinaattien laskeminen ja ohjuksen piirtäminen ruudulle tuottavat vaikeuksia...
Käytössä on tekstitila.
QB antaa virheilmoituksen gorillaz.bas- tiedostossa: Expented: statement ja korostaa sanan go jonka jälkeen tulee: = 1
Outoa...
Tässä käyttäjän Heikki tekemässä oppaassa on tarvittavat perusasiat vektoreista esitetty hyvin.
https://www.ohjelmointiputka.net/oppaat/opas.
Se on hyvä kerrata aluksi. Oppaissa on myös QB-asiaa ja -esimerkkejä, kuten selaamalla näet.
Heippa taas!
Sorry toi sorsa olikin syvältä...tsekkaa täältä
Nyt toimii! Kiitos!
Mutta kuitenkin tarvitsisin sellaista, joka ampuisi suoraan eteenpäin. Esim.:
@ = hahmo ¤ = vihollinen - = ohjus
@ ¤
kun painettaisiin esim. ctrl, hahmo ampuisi, jotakuinkin tällä tavalla:
@ - ¤
...ja "ohjus" jatkaisi matkaa. En oikein osaa tätä, mutta muuta kylläkin.
Eli tarvisin apua!
ohjukselle oma x-arvo.
if suunta = "oikea" then
pyyhi "ohjus"
ohjus.x = ohjus.x + 1
piirrä "ohjus"
Kiitos paljon!!! Nyt tajusin tämän!
(parempia ehdotuksia voi toki lähettää)
Heippa taas!
tässä alku...
CLS ON KEY(2) GOSUB QUIT KEY(2) ON LOCATE 14, 5: PRINT "@" LOCATE 14, 75: PRINT "Ï" DO IF INP(&H60) = 63 AND CHR$(SCREEN(14, 75)) <> "Ï" THEN 'F5 KEY(2) OFF: RUN END IF IF INP(&H60) = 29 AND CHR$(SCREEN(14, 75)) = "Ï" THEN 'Ctrl FOR i% = 1 TO 69 LOCATE 14, 5 + i%: PRINT "-" Delay! = .01 + TIMER DO WHILE Delay! > TIMER: LOOP LOCATE 14, 5 + i%: PRINT " " NEXT i% END IF LOOP QUIT: KEY(2) OFF CLS: SYSTEM
FOR i = 1 TO ammuksia
LOCATE ay(i), ax(i)
PRINT tyhja$
ay(i) = ay(i) - 1
IF ay(i) < 1 THEN
ax(i) = ax(ammuksia)
ay(i) = ay(ammuksia)
ammuksia = ammuksia - 1
END IF
FOR j = 1 TO monkijoita
IF ay(i) = my(i) AND ax(i) >= mx(j) AND ax(i) <= mx(j) + 2 THEN 'jos se osuu mönkijään niin
x = mx(j) 'x on mönkijän sijainti
y = my(j) 'y on mönkijän sijainti
GOSUB Rajahdys 'mennään räjäytykseen
pisteet = pisteet + 10 'morescore
IF pisteet / uusitykki = INT(pisteet / uusitykki) THEN 'ja jos pisteet ylittää uuden elmään rajat niin saa uuden elämän
tykki = tykki + 1 'lisätään se elämä
END IF 'lopetetaan if
mx(j) = mx(monkijoita) 'hmm...
my(j) = my(monkijoita) 'se on siis se yks tietty mönkijä
monkijoita = monkijoita - 1 'ja poistetaan se mönkijä
ax(i) = ax(ammuksia) 'jaa ja nää sitte on että se on
ay(i) = ay(ammuksia) 'se tietty ammus joka
ammuksia = ammuksia - 1 'poistetaan
END IF 'lopetetaan if
NEXT j
IF i <= ammuksia THEN 'jos i on suurempi kun ammuksien määrä,
LOCATE ay(i), ax(i) 'niin sinne heitetään se ammus
COLOR 14 'keltasena
PRINT ammus$ 'nyt
COLOR 15 'ja väri valkoseks
END IF
NEXT i
RETURNPieni pätkä tekemästäni space invaders - pelistä, jos siitä vaikka olisi jotain hyötyä... Edit: Miksi se ei anna heittää sitä siniselle pohjalle :( Edit 2: Aijaa, se olikin näköjään kautta-merkki eikä kenomerkki tuossa lopussa :) Edit 3: Tämä siis ei toimi yksinään...
Kiitos avusta! Nyt pelini etenee!
Aihe on jo aika vanha, joten et voi enää vastata siihen.