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 RETURN
Pieni 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.