Page 7 of 50

Re: Tyhmät kysymykset (I/2011)

Posted: Sat Mar 05, 2011 7:32 pm
by ItzRaines
Joo nyt kaikki näkyi ihan selvästi, kun oli 1024x768. Ainoastaan numerot menivät ruudun sivuille piiloon, joka kyllä korjautuisi niitä siirtämällä. Tarkoitus kuitenkin olisi saada sellainen screen -asetus, että millä tahansa resoluutiolla olevan koneen näytöllä ohjelma toimisi oikein ja kaikki olisi oikeilla kohdillaan, koska tietokonekohtaisesti säätäminen ei tässä projektissa tule olemaan mahdollista.

Re: Tyhmät kysymykset (I/2011)

Posted: Sat Mar 05, 2011 8:33 pm
by legend
ItzRaines wrote:Joo nyt kaikki näkyi ihan selvästi, kun oli 1024x768. Ainoastaan numerot menivät ruudun sivuille piiloon, joka kyllä korjautuisi niitä siirtämällä. Tarkoitus kuitenkin olisi saada sellainen screen -asetus, että millä tahansa resoluutiolla olevan koneen näytöllä ohjelma toimisi oikein ja kaikki olisi oikeilla kohdillaan, koska tietokonekohtaisesti säätäminen ei tässä projektissa tule olemaan mahdollista.
Melkein vakio on 800, 600 tai 600, 400. Ne toimii varmasti jokaisessa läppärissä. Laite jompi kumpi niistä fullscreenille ja sen jälkeen sijoita oikeisiin numerot. Sitten se toimii jokaisssa koneessa.

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Mar 06, 2011 2:05 pm
by valscion
legend wrote:
ItzRaines wrote:Joo nyt kaikki näkyi ihan selvästi, kun oli 1024x768. Ainoastaan numerot menivät ruudun sivuille piiloon, joka kyllä korjautuisi niitä siirtämällä. Tarkoitus kuitenkin olisi saada sellainen screen -asetus, että millä tahansa resoluutiolla olevan koneen näytöllä ohjelma toimisi oikein ja kaikki olisi oikeilla kohdillaan, koska tietokonekohtaisesti säätäminen ei tässä projektissa tule olemaan mahdollista.
Melkein vakio on 800, 600 tai 600, 400. Ne toimii varmasti jokaisessa läppärissä. Laite jompi kumpi niistä fullscreenille ja sen jälkeen sijoita oikeisiin numerot. Sitten se toimii jokaisssa koneessa.
Veikkaan että legend tarkoittaa toisella resoluutiolla 640,480. Sekin on kyllä jo niin pieni että uusimmat koneet eivät ehkä suostu näyttämään niin pientä resoluutiota.

Kannattaa vaikka tarkistaa GFXModeExists-funktiolla onko resoluutio tuettu, niin ei ainakaan kaadu ohjelma. Sitten voi siirtää ja muuttaa kaikkia kokoja verrattuna siihen normaaliresoon. Esimerkiksi jos ohjelma on suunniteltu toimimaan resoluutiolla 1024x768, saat sen skaalautumaan oikein kun kerrot kaikki x-koordinaatit arvolla (ScreenWidth()/1024) ja y-koordinaatit arvolla (ScreenHeight()/768). Tarpeen tullen kannattaa käyttää Float-komentoa muuttamaan luvut liukuluvuiksi - fonttien kohdalla taas se ei onnistu ja jos CB ei suostu kääntämään noita arvoja niin koita käyttää Float:n sijaan Int-komentoa.

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Mar 06, 2011 11:11 pm
by Compaqi
EN olisi muuten kehanut kysyy mut kerta täällä on tälläinenkin yksinkertainen aihe niin olen juuri tässä menneen viikon aikana käynnyt nuo aloittelijan oppitunnit ja väkertäny noita tehtäviä mutta en osannu ratkassa esimerkiksi tota a3 jonka tehtävä anto on "Kirjoita ohjelma, joka vilkuttaa jotain tekstiä ruudulla tyyliin "päällä/pois". Vilkkuminen tapahtuu puolen sekunnin välein." en vaa saa keksittyy mitää kun en varmaa osaa kikkailla tuolla timer() komennolla kun en oikeen tajua pitääkö ne luvut siis laittaa tuon sulkeen sisää vai pitääkö käyttää jtn "timer()>500" komentoa vai miten se toimii. Antakaa mulle esimerkkiä jos nyt joku kehta avaivautuu että saisin laajennettua ymmärrystäni tästä ohjelmasta enemmän ja enemmän =)

