CoolBasicin aloitus
CoolBasicin aloitus
Terve! Ajattelin yrittää opetella CoolBasicin käyttöä, mutta en tiedä mistä aloittaa.
Josko joku voisi kertoa yksinkertaisia koodinpätkiä, joita voisi sitten soveltaa ja tehdä jotain pientä. Tekstinpiirto on ainoa, jonka osaan tehdä...
Josko joku voisi kertoa yksinkertaisia koodinpätkiä, joita voisi sitten soveltaa ja tehdä jotain pientä. Tekstinpiirto on ainoa, jonka osaan tehdä...
Väsymys on harhaa, vain Coca Cola totta.
Re: CoolBasicin aloitus
No Terveppä terve, ja tervetuloa foorumeille ja coolbaisicin käyttäjäksi
Ensimmäisenä suosittelisin tutustumaan coolbasicin oppitunteihin, jotka löytyvät suoraan editorista.
Toisena kannattaa selailla manuaalia, se on yllättävän pätevä, kun törmää ongelmiin, ja muutoinkin hyödyllinen koodaillessa
Ja myös täältä foorumeilta löytyy myös paljon kaikkea hyödyllistä aloittelijoille, käytä hakua..
Ensimmäisenä suosittelisin tutustumaan coolbasicin oppitunteihin, jotka löytyvät suoraan editorista.
Toisena kannattaa selailla manuaalia, se on yllättävän pätevä, kun törmää ongelmiin, ja muutoinkin hyödyllinen koodaillessa
Ja myös täältä foorumeilta löytyy myös paljon kaikkea hyödyllistä aloittelijoille, käytä hakua..
Re: CoolBasicin aloitus
Selvä. Rupean selailemaan vähän oppaita. Onnistun piirtämään tekstejä eri paikkoihin, mutta nyt pyrin saamaan tehtyä taustavärin vaihdon
Väsymys on harhaa, vain Coca Cola totta.
Re: CoolBasicin aloitus
Tuossa joskus tekemäni räiskintäpelin pohja. Ehkä siitä on apua muutaman ongelman kanssa, esim. vihollisten ja panosten luonti\tyypit, energiat+muutamia perusteita.
viewtopic.php?f=12&t=1050
viewtopic.php?f=12&t=1050
Sumu Games: Sam, Ur eye!
Re: CoolBasicin aloitus
^ Kiitos, mutta ensin ehkä aloitan vähän helpommasta =D
Väsymys on harhaa, vain Coca Cola totta.
Re: CoolBasicin aloitus
Niin ja komento-oppaassa löytyy (lähes) jokaisen komennon kohdalta esimerkkit,
joita kannattaa myös kokeilla, niin oppii eri komentojen käyttötarkoitukset..
joita kannattaa myös kokeilla, niin oppii eri komentojen käyttötarkoitukset..
Re: CoolBasicin aloitus
No, jos haluat tehdä heti jonkun pelin, niin tee ne objecteilla. Suosittelen katsomaan esimerkkiä
Esim. (Huom. Tämä on hyvin yksinkertainen vihollisen väistely peli)
Esim. (Huom. Tämä on hyvin yksinkertainen vihollisen väistely peli)
Code: Select all
' 'by' 11v Tämä on helpompaa kuin luulisi =)
' 'Lue kaikki ohjetekstit tästä!'
' Eli tämä on yksinkertainen peli, et saa osua viholliseen
' joka seuraa sinua
' Ensin ladataan 'objectit'
' Sen jälkeen aloitetaan silmukka
' Heti silmukassa ensimmäisenä on 'gosub'
' Se hyppää kohtaan 'Liikkuminen'
' Siellä on liikumiskomennot
' Sieltä palataan takaisin silmukkaan 'return' käskyllä
' Sen jälkeen tuu komentoja jotka tekee viholliselle
' perjaatteelisen älyn
' sen jälkeen katsotaan osuuko se sinuun
' jos osuu luodaan raportti joka, kertoo pelaajalle että
' 'hävisit'
'Scan = Näppäinkoodit
ukko = LoadObject("Media\guy.bmp",72)
'Tehtiin 'ukko' niminen 'objecti'. Jolla on (72 'kääntyvyyssuuntaa')
vihu = LoadObject("Media\ukkeli2.bmp",72)
'Tehtiin 'vihu' niminen 'objecti'. Jolla on (72 'kääntyvyyssuuntaa')
PositionObject vihu, 100, 100
'Siirtää 'vihun' viistostiylöspäin
'' (Huom. objecteilla on erillainen kordinaatisto)
Repeat
' Aloitetaan pääsilmukka, (Repeat silmukoita voi olla monia)
Gosub Liikkuminen
' Hyppää ohjelman kohtaan : 'Liikkuminen:'
' voisit laittaa liikkumis komennot tähänkin
PointObject vihu, ukko
' Kääntää 'vihun' 'ukko' kohden
' Löydät tämän komennon 'ohjekirjasta / '
' 'komennot / objectit'
MoveObject vihu, 1
If ObjectsOverlap(vihu, ukko)
' Jos 'vihu ' ja ' ukko' on päälekkäin
' Löydät tämänkin komenon 'ohjekirjasta / '
' 'komennot / objectit'
MakeError "Hävisit"
' Luo keinotekoisen 'errorin' Jossa lukee 'hävisit'
' ('HUOM. Ohjelma sulkeutuu heti sen jälkeen)
EndIf
' Lopetttaa 'if' lauseen
DrawScreen
' 'Tärkein komento ilman sitä kuvaa ei olisi'
' Kokeile 'poistaa' se. 'Sen jälkeen' kokoile laittaa sen perään 'off'
Forever
' lopetetaan pääsilmukka
Liikkuminen:
' Tämä on se 'gosub'
' 'gosub' hyppää johonkin ohjelman kohtaan ja palaa takaisin
' 'return' kohdassa
If KeyDown(200)
'Jos 'up' painike ('scan 200') = pohjassa
MoveObject ukko, 5
'Liikutaa 'ukko' eteenpäinpäin (')
EndIf
'Lopettaa 'if' lauseen
If KeyDown(208)
'Jos 'down' painike ('scan 208') = pohjassa
MoveObject ukko, -5
'Liikutaa 'ukkoa' taaksepäinpäin
EndIf
'Lopettaa 'if' lauseen
If KeyDown(205)
'Jos 'right' painike ('Scan 205') = pohjassa
TurnObject ukko, -5
'Kääntää 'ukkoa' oikeallepäin
EndIf
'Lopettaa 'if' lauseen
If KeyDown(203)
'Jos 'left' painike ('Scan 203') = pohjassa
TurnObject ukko, 5
'Kääntää 'ukkoa' vasemallepäin
EndIf
'Lopettaa 'if' lauseen
Return
' Palaa takaisin 'pääsilmukkaan
EDIT:
Peli näyttää pitkältä, koska siinä on sinulle tarkoitettuja ohjeita noin 60%-80%
Black city peleistä parhain
Re: CoolBasicin aloitus
Aijaij aika huonon näköinen esimerkki, Goto/Gosub ja MakeError loppu, huonoimpia tapoja11v wrote:No, jos haluat tehdä heti jonkun pelin, niin tee ne objecteilla. Suosittelen katsomaan esimerkkiä
Esim. (Huom. Tämä on hyvin yksinkertainen vihollisen väistely peli)Code: Select all
' 'by' 11v Tämä on helpompaa kuin luulisi =) ' 'Lue kaikki ohjetekstit tästä!' ' Eli tämä on yksinkertainen peli, et saa osua viholliseen ' joka seuraa sinua ' Ensin ladataan 'objectit' ' Sen jälkeen aloitetaan silmukka ' Heti silmukassa ensimmäisenä on 'gosub' ' Se hyppää kohtaan 'Liikkuminen' ' Siellä on liikumiskomennot ' Sieltä palataan takaisin silmukkaan 'return' käskyllä ' Sen jälkeen tuu komentoja jotka tekee viholliselle ' perjaatteelisen älyn ' sen jälkeen katsotaan osuuko se sinuun ' jos osuu luodaan raportti joka, kertoo pelaajalle että ' 'hävisit' 'Scan = Näppäinkoodit ukko = LoadObject("Media\guy.bmp",72) 'Tehtiin 'ukko' niminen 'objecti'. Jolla on (72 'kääntyvyyssuuntaa') vihu = LoadObject("Media\ukkeli2.bmp",72) 'Tehtiin 'vihu' niminen 'objecti'. Jolla on (72 'kääntyvyyssuuntaa') PositionObject vihu, 100, 100 'Siirtää 'vihun' viistostiylöspäin '' (Huom. objecteilla on erillainen kordinaatisto) Repeat ' Aloitetaan pääsilmukka, (Repeat silmukoita voi olla monia) Gosub Liikkuminen ' Hyppää ohjelman kohtaan : 'Liikkuminen:' ' voisit laittaa liikkumis komennot tähänkin PointObject vihu, ukko ' Kääntää 'vihun' 'ukko' kohden ' Löydät tämän komennon 'ohjekirjasta / ' ' 'komennot / objectit' MoveObject vihu, 1 If ObjectsOverlap(vihu, ukko) ' Jos 'vihu ' ja ' ukko' on päälekkäin ' Löydät tämänkin komenon 'ohjekirjasta / ' ' 'komennot / objectit' MakeError "Hävisit" ' Luo keinotekoisen 'errorin' Jossa lukee 'hävisit' ' ('HUOM. Ohjelma sulkeutuu heti sen jälkeen) EndIf ' Lopetttaa 'if' lauseen DrawScreen ' 'Tärkein komento ilman sitä kuvaa ei olisi' ' Kokeile 'poistaa' se. 'Sen jälkeen' kokoile laittaa sen perään 'off' Forever ' lopetetaan pääsilmukka Liikkuminen: ' Tämä on se 'gosub' ' 'gosub' hyppää johonkin ohjelman kohtaan ja palaa takaisin ' 'return' kohdassa If KeyDown(200) 'Jos 'up' painike ('scan 200') = pohjassa MoveObject ukko, 5 'Liikutaa 'ukko' eteenpäinpäin (') EndIf 'Lopettaa 'if' lauseen If KeyDown(208) 'Jos 'down' painike ('scan 208') = pohjassa MoveObject ukko, -5 'Liikutaa 'ukkoa' taaksepäinpäin EndIf 'Lopettaa 'if' lauseen If KeyDown(205) 'Jos 'right' painike ('Scan 205') = pohjassa TurnObject ukko, -5 'Kääntää 'ukkoa' oikeallepäin EndIf 'Lopettaa 'if' lauseen If KeyDown(203) 'Jos 'left' painike ('Scan 203') = pohjassa TurnObject ukko, 5 'Kääntää 'ukkoa' vasemallepäin EndIf 'Lopettaa 'if' lauseen Return ' Palaa takaisin 'pääsilmukkaan
EDIT:Peli näyttää pitkältä, koska siinä on sinulle tarkoitettuja ohjeita noin 60%-80%
Sitten vielä päänsärkyä aiheutti 'objectit' ja kaikki muut heittomerkit!
Kannattee sitten selata manuaalista muitakin kuin niitä tummennettuja kohtia, jotka on kuitenkin tärkeimmästä päästä
Re: CoolBasicin aloitus
No minun mielestäni tuo oli oikeastaan aika hyväkin esimerkki. Mitä nyt, siitä puuttui sisennykset ja puhuttiin juuri objecteista vaikka ne on objekteja, ei se silti laatua paljoa vähennä. Gosubit on nopeampia kuin funktiot, ja koska Gosub ei sekavoita koodia läheskään yhtä paljon kuin Goto (koska Gosubista palataan aina Return-käskyllä) ei sen käyttökään ole huonoa harjoitusta.axu wrote:Aijaij aika huonon näköinen esimerkki, Goto/Gosub ja MakeError loppu, huonoimpia tapoja
Sitten vielä päänsärkyä aiheutti 'objectit' ja kaikki muut heittomerkit!
Kannattee sitten selata manuaalista muitakin kuin niitä tummennettuja kohtia, jotka on kuitenkin tärkeimmästä päästä
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
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: CoolBasicin aloitus
En tiennytkään, että funktiot ovat hitaampia kuin gosubit, eli onko goto kaikkein nopein tapa hypätä koodissa(jos luuppeja ja ehtolauseita ei lasketa)?VesQ wrote:No minun mielestäni tuo oli oikeastaan aika hyväkin esimerkki. Mitä nyt, siitä puuttui sisennykset ja puhuttiin juuri objecteista vaikka ne on objekteja, ei se silti laatua paljoa vähennä. Gosubit on nopeampia kuin funktiot, ja koska Gosub ei sekavoita koodia läheskään yhtä paljon kuin Goto (koska Gosubista palataan aina Return-käskyllä) ei sen käyttökään ole huonoa harjoitusta.axu wrote:Aijaij aika huonon näköinen esimerkki, Goto/Gosub ja MakeError loppu, huonoimpia tapoja
Sitten vielä päänsärkyä aiheutti 'objectit' ja kaikki muut heittomerkit!
Kannattee sitten selata manuaalista muitakin kuin niitä tummennettuja kohtia, jotka on kuitenkin tärkeimmästä päästä
- kaneli2000
- Guru
- Posts: 1059
- Joined: Mon Mar 17, 2008 2:40 pm
- Location: Lempäälä
Re: CoolBasicin aloitus
No, aloittelijana kävisin ensimmäiseksi kaikki tutoriaalit huolella ja ajatuksella läpi, ja sitten alkaisin vain koodaamaan. CoolBasicissa parasta palaa eli manuaalia hyödynnetään vähän eri tavalla kuin ihan vaan lukemalla, eli aina kun tulee joku bugi vastaan, luet manuaalista mitä tehdä.
Jos manuaalia vain lukee ja lukee ja lukee, ei opi mitään: parhaiten opit kantapään kautta.
Niin ja myös täällä foorumilla kannattaa katsella esimerkkiosiota.
Jos manuaalia vain lukee ja lukee ja lukee, ei opi mitään: parhaiten opit kantapään kautta.
Niin ja myös täällä foorumilla kannattaa katsella esimerkkiosiota.
I see the rainbow rising
Re: CoolBasicin aloitus
Tämmöinen perussetti, jolla voi lähteä liikkeelle:
1. Lue tutoriaalit, F8, ja käy niitä läpi huolellisesti, kokeile muokata niitä ja sen sellaista.
2. Sitten koodaamaan, ensin lähtdetään helpoista ja sitten siirrytään vaikeisiin:
- Jonkin näköinen tekstipeli on aina hyvä ensimäiseksi, näin tutustut parhaiten erilaisiin lausekkeisiin.
- Ruvetaan menemään haastavampaan, tee peliisi alkuvalikko, eli tee siihen nappulat, tällä harjoitetaan, joko kuvia tai piirtokomenotja.
- Sitten kunnon peleihin, esim. Pong-klooni(vai mikä se ny oli) on loppujen lopuksi aika helppo. Tosin Cos ja Sin tekevät tästä vähän haastavamman, aloitelijalle
- Nyt voitkin siirtyä niihin tehtäviin, noiden jälkeen pitäisi koko B-lohko jo mennä. Ehkä...
- Sitten voitkin tutkia vähän enemmän manuaalia, kokeile kaikkea mitä löydät, älä ujostele järjestelmän, muistin, ja partikkeleiden kanssa vaikka ne eivät kyllä olekkaan kovin helppoja aloitelijoille.(DLL on minullekkin vielä vähän uutta XD)
- Sitten voitkin siirtyä meikäläisten arkeen, ekana perus putkiräiskintä, sitten vaikka joku cool ninja tasohyppely jne. sitten jotain puzzlea, joutuu koodailessakin joskus miettimään. Ja viimeisenä tulee kysymys, se vaikein: "Rakas, koodataanko yhdessä MMORPG"
- No joo, tämän jälkeen voit koodailla kaikennäköistä mitä huvittaa, tosin tämän voisi sanoa jokaisen kohdan jälkeen.
3. Tiedän, kun olet puolitoistavuotta koodaillut ja kaikki ideat mennyt, niin menee sinne Efektit-topikkiin ja pistää sinne jotain tylsiä tekeleitään...
1. Lue tutoriaalit, F8, ja käy niitä läpi huolellisesti, kokeile muokata niitä ja sen sellaista.
2. Sitten koodaamaan, ensin lähtdetään helpoista ja sitten siirrytään vaikeisiin:
- Jonkin näköinen tekstipeli on aina hyvä ensimäiseksi, näin tutustut parhaiten erilaisiin lausekkeisiin.
- Ruvetaan menemään haastavampaan, tee peliisi alkuvalikko, eli tee siihen nappulat, tällä harjoitetaan, joko kuvia tai piirtokomenotja.
- Sitten kunnon peleihin, esim. Pong-klooni(vai mikä se ny oli) on loppujen lopuksi aika helppo. Tosin Cos ja Sin tekevät tästä vähän haastavamman, aloitelijalle
- Nyt voitkin siirtyä niihin tehtäviin, noiden jälkeen pitäisi koko B-lohko jo mennä. Ehkä...
- Sitten voitkin tutkia vähän enemmän manuaalia, kokeile kaikkea mitä löydät, älä ujostele järjestelmän, muistin, ja partikkeleiden kanssa vaikka ne eivät kyllä olekkaan kovin helppoja aloitelijoille.(DLL on minullekkin vielä vähän uutta XD)
- Sitten voitkin siirtyä meikäläisten arkeen, ekana perus putkiräiskintä, sitten vaikka joku cool ninja tasohyppely jne. sitten jotain puzzlea, joutuu koodailessakin joskus miettimään. Ja viimeisenä tulee kysymys, se vaikein: "Rakas, koodataanko yhdessä MMORPG"
- No joo, tämän jälkeen voit koodailla kaikennäköistä mitä huvittaa, tosin tämän voisi sanoa jokaisen kohdan jälkeen.
3. Tiedän, kun olet puolitoistavuotta koodaillut ja kaikki ideat mennyt, niin menee sinne Efektit-topikkiin ja pistää sinne jotain tylsiä tekeleitään...
Re: CoolBasicin aloitus
Äläkä ikinä luovuta jos ei joku aluksi onnistu. "luovuttaminen on nynnyille."
Solar Eclipse
We're in a simulation, and God is trying to debug us.
Re: CoolBasicin aloitus
Jos lenkit ja ehdot rajataan pois, niin jäljelle taitavat jäädä vain funktiot, gotot ja gosubit. Includella tietysti voi ainakin "hypätä" koodista pois ja tulla sitten takaisin. Sääli vain, ettei CB anna käyttää Includea useaan kertaan samalle tiedostolle.axu wrote: En tiennytkään, että funktiot ovat hitaampia kuin gosubit, eli onko goto kaikkein nopein tapa hypätä koodissa(jos luuppeja ja ehtolauseita ei lasketa)?
Btw, tuli jokin aika sitten kirjoitettua testi eri lenkkien nopeudesta. Sisäänrakennettujen lenkkien lisäksi tein myös lenkit Gotolla ja funktiolla. Mielenkiintoisimpia seikkoja ovat mielestäni se, että For ja While ovat yhtä nopeita, mutta Repeat on näitä noin 1/3 nopeampi. Gotolla toteutettu lenkki taas suorituu suunnilleen samassa ajassa Whilen ja Forin kanssa, mikä ei ole ollenkaan huono suoritus. Funktiolla toteutettu lenkki (eli oikeastaan rekursio) puolestaan osoittaa vääjäämättä funktiokutsujen hitauden. Testikoodi:
Code: Select all
Const CYCLES = 1000000
tfor = Timer()
For i = 1 To CYCLES
Next i
time_for = Timer()-tfor
trepeat = Timer()
i=0
Repeat
i+1
Until i = CYCLES
time_repeat = Timer()-trepeat
twhile = Timer()
i=0
While (i<CYCLES)
i+1
Wend
time_while = Timer()-twhile
tgoto = Timer()
i = 0
GotoLoop:
i+1
If i < CYCLES Then Goto GotoLoop
time_goto = Timer()-tgoto
tfunction = Timer()
func(CYCLES)
time_function = Timer()-tfunction
Function func(i)
If i > 0 Then func(i-1)
EndFunction
MakeError "For: "+time_for+Chr(13)+"Repeat: "+time_repeat+Chr(13)+"While: "+time_while+Chr(13)+"Goto: "+time_goto+Chr(13)+"Function: "+time_function
Re: CoolBasicin aloitus
Rekursio ei oikeastaan ole mitään sukua loopeille. funktio kutsuu itseään jolloin sen muuttujat tallennetaan pinoon joka "kierroksella" Tein kokeeksi Jaren rekursio funktiota vastaavan gosub aliohjelman:
Code: Select all
Const CYCLES = 100000
tfunction = Timer()
func(CYCLES)
tfunction = Timer()-tfunction
tgosub = Timer()
param_i = CYCLES
Gosub SUB_func
tgosub = Timer()-tgosub
MakeError "Recursion:"+Chr(13)+"Function: "+tfunction+Chr(13)+"GoSub: "+tgosub
End
Function func(i)
If i > 0 Then func(i-1)
EndFunction
SUB_func:
i = param_i
If i > 0
param_i = i - 1
Gosub SUB_func
EndIf
Return
EDIT:
Ja, koska muuttujien tallettaminen pinoon pitäisi tehdä kokoelmilla, taukoilla tai muistipaloilla jätin sen tästä pois..
-On selkeästi impulsiivinen koodaaja joka...