Ajattelin tehdä jonkun alkeellisen mäkihyppypelin, mutta törmäsin tälläseen ongelmaan:
Minkä käskyn kirjoitan että ylöspäinnappia painaessa x:n arvo nousee esim. 2:lla.
lainaus:
Minkä käskyn kirjoitan että ylöspäinnappia painaessa x:n arvo nousee esim. 2:lla.
Vähän tarkemmin voisit kertoa mitä haluaisit tietää, ylöpäinnapin scan-koodin vai miten x:ään lisätään 2? Viimeiseen vastaus on "x = x + 2" ;)
Niin ja mikä kieli?
Kieli on Qbasic
mikä lause (input, ...)??
X on esim. suksen takapää ja y etupää. Kun painaa ylöspäinnappia x "kasvaa". Ja hyppääjä nousee..
meenekö se jotenki
o = inkey$
input ,o Vai kuinka???
Sinun pitää lukea painettuja näppäimiä jollakin tapaa. Yksi mahdollisuus on INKEY$-erikoismuuttuja, toinen mahdollisuus on suoraan portista 60h lukeminen. Esimerkki kummastakin ja näppäinkoodilista löytyy tuolta:
https://www.ohjelmointiputka.net/oppaat/opas.
lainaus:
X on esim. suksen takapää ja y etupää. Kun painaa ylöspäinnappia x "kasvaa". Ja hyppääjä nousee..
Oletko aivan varma, että tiedät, mitä olet tekemässä? :)
lähes varma, en varmasti osannut selittää sitä oikein?..
lainaus:
X on esim. suksen takapää ja y etupää. Kun painaa ylöspäinnappia x "kasvaa". Ja hyppääjä nousee..
Hetkinen, mitähän nyt tällä oikein tarkoitit? QB:ssa näytön koordinaatit menevät niin, että X-akseli on vaakasuorassa ja Y-akseli pystysuorassa jolloin vasen yläkulma on koordinaatteina esitettynä 0,0 (X,Y) ja oikea alakulma 320,200 kun käytetään SCREEN 13 näyttötilaa.
Joten "hyppääjän" noustessa Y-arvoa pitää pienentää.
Joo multa puuttu tuos et yytäki pitää vähentää
Kun x:ä suurennetaan ja y:tä vähennetään hyppääjä nousee etuviistoon.
Mutta voisko joku antaa esimerkin kuinka mä kirjotan sen et ku painaa ylöspäin niin toi tapahtuu? ;)
Tässä on nyt jokin pätkä mut jos siin on jotain vikaa ni trinit tai Laaksonen varmaankin korjaa jutun ;)
IF INP(&H60) = 80 THEN //Alespäin-nappia painettu Y = Y - 2 ELSEIF INP(&H60) = 72 THEN //Ylöspäin-nappia painettu Y = Y + 2 ELSEIF INP(&H60) = 75 THEN //Vasemmalle-nappia painettu X = X - 2 ELSEIF INP(&H60) = 77 THEN //Oikealle-nappia painettu X = X + 2 END IF
Tossa koodissa voi olla häikkää, voit muunnella sitten noita X:n ja Y:n arvoja miten haluat. Tässä SCAN-systeemissä ei vissinkään pysty lukemaan kahta näppäintä samaan aikaan (Esim. Vasen ja Ylös), vai? Jos pystyy niin sitten näin:
IF INP(&H60) = 72 AND INP(&H60) = 75 THEN //Ylös ja Vasen painettu Y = Y + 2 X = X - 2 END IF
lainaus:
x:ä suurennetaan ja y:tä vähennetään hyppääjä nousee etuviistoon
DO nappi$ = INKEY$ SELECT CASE nappi$ ' Nuolinäppäin ylös CASE CHR$(0) + CHR$(72) x = x + 2 y = y - 2 CASE CHR$(27) EXIT DO END SELECT LOOP
Eiköhän se noin mennyt muistaakseni.
Suosittelen joko _todella_ yksinkertaista mäkihyppypeliä tai projektin hylkäämistä jos tiedot ovat tuolla tasolla.
muut tiedot on kunnos paitsi nuo just.
Käykääs porukat kattoos: http://www.riseskijump.cjb.net :)
Kuis pitkästi tossa pääsee? Mun enkat on hurjat 36m :)
Mullaki on ennätys 36 metriä. Yks miinus on ainaki välkkyvät grafiikat.
Joo, kuinkas sen sais että noi grafiikat ei välky? :(
Ns. kaksoispuskurointi vois auttaa. En kyllä itse tiedä, miten kaksoispuskuroinnin saa tehtyä ainakaan screen 13h:ssa, mitta muistelen että se onnistuu olikohan screen 7:ssa? Eli kaksi screeniä ja ne vaihdetaan Swap:lla. En kyllä muista...
Eiköhän sen kaksoispuskuroinnin voisi saada 13h:ssakin jotenkin kikkailemalla, en ole tarkemmin tutustunut...
Pitäisi varmaan varata muistia tarpeeksi suurelle alueelle(320*200 pikseliä). Kirjoittaa sinne poke:lla ja kopioida koko homma näyttömuistuiin. Kokeilin assemblerilla, mutta jokin meni varmaan vikaan kun en saanut toimimaan?
Meni varmaankin ;) Kaksoispuskurointi mode13h:ssa onnistuu tosiaan varaamalla 320x200-tavuisen bufferin. Kannattaa kehitellä bufferin flippaamiseen joku asm-funktio koska QB:llä loopissa pokettaminen on melko hidasta ;)
Tuossa on tietysti miinuspuolena se, että QB:n perus graffakomentojen output-bufferia ei voi säätää, joten ne piirtävät aina suoraan ruutuun.
Saisko ton pienellä virityksellä toimii xp:lle??
Sanokaas mielipiteenne mäkieditorista.
Se on versios 0.011, joka löytyy: http://koti.mbnet.fi/vmjs/RISE_011.EXE
En oikein tykännyt tuosta, koska se vilkkuminen ei ole kovin kivan näköistä, toimii liian lujaa minun koneellani ja muutenkin paranteluja tarvitaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.