ps. jos on jossain noihi kaikkiin tehtäviin joku oikkeitten ratkasujen sivu niin ohjaisitteko minut sinne ^^

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Mar 06, 2011 11:16 pm
by Viltzu
Compaqi wrote:EN olisi muuten kehanut kysyy mut kerta täällä on tälläinenkin yksinkertainen aihe niin olen juuri tässä menneen viikon aikana käynnyt nuo aloittelijan oppitunnit ja väkertäny noita tehtäviä mutta en osannu ratkassa esimerkiksi tota a3 jonka tehtävä anto on "Kirjoita ohjelma, joka vilkuttaa jotain tekstiä ruudulla tyyliin "päällä/pois". Vilkkuminen tapahtuu puolen sekunnin välein." en vaa saa keksittyy mitää kun en varmaa osaa kikkailla tuolla timer() komennolla kun en oikeen tajua pitääkö ne luvut siis laittaa tuon sulkeen sisää vai pitääkö käyttää jtn "timer()>500" komentoa vai miten se toimii. Antakaa mulle esimerkkiä jos nyt joku kehta avaivautuu että saisin laajennettua ymmärrystäni tästä ohjelmasta enemmän ja enemmän =)

ps. jos on jossain noihi kaikkiin tehtäviin joku oikkeitten ratkasujen sivu niin ohjaisitteko minut sinne ^^
viewtopic.php?f=12&t=1162 <-Täältä löytyy tehtävät ratkaistuna. (Nuo taitavat olla melko optimoituja, joten voi näyttää oudolta.)
Mutta miten sinun pitää tehdä, on ottaa Timer() loopin ulkopuolella muuttujaan talteen ja tarkistat, että jos timerin ja muuttujan erotus on yli 500. Ja jos on niin päivitetään myös se muuttuja nykyiseen Timerin arvoon. Timer() palauttaa arvon joka kertoo kauanko kone on ollut päällä millisekunneissa, joten siksi näin.
Tässä osittain ratkaisu tehtävään:

Code: Select all

t = Timer()
Repeat
    If Timer()-t=>500 Then 
        ...
        t = Timer()
    EndIf
Forever

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Mar 07, 2011 2:05 pm
by DJ-Filbe
Olisiko jotain C++ dll-zydeemiä tarjota jollakin millä voisi puskuroida äänen sisääntuloliitäntää ja käsitellä sitä? Esim. voisi tehdä jonkinlaisen äänitysohjelman... Toteutuskielenä siis coolbasic & dll

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Mar 07, 2011 6:09 pm
by Hene
Olen viime aikoina harjoitellut animaatioiden tekemistä nopeasti väsätyllä animoidulla versiolla CB:n oletusgrafiikoiden car.bmp -tiedostosta. Saan animoinnin kyllä toimimaan loadanimimage -käskyllä, mutta en objektimuodossa. Voisiko joku vilkaista?

Code: Select all

FrameLimit 40

'Load the map 
'themap=LoadImage("Media/map.bmp")

'Load an animated image 
'Frame size is 30,25 \ start at the first \ 2 frames total 
cow=LoadAnimObject("music\car\ACar.bmp", 87, 47, 0, 2, 150) 
'Default Position 
x=200:y=150

While Not EscapeKey()

    'Upadte controls
    LoopObject cow
    If LeftKey() Then TurnObject cow,3
    If RightKey() Then TurnObject cow,-3
    If UpKey() Then MoveObject cow,3
    If DownKey() Then MoveObject cow,-3

    'Fraw the map
'    DrawImage themap,0,0

    'Draw the cow
'    DrawImage cow,x,y,cowframe

    'Animate through frames 0 and 1
    If TIMER()>cowtimer+100 Then 'animate every 100 millisecs
        cowframe=cowframe+1
        If cowframe>1 Then cowframe=0
        cowtimer=TIMER()
    EndIf

    DrawScreen

Wend

End

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Mar 07, 2011 6:19 pm
by Latexi95
Hene wrote:Olen viime aikoina harjoitellut animaatioiden tekemistä nopeasti väsätyllä animoidulla versiolla CB:n oletusgrafiikoiden car.bmp -tiedostosta. Saan animoinnin kyllä toimimaan loadanimimage -käskyllä, mutta en objektimuodossa. Voisiko joku vilkaista?

Code: Select all

FrameLimit 40

'Load the map 
'themap=LoadImage("Media/map.bmp")

'Load an animated image 
'Frame size is 30,25 \ start at the first \ 2 frames total 
cow=LoadAnimObject("music\car\ACar.bmp", 87, 47, 0, 2, 150) 
'Default Position 
x=200:y=150

