Page 7 of 50
Re: Tyhmät kysymykset (I/2011)
Posted: Sat Mar 05, 2011 6: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 7: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 1: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 10: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 10: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:
Re: Tyhmät kysymykset (I/2011)
Posted: Mon Mar 07, 2011 1: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 5: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 5: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 2:57 pm
by Potiro
Re: Tyhmät kysymykset (I/2011)
Posted: Tue Mar 08, 2011 3:11 pm
by DJ-Filbe
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 3:23 pm
by Latexi95
DJ-Filbe wrote:
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 4:06 pm
by Potiro
Re: Tyhmät kysymykset (I/2011)
Posted: Tue Mar 08, 2011 4: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 7:49 am
by Potiro
Kiitos tuosta!
Re: Tyhmät kysymykset (I/2011)
Posted: Wed Mar 09, 2011 8: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 8: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 8:45 am
by Potiro
Miten saan viholliset ampumaan ja liikkumaan?
Re: Tyhmät kysymykset (I/2011)
Posted: Wed Mar 09, 2011 9: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 9:35 am
by Potiro
No en kyllä älynny....
Re: Tyhmät kysymykset (I/2011)
Posted: Wed Mar 09, 2011 10:57 am
by Viltzu
Potiro wrote:No en kyllä älynny....
Link 1
Link 2
Link 3