Tyhmät kysymykset (I/2011)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
User avatar
ItzRaines
Active Member
Posts: 211
Joined: Sat Feb 05, 2011 6:59 pm

Re: Tyhmät kysymykset (I/2011)

Post 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.
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: Tyhmät kysymykset (I/2011)

Post 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.
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Tyhmät kysymykset (I/2011)

Post 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.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Compaqi
Newcomer
Posts: 1
Joined: Sun Mar 06, 2011 10:02 pm

Re: Tyhmät kysymykset (I/2011)

Post 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 ^^
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (I/2011)

Post 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
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2011)

Post 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
Hene
Active Member
Posts: 122
Joined: Wed Apr 22, 2009 8:13 pm

Re: Tyhmät kysymykset (I/2011)

Post 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
"Baby," I said. "I'm a genius but nobody knows it but me."
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post 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.
Potiro
Newcomer
Posts: 7
Joined: Tue Mar 08, 2011 8:28 am

Re: Tyhmät kysymykset (I/2011)

Post 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? :?: :?: :?:
DJ-Filbe
Devoted Member
Posts: 854
Joined: Sat Feb 20, 2010 2:18 pm

Re: Tyhmät kysymykset (I/2011)

Post 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).
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Tyhmät kysymykset (I/2011)

Post 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.
Potiro
Newcomer
Posts: 7
Joined: Tue Mar 08, 2011 8:28 am

Re: Tyhmät kysymykset (I/2011)

Post by Potiro »

Voisiko jompikumpi antaa koodiesimerkin??? :?: :?: :?: :?: :?: :?: :?: :?: :?:
Tai kuka tahansa
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset (I/2011)

Post 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()
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
Potiro
Newcomer
Posts: 7
Joined: Tue Mar 08, 2011 8:28 am

Re: Tyhmät kysymykset (I/2011)

Post by Potiro »

Kiitos tuosta!
Potiro
Newcomer
Posts: 7
Joined: Tue Mar 08, 2011 8:28 am

Re: Tyhmät kysymykset (I/2011)

Post by Potiro »

Miten saan auton silleen et se ei käänny paikallaan?
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2011)

Post 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.
Potiro
Newcomer
Posts: 7
Joined: Tue Mar 08, 2011 8:28 am

Re: Tyhmät kysymykset (I/2011)

Post by Potiro »

Miten saan viholliset ampumaan ja liikkumaan?
User avatar
-Z-
Devoted Member
Posts: 682
Joined: Tue Aug 28, 2007 3:33 pm
Location: In ur danmaku, grazin ur bullets

Re: Tyhmät kysymykset (I/2011)

Post 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.
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time
Potiro
Newcomer
Posts: 7
Joined: Tue Mar 08, 2011 8:28 am

Re: Tyhmät kysymykset (I/2011)

Post by Potiro »

No en kyllä älynny....
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: Tyhmät kysymykset (I/2011)

Post by Viltzu »

Potiro wrote:No en kyllä älynny....
Link 1
Link 2
Link 3
Locked