While Not EscapeKey()

    'Upadte controls
    LoopObject cow
    If LeftKey() Then TurnObject cow,3
    If RightKey() Then TurnObject cow,-3
    If UpKey() Then MoveObject cow,3
    If DownKey() Then MoveObject cow,-3

    'Fraw the map
'    DrawImage themap,0,0

    'Draw the cow
'    DrawImage cow,x,y,cowframe

    'Animate through frames 0 and 1
    If TIMER()>cowtimer+100 Then 'animate every 100 millisecs
        cowframe=cowframe+1
        If cowframe>1 Then cowframe=0
        cowtimer=TIMER()
    EndIf

    DrawScreen

Wend

End
Miksi koitat piirtää objektia? Et voi piirtää objekteja (edes animoituja), anna DrawScreenin tai DrawGamen hoitaa se.
AnimObject toimii samanlailla kuin normaali objekti. Ainoastaan lataamisessa pitää antaa muutama ylimääräinen parametri sekä objekti pitää animoida PlayObjectilla tai LoopObjectilla. Siinä se.

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Mar 08, 2011 3:57 pm
by Potiro
Moi! Olen tekemässä ylhäältäkuvattua räiskintäpeliä, mutta en tiedä miten saan viholliset kuolemaan kun heihin osuu panos. Olisiko vastausta? :?: :?: :?:

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Mar 08, 2011 4:11 pm
by DJ-Filbe
Potiro wrote:Moi! Olen tekemässä ylhäältäkuvattua räiskintäpeliä, mutta en tiedä miten saan viholliset kuolemaan kun heihin osuu panos. Olisiko vastausta? :?: :?: :?:
Riippuu siitä miten haluat niiden kuolevan. Miten olet viholliset toteuttanut?
Typeillä homma menisi niin, että käyt tyyppikokoelman läpi For...Each -rakenteella ja tarkistat, osuuko panos vihuun (objectsoverlap) ja jos osuu, poistat objectin (DeleteObject).

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Mar 08, 2011 4:23 pm
by Latexi95
DJ-Filbe wrote:
Potiro wrote:Moi! Olen tekemässä ylhäältäkuvattua räiskintäpeliä, mutta en tiedä miten saan viholliset kuolemaan kun heihin osuu panos. Olisiko vastausta? :?: :?: :?:
Riippuu siitä miten haluat niiden kuolevan. Miten olet viholliset toteuttanut?
Typeillä homma menisi niin, että käyt tyyppikokoelman läpi For...Each -rakenteella ja tarkistat, osuuko panos vihuun (objectsoverlap) ja jos osuu, poistat objectin (DeleteObject).
Ja muista poistaa myös tyypin jäsen(Delete) MAVien välttämisekseksi. Ja laita poistaminen aina For -Each silmukan loppuun.

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Mar 08, 2011 5:06 pm
by Potiro
Voisiko jompikumpi antaa koodiesimerkin??? :?: :?: :?: :?: :?: :?: :?: :?: :?:
Tai kuka tahansa

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Mar 08, 2011 5:48 pm
by MaGetzUb
Tässäpä varsin simppeli koodi siihen sinun tarkoitukseen. :) Tein tämän nyt energian kanssa, että opit senkin samalla. :)
Käytän koodissani suoraa viittausta vihollisobjektiin, niin ei tarvitse tutkia, miltä objektilta vähennetään energiaa päällekkäisillä for-silmukoilla. =) Tämä nopeuttaa koodia paljon.

Code: Select all

Type Vihut
    Field obj
End Type 

Type AMMUS
    Field obj
End Type 


SCREEN 800, 600

ukko=LoadObject("Media\soldier.bmp",72)
vihu = LoadObject("Media\guy.BMP") 
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF
ShowObject vihu, OFF

AddText "Nuolista ohjaa, CTRL=ampuu"

//Luodaan viholliset, tehdään niitä 10
For i = 0 To 10
    pahis.Vihut = New(Vihut)
    pahis\obj = CloneObject(Vihu)
    SetupCollision ukko, pahis\obj, 2, 2, 2
    PositionObject pahis\obj,Rand(-400, 400), Rand(-300, 300)
    ObjectFloat pahis\obj, 100 'Asetetaan pahikselle energia
Next i

Repeat

    If LeftKey() Then TurnObject ukko,5
    If RightKey() Then TurnObject ukko,-5
    If UpKey() Then MoveObject ukko,2
    If DownKey() Then MoveObject ukko,-2    


    If KeyDown(cbKeyRControl) And reload=0 Then    
        luoti.AMMUS = New(AMMUS)
        luoti\obj=CloneObject(pati)
        CloneObjectPosition luoti\obj,ukko                
        CloneObjectOrientation luoti\obj,ukko  
        For pahis.Vihut = Each Vihut
            SetupCollision luoti\obj, pahis\obj, 2, 2, 2
        Next pahis
        reload=5       
    EndIf
    
    If reload>0 Then reload=reload-1
    
    //Panosten peruspäivitys
    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,6
        If CountCollisions(luoti\obj) Then 'Johonkin törmättiin, sen täytyi olla vihollinen.. 
            törmättyobjekti = GetCollision(luoti\obj, 1)
            energia# = ObjectFloat(törmättyobjekti) 'Tutkitaan törmätyn objektin energia-arvo ja otetaan muuttuja (energia# <-) talteen.
            uusienergia# = energia# - 10 '"tehdään" uusi energia-arvo, eli energia muuttujasta vähennetään kymmenen.
            ObjectFloat törmättyobjekti, uusienergia 'Asetetaan törmätylle objektille uusi energia-arvo.
            DeleteObject luoti\obj
            Delete luoti
            //Jos ei törmätty mihinkään, ja luoti jatkoi ruudun ulkopuolelle niin... tuhotaan se.
        ElseIf ObjectX(luoti\obj)<-400 Or ObjectX(luoti\obj)>400 Or ObjectY(luoti\obj)<-300 Or ObjectY(luoti\obj)>300 Then     
            DeleteObject luoti\obj
            Delete luoti
        EndIf        
    Next luoti   

    
    DrawGame

    //Vihollisten läpikäynti 
    For pahis.Vihut = Each Vihut
        //Piirretään pahikselle energia
        DrawToWorld 0, 0, ON  
            CenterText ObjectX(pahis\obj), ObjectY(pahis\obj), ObjectFloat(pahis\obj), 2
        DrawToWorld 0, 0, OFF 
        //Joe vihollisen energia-arvo on tasan tai meni alle nollan, niin tuhotaan vihollinen.
        If ObjectFloat(pahis\obj) =< 0 Then 
            DeleteObject pahis\obj
            Delete pahis
        EndIf
    Next Pahis


    DrawScreen
Until EscapeKey()

Re: Tyhmät kysymykset (I/2011)

Posted: Wed Mar 09, 2011 8:49 am
by Potiro
Kiitos tuosta!

Re: Tyhmät kysymykset (I/2011)

Posted: Wed Mar 09, 2011 9:17 am
by Potiro
Miten saan auton silleen et se ei käänny paikallaan?

Re: Tyhmät kysymykset (I/2011)

Posted: Wed Mar 09, 2011 9:20 am
by Awaclus
Potiro wrote:Miten saan auton silleen et se ei käänny paikallaan?
Teet muuttujan sen nopeudelle, sitten suurennat tai pienennät sitä muuttujaa sen mukaan, mitä näppäimiä painetaan tai ei paineta, sitten liikutat autoa sen mukaan, mikä sen muuttujan suuruus on, sitten siinä vaiheessa kun käännät autoa, käännät sitä vain jos nopeus on enemmän kuin 0.

Kannattaa käyttää CurveValuea.

Re: Tyhmät kysymykset (I/2011)

Posted: Wed Mar 09, 2011 9:45 am
by Potiro
Miten saan viholliset ampumaan ja liikkumaan?

Re: Tyhmät kysymykset (I/2011)

Posted: Wed Mar 09, 2011 10:20 am
by -Z-
Potiro wrote:Miten saan viholliset ampumaan ja liikkumaan?
Magetzubin koodissa on tämmönen kohta

Code: Select all

 //Vihollisten läpikäynti 
    For pahis.Vihut = Each Vihut
        //Piirretään pahikselle energia
        DrawToWorld 0, 0, ON  
            CenterText ObjectX(pahis\obj), ObjectY(pahis\obj), ObjectFloat(pahis\obj), 2
        DrawToWorld 0, 0, OFF 
        //Joe vihollisen energia-arvo on tasan tai meni alle nollan, niin tuhotaan vihollinen.
        If ObjectFloat(pahis\obj) =< 0 Then 
            DeleteObject pahis\obj
            Delete pahis
        EndIf
    Next Pahis
Siinä käydään viholliset läpi. Laita sinne jutut jotka haluat vihollisten tekevän, moveobjectilla ja turn/pointobjectilla saat liikkumisen ja ampuminen onnistuu tuota pelaajan ampumiskoodia luovasti kopioimalla.

Re: Tyhmät kysymykset (I/2011)

Posted: Wed Mar 09, 2011 10:35 am
by Potiro
No en kyllä älynny....

Re: Tyhmät kysymykset (I/2011)

Posted: Wed Mar 09, 2011 11:57 am
by Viltzu
Potiro wrote:No en kyllä älynny....
Link 1
Link 2
Link